精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL常用命令速查表

數據庫 MySQL
速查表,顧名思義就是為了在需要的時候方便快速查詢相關知識點。本文精心為大家整理了 MySQL 中最常使用的語句和命令,絕對是日常開發、求職面試的必備良方!

速查表,顧名思義就是為了在需要的時候方便快速查詢相關知識點。本文精心為大家整理了 MySQL 中最常使用的語句和命令,絕對是日常開發、求職面試的必備良方!

連接服務器

使用 mysql 客戶端工具連接 MySQL 服務器的命令行如下:

mysql [-h host_name] [-P port_num] [-u user_name] [-p] [-D db_name]

其中,host_name 表示服務器主機名,默認為本機;port_num 表示 MySQL 服務端口,默認為 3306;user_name 表示用戶名,默認為當前操作系統用戶;-p 提示輸入密碼;db_name 表示要連接的數據庫。例如:

[root@sqlhost ~]# mysql -u root -p
Enter password: *********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.19 MySQL Community Server - GPL


Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

查看幫助

在 mysql 提示符中輸入 help; 或者 \h 獲取使用幫助。

mysql> help


For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/


List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
notee     (\t) Don't write into outfile.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.


For server side help, type 'help contents'

使用 help contents 命令可以獲取 MySQL 服務器相關的命令參考:

mysql> help contents;
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
   Account Management
   Administration
   Components
   Compound Statements
   Contents
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Geographic Features
   Help Metadata
   Language Structure
   Plugins
   Storage Engines
   Table Maintenance
   Transactions
   User-Defined Functions
   Utility

mysql 中的 SQL 命令支持以 ;、\g 或者 \G 結束并發送到服務器。

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.19    |
+-----------+
1 row in set (0.00 sec)

查看連接

使用 show processlist 命令可以查看所有連接到服務器的進程:

mysql> show processlist;
+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
| Id | User            | Host            | db   | Command | Time   | State                  | Info             |
+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
|  4 | event_scheduler | localhost       | NULL | Daemon  | 107092 | Waiting on empty queue | NULL             |
| 23 | root            | localhost:64802 | NULL | Query   |      0 | starting               | show processlist |
+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
2 rows in set (0.00 sec)

使用 kill pid 命令殺掉指定連接進程:

mysql> kill 23;
ERROR 1317 (70100): Query execution was interrupted

其中,23 是當前連接進程的 pid,所以上面的命令斷開了當前連接。

退出連接

使用 exit;、quit; 或者 \q 命令退出 mysql 客戶端:

mysql> exit;
Bye

賬戶和權限

創建用戶

使用 CREATE USER 語句創建一個用戶:

CREATE USER [IF NOT EXISTS] user_name@host IDENTIFIED BY 'auth_string';

其中,user_name 表示用戶名;host 表示允許用戶從哪個主機連接 MySQL 服務器,如果省略(等價于 %)表示任何主機;IDENTIFIED BY 用于指定用戶的密碼。例如:

mysql> create user tony identified by 'Pswd123!';
Query OK, 0 rows affected (0.14 sec)

查看用戶

MySQL 中的用戶信息存儲在 mysql.user 系統表中:

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| tony             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

使用 user() 或者 current_user() 函數查看當前用戶:

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

修改密碼

使用 ALTER USER 語句修改用戶的密碼:

mysql> alter user tony identified by 'Pswd123@';
Query OK, 0 rows affected (0.12 sec)

鎖定/解鎖用戶

使用 ALTER USER 語句鎖定或者解鎖用戶:

mysql> alter user tony account lock;
Query OK, 0 rows affected (0.10 sec)




mysql> select user,host,account_locked from mysql.user;
+------------------+-----------+----------------+
| user             | host      | account_locked |
+------------------+-----------+----------------+
| tony             | %         | Y              |
| mysql.infoschema | localhost | Y              |
| mysql.session    | localhost | Y              |
| mysql.sys        | localhost | Y              |
| root             | localhost | N              |
+------------------+-----------+----------------+
5 rows in set (0.00 sec)




mysql> alter user tony account unlock;
Query OK, 0 rows affected (0.10 sec)

其中,account lock 表示鎖定;account unlock 表示解鎖。

用戶授權

MySQL 使用 GRANT 語句給用戶授權:

GRANT priv_type [, priv_type] ...
   ON priv_level
   TO user_name@host;

其中,priv_type 表示權限,例如查詢(SELECT)、執行(EXECUTE)、全部(ALL)權限等;priv_level 表示權限的級別,分為全局(*.*)、數據庫(db.*)、表級(db.table)權限等。以下語句為用戶 tony 授予 hrdb 數據庫中 employees 表上的增刪改查權限:

mysql> grant select,insert,update,delete 
    -> on hrdb.employees
    -> to tony;
Query OK, 0 rows affected (0.07 sec)

查看權限

使用 SHOW GRANTS [FOR user_name] 語句查看授予用戶的權限和角色:

mysql> SHOW GRANTS FOR tony;
+--------------------------------------------------------------------------+
| Grants for tony@%                                                        |
+--------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `tony`@`%`                                         |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `hrdb`.`employees` TO `tony`@`%` |
+--------------------------------------------------------------------------+
2 rows in set (0.00 sec)

如果省略 FOR user_name,返回當前用戶的權限和角色。

撤銷權限

撤銷授予用戶的權限和角色使用 REVOKE 語句:

REVOKE priv_type [, priv_type] ...
    ON priv_level
  FROM user_name@host;

其中的參數與 GRANT 語句相同。以下語句撤銷用戶 tony 對 employess 表的刪除權限:

mysql> revoke delete 
    -> on hrdb.employees
    -> from tony;
Query OK, 0 rows affected (0.01 sec)

管理角色

角色(Role)是 MySQL 8.0 引入的新功能,本質上就是一個命名的權限集合(用戶也是)。

創建角色

創建角色使用 CREATE ROLE 語句:

CREATE ROLE [IF NOT EXISTS] role_name@host;

以下語句用于創建角色 test:

mysql> create role test;
Query OK, 0 rows affected (0.04 sec)

角色授權

為角色授權和用戶授權相同,只需要把用戶名改成角色名。以下語句將數據庫 hrdb 上所有表的查看權限授予 test 角色:

mysql> grant select
    -> on hrdb.*
    -> to test;
Query OK, 0 rows affected (0.01 sec)

授予角色

為用戶授權角色與授予權限幾乎相同,以下語句 test 角色授予 tony 用戶:

mysql> grant test
    -> to tony;
Query OK, 0 rows affected (0.01 sec)


mysql> show grants for tony;
+------------------------------------------------------------------+
| Grants for tony@%                                                |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `tony`@`%`                                 |
| GRANT SELECT, INSERT, UPDATE ON `hrdb`.`employees` TO `tony`@`%` |
| GRANT `test`@`%` TO `tony`@`%`                                   |
+------------------------------------------------------------------+
3 rows in set (0.01 sec)


撤銷角色

撤銷角色與撤銷權限類似:

mysql> revoke test from tony;
Query OK, 0 rows affected (0.01 sec)

刪除角色

刪除角色使用 DROP ROLE 語句:

mysql> drop role test;
Query OK, 0 rows affected (0.00 sec)

刪除用戶

刪除用戶賬號使用 DROP USER 語句:

mysql> drop user if exists tony;
Query OK, 0 rows affected (0.01 sec)

管理數據庫

查看數據庫

使用 show databases; 命令查看當前 MySQL 服務器中所有可用的數據庫:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| ds                 |
| hrdb               |
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
| world_x            |
+--------------------+
8 rows in set (0.00 sec)

創建數據庫

使用 CREATE DATABASE 語句創建一個新的數據庫:

CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET charset_name];

其中,db_name 是數據庫的名稱;如果該數據庫已經存在,將會返回錯誤;此時如果指定了 IF NOT EXISTS 選項,不會返回錯誤。

mysql> create database testdb;
Query OK, 1 row affected (0.15 sec)


mysql> create database testdb;
ERROR 1007 (HY000): Can't create database 'testdb'; database exists
mysql> create database if not exists testdb;
Query OK, 1 row affected, 1 warning (0.05 sec)


mysql> show warnings;
+-------+------+-------------------------------------------------+
| Level | Code | Message                                         |
+-------+------+-------------------------------------------------+
| Note  | 1007 | Can't create database 'testdb'; database exists |
+-------+------+-------------------------------------------------+
1 row in set (0.00 sec)

切換數據庫

使用 USE db_name; 語句切換當前默認的數據庫:

mysql> use testdb;
Database changed

以上語句將 testdb 設置為默認數據庫。

刪除數據庫

使用 DROP DATABASE 語句刪除一個數據庫,該數據庫中的所有對象以及與該數據庫相關的數據文件也會被刪除:

DROP DATABASE [IF EXISTS] db_name;

我們將 testdb 數據庫和相關的數據文件刪除:

mysql> drop database testdb;
Query OK, 0 rows affected (0.23 sec)

管理表

創建表

MySQL 使用 CREATE TABLE 語句創建表:

CREATE TABLE [IF NOT EXISTS] table_name(
   col1 data_type column_constraint,
   col2 data_type column_constraint,
   ...,
   table_constraints
) ENGINE=storage_engine;

其中,data_type 定義字段的數據類型,常用的數據類型包括:SMALLINT、INT、BIGINT、DECIMAL、CHAR、VARCHAR、TEXT、DATE、DATETIME 等。數據庫約束包括主鍵約束(PRIMARY KEY)、外鍵約束(FOREIGN KEY)、唯一約束(UNIQUE)、非空約束(NOT NULL)、檢查約束(CHECK)以及默認值(DEFAULT)。storage_engine 指定存儲引擎,常用的存儲引擎包括 InnoDB(默認)、MyISAM、Memory 、Archive、NDB 等。

CREATE TABLE departments
    ( department_id    INTEGER NOT NULL
    , department_name  CHARACTER VARYING(30) NOT NULL
    , manager_id       INTEGER
    , location_id      INTEGER
    , CONSTRAINT dept_id_pk
                PRIMARY KEY (department_id)
    ) ;


CREATE TABLE jobs
    ( job_id         CHARACTER VARYING(10) NOT NULL
    , job_title      CHARACTER VARYING(35) NOT NULL
    , min_salary     INTEGER
    , max_salary     INTEGER
    , CONSTRAINT job_id_pk
               PRIMARY KEY(job_id)
    ) ;


CREATE TABLE employees
    ( employee_id    INTEGER NOT NULL
    , first_name     CHARACTER VARYING(20)
    , last_name      CHARACTER VARYING(25) NOT NULL
    , email          CHARACTER VARYING(25) NOT NULL
    , hire_date      DATE NOT NULL
    , job_id         CHARACTER VARYING(10) NOT NULL
    , salary         NUMERIC(8,2)
    , commission_pct NUMERIC(2,2)
    , manager_id     INTEGER
    , department_id  INTEGER
    , CONSTRAINT     emp_emp_id_pk
                     PRIMARY KEY (employee_id)
    , CONSTRAINT     emp_salary_min
                     CHECK (salary > 0) 
    , CONSTRAINT     emp_email_uk
                     UNIQUE (email)
    , CONSTRAINT     emp_dept_fk
                     FOREIGN KEY (department_id)
                      REFERENCES departments(department_id)
    , CONSTRAINT     emp_job_fk
                     FOREIGN KEY (job_id)
                      REFERENCES jobs(job_id)
    , CONSTRAINT     emp_manager_fk
                     FOREIGN KEY (manager_id)
                      REFERENCES employees(employee_id)
    ) ;

查看所有表

使用 SHOW TABLES 語句查看當前數據庫中的所有表:

mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| departments      |
| employees        |
| jobs             |
+------------------+
3 rows in set (0.01 sec)

查看表結構

MySQL 提供了查看表結構的 DESCRIBE 語句:

mysql> desc employees;
+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| employee_id    | int          | NO   | PRI | NULL    |       |
| first_name     | varchar(20)  | YES  |     | NULL    |       |
| last_name      | varchar(25)  | NO   |     | NULL    |       |
| email          | varchar(25)  | NO   | UNI | NULL    |       |
| hire_date      | date         | NO   |     | NULL    |       |
| job_id         | varchar(10)  | NO   | MUL | NULL    |       |
| salary         | decimal(8,2) | YES  |     | NULL    |       |
| commission_pct | decimal(2,2) | YES  |     | NULL    |       |
| manager_id     | int          | YES  | MUL | NULL    |       |
| department_id  | int          | YES  | MUL | NULL    |       |
+----------------+--------------+------+-----+---------+-------+
11 rows in set (0.01 sec)

另外,可以通過 SHOW CREATE TABLE 語句顯示創建表的語句:

mysql> show create table employees\G
*************************** 1. row ***************************
       Table: employees
Create Table: CREATE TABLE  employees  (
   employee_id  int NOT NULL,
   first_name  varchar(20) DEFAULT NULL,
   last_name  varchar(25) NOT NULL,
   email  varchar(25) NOT NULL,
   hire_date  date NOT NULL,
   job_id  varchar(10) NOT NULL,
   salary  decimal(8,2) DEFAULT NULL,
   commission_pct  decimal(2,2) DEFAULT NULL,
   manager_id  int DEFAULT NULL,
   department_id  int DEFAULT NULL,
  PRIMARY KEY ( employee_id ),
  UNIQUE KEY  emp_email_uk  ( email ),
  KEY  emp_dept_fk  ( department_id ),
  KEY  emp_job_fk  ( job_id ),
  KEY  emp_manager_fk  ( manager_id ),
  CONSTRAINT  emp_dept_fk  FOREIGN KEY ( department_id ) REFERENCES  departments  ( department_id ),
  CONSTRAINT  emp_job_fk  FOREIGN KEY ( job_id ) REFERENCES  jobs  ( job_id ),
  CONSTRAINT  emp_manager_fk  FOREIGN KEY ( manager_id ) REFERENCES  employees  ( employee_id ),
  CONSTRAINT  emp_salary_min  CHECK (( salary  > 0))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

增加字段

增加字段使用 ALTER TABLE ... ADD COLUMN 語句,以下命令為 employees 表增加一個字段 phone_number:

mysql> alter table employees add column phone_number varchar(20);
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

修改字段

修改字段使用 ALTER TABLE ... MODIFY  語句,以下命令為字段 phone_number 增加一個唯一約束:

mysql> alter table employees modify phone_number varchar(20) unique;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

刪除字段

刪除字段使用 ALTER TABLE ... DROP COLUMN 語句:

mysql> alter table employees drop column phone_number;
Query OK, 0 rows affected (0.18 sec)
Records: 0  Duplicates: 0  Warnings: 0

刪除表

要刪除表可以使用 DROP TABLE 語句:

mysql> drop table if exists employees, departments, jobs;
Query OK, 0 rows affected (0.09 sec)

索引與約束

創建索引

MySQL 為主鍵和唯一約束自動創建相應的索引,我們也可以創建額外的索引。創建索引的命令如下:

CREATE [UNIQUE] INDEX index_name
ON table_name(col1 ASC, col2 DESC);

查看索引

查看表中的所以可以使用 SHOW INDEXES 語句:

mysql> show indexes from departments\G
*************************** 1. row ***************************
        Table: departments
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: department_id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: 
   Index_type: BTREE
      Comment: 
Index_comment: 
      Visible: YES
   Expression: NULL
1 row in set (0.01 sec)

修改索引

修改索引支持設置索引的可見性:

ALTER INDEX index VISIBLE | INVISIBLE;

可見性是指對優化器而言,默認為可見(VISIBLE);INVISIBLE 表示不可見。

刪除索引

刪除索引使用以下命令:

DROP INDEX index_name ON table_name;

增加約束

為表增加約束可以使用 ALTER TABLE 語句:

ALTER TABLE table_name ADD CONSTRAINT symbol PRIMARY KEY(col1,...);
ALTER TABLE table_name ADD CONSTRAINT symbol UNIQUE(col1,...);
ALTER TABLE table_name ADD CONSTRAINT symbol FOREIGN KEY (col1) REFERENCES other_table(col1);
ALTER TABLE table_name ADD CONSTRAINT symbol CHECK (expr);
ALTER TABLE table_name ALTER COLUMN col_name SET DEFAULT (expr); 
ALTER TABLE table_name MODIFY COLUMN col_name data_type NOT NULL;

刪除約束

刪除約束同樣可以使用 ALTER TABLE 語句:

ALTER TABLE table_name DROP CHECK|CONSTRAINT symbol;
ALTER TABLE table_name ALTER COLUMN col_name DROP DEFAULT;
ALTER TABLE table_name MODIFY COLUMN col_name data_type NULL;

查詢語句

單表查詢

查詢單個表中的字段:

SELECT col1, col2, ... FROM t;

查詢所有字段:

SELECT * FROM t;

排除查詢結果中的重復數據:

SELECT DISTINCT col1, col2, ...
FROM t;

查詢條件

使用 WHERE 指定查詢條件:

SELECT col1, col2, ... 
FROM t
WHERE conditions;

常用的查詢條件包括:=、!=、<>、<、<=、>、>=、BETWEEN、IN、EXISTS、LIKE、AND、OR、NOT、IS [NOT] NULL 等。

模糊匹配

使用 LIKE 運算符進行簡單的字符串模式匹配:

expr LIKE pattern [ESCAPE escape_character]

其中,pattern 用于指定一個匹配模式,百分號(%)匹配任意多個字符,下劃線(_)匹配任意單個字符;escape_character 指定轉義字符

mysql> select first_name
    -> from employees
    -> where first_name like '%s_n';


+------------+
| first_name |
+------------+
| Harrison   |
| Jason      |
| Susan      |
+------------+
3 rows in set (0.01 sec)

另外, REGEXP 或者 RLIKE 運算符可以進行更強大的正則表達式匹配。

排序操作

指定排序字段的方式如下:

SELECT col1, col2, ... 
FROM t 
ORDER BY col1 ASC, col2 DESC;

限定數量

限制返回結果的數量:

SELECT col1, col2, ... 
FROM t 
ORDER BY col1 ASC, col2 DESC
LIMIT offset, rows;

分組操作

指定分組和過濾:

SELECT col1, col2, agg_func() 
FROM t
GROUP BY col1, col2 WITH ROLLUP 
HAVING conditions;

常用的聚合函數:AVG、COUNT、MIN、MAX、SUM 等。

多表連接

連接查詢用于從多個表中查詢關聯數據:

SELECT t1.col1, t2.col1, ... 
FROM table1 AS t1
[INNER | LEFT | RIGHT | CROSS] JOIN t2 
ON conditions;

子查詢

子查詢是指嵌套在其他查詢語句中的查詢:

SELECT t.col1, t.col2, ... 
FROM (SELECT ...) t ;

EXISTS 與關聯子查詢:

SELECT t1.col1, t1.col2, ...
FROM t1
WHERE EXISTS ( SELECT 1
               FROM t2
               WHERE t2.col1 = t1.col1);

集合運算

集合運算包括并集、交集和差集:

SELECT col1, col2, ...
FROM t1
UNION [ALL] | INTERSECT | MINUS
SELECT c1, c2, …
FROM t2;

UNION ALL 保留結果中的重復數據,其他運算符消除了重復結果。

通用表表達式

通用表表達式類似于派生表或者語句級別的視圖,但是可讀性和性能更好,并且支持遞歸調用。以下查詢生成 1 到 10 的數字序列:

WITH RECURSIVE cte(n) AS (
    SELECT 1 AS n -- 初始查詢
    UNION ALL
    SELECT n+1 FROM cte WHERE n < 10)  -- 遞歸查詢
SELECT * FROM cte;

DML 語句

插入數據

插入數據使用 INSERT 語句:

INSERT INTO table(col1,col2,...)
VALUES (val1,val2,...);

一次插入多條記錄:

INSERT INTO table(col1,col2,...)
VALUES (val11,val12,...), (val21,val22,...), (val31,val32,...);

插入查詢語句的結果:

INSERT INTO table(col1,col2,...)
SELECT ...;

更新數據

更新數據使用 UPDATE 語句:

UPDATE table_name
SET col1 = val1, 
    col2 = val2, 
    ...
WHERE conditions;

UPDATE 語句支持跨表更新:

UPDATE t1, t2,
[INNER JOIN | LEFT JOIN] t1 ON t1.col1 = t2.col1
SET t1.col2 = t2.col2,
    t2.c3 = expr
WHERE conditions;

刪除數據

刪除數據使用 DELETE 語句:

DELETE FROM table_name
WHERE conditions;

DELETE語句支持多表刪除:

DELETE t1, t2
FROM t1
INNER JOIN t2 ON t1.col1 = t2.col1
WHERE conditions;


DELETE t1
FROM t1
LEFT JOIN t2 ON t1.col1 = t2.col1
WHERE t2.key IS NULL;

另外,TRUNCATE TABLE 語句用于快速清除表中的全部數據:

TRUNCATE [TABLE] table_name;

合并數據

合并語句同時執行了 INSERT 和 UPDATE 操作:

INSERT INTO table(col1,col2,...)
VALUES (val1,val2,...) 
ON DUPLICATE KEY UPDATE
    col1 = val1, 
    col2 = val2, 
    …;

與此類似的操作還有 REPLACE INTO 語句:

REPLACE INTO table_name(col1, col2, ...)
VALUES (val1,val2,...);

事務控制

數據庫事務是一組相關的操作,要么全部成功,要么全部失敗。

開始事務

START TRANSACTION 語句用于開始一個事務:

START TRANSACTION;

BEGIN 或者 BEGIN WORK 的作用也一樣。

提交事務

提交事務的命令如下:

COMMIT;

回滾事務

回滾事務的命令如下:

ROLLBACK;

事務保存點

事務保存點可以用于回滾部分事務:

SAVEPOINT identifier;
ROLLBACK TO identifier;
RELEASE SAVEPOINT identifier;

視圖

創建視圖

使用以下命令創建視圖:

CREATE [OR REPLACE] VIEW view_name
AS
  select-statement
  WITH CHECK OPTION;

WITH CHECK OPTION 選項可以阻止通過視圖修改或者插入視圖范圍之外的基礎表數據。

查看所有視圖

SHOW TABLES 語句支持查看視圖:

SHOW FULL TABLES
WHERE table_type = 'VIEW';

查看視圖定義

查看視圖的定義:

SHOW CREATE VIEW view_name;

重命名視圖

重命名視圖與重命名表類似:

RENAME TABLE view_name TO new_view;

刪除視圖

刪除視圖的命令如下:

DROP VIEW [IF EXISTS] view_name;

存儲過程/函數

創建存儲過程/函數

創建存儲過程使用 CREATE PROCEDURE 語句:

DELIMITER //
CREATE PROCEDURE GetEmployeeNameById(IN pn_empid INT)
BEGIN
    SELECT first_name, last_name FROM employees
    WHERE employee_id = pn_empid;
END //
DELIMITER ;

創建函數使用 CREATE FUNCTION 語句:

DELIMITER //
CREATE FUNCTION add_numbers(p1 INT, p2 INT)
RETURNS INT
DETERMINISTIC
BEGIN
    RETURN p1 + p2;
END //
DELIMITER ;

調用存儲過程/函數

調用存儲過程使用 CALL 語句:

mysql> CALL GetEmployeeNameById(100);
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Steven     | King      |
+------------+-----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

存儲函數可以像系統函數一樣使用:

mysql> select add_numbers(1, 2);
+-------------------+
| add_numbers(1, 2) |
+-------------------+
|                 3 |
+-------------------+
1 row in set (0.00 sec)

刪除存儲過程/函數

刪除存儲過程/函數使用 DROP 語句:

mysql> drop procedure if exists GetEmployeeNameById;
Query OK, 0 rows affected (0.03 sec)




mysql> drop function if exists add_numbers;
Query OK, 0 rows affected (0.01 sec)

觸發器

觸發器是一個特殊的存儲過程,當表中的數據被修改(INSERT、UPDATE、DELETE)時自動執行。

創建觸發器

創建觸發器使用 CREATE TRIGGER 語句:

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE| DELETE }
ON table_name FOR EACH ROW
trigger_body;

對于 INSERT,可以使用NEW 變量;對于 UPDATE,可以使用 OLD 和 NEW 變量;對于 DELETE,可以使用 OLD 變量。

查看觸發器

使用以下命令查看觸發器:

SHOW TRIGGERS
[FROM | IN database_name]
[LIKE 'pattern' | WHERE condition];

刪除觸發器

刪除觸發器的語句如下:

DROP TRIGGER [IF EXISTS] trigger_name;

備份與恢復

使用 mysqldump 備份數據庫

mysqldump 是 MySQL 邏輯備份工具,用于導出創建數據庫(CREATE DATABASE)和生成數據(INSERT 語句或者文本文件)的 SQL 腳本。

使用 mysqldump 備份所有的數據庫的命令如下:

mysqldump -u user_name -p -r file_name --all-databases

其中,user_name 表示用戶名;file_name 表示備份文件名;-\-all-databases 表示備份所有的數據庫。

導出特定數據庫的命令如下:

mysqldump -u user_name -p -r file_name --databases db_name1 db_name2

其中,--databases 表示需要導出的數據庫。

mysqldump 也可以選擇導出指定的表:

mysqldump -u user_name -p -r file_name db_name table1 table2

以上命令表示導出數據庫 db_name 中的表 table1 和 table2。

使用 mysql 還原數據庫

mysql 客戶端可以用于導入備份生成的 SQL 文件:

mysql -u user_name -p < file_name
責任編輯:華軒 來源: SQL編程思想
相關推薦

2020-09-22 11:00:27

Linux命令文件

2025-01-15 13:25:47

MySQL命令數據庫

2021-04-20 09:56:58

Python 開發編程語言

2015-07-22 17:32:22

mysql常用命令

2010-05-28 18:28:51

MySQL常用命令

2023-08-31 22:45:15

Git命令效率

2010-05-25 11:40:12

MySQL 常用命令

2011-03-16 10:07:00

2014-07-25 10:55:36

Linux命令

2022-12-19 08:05:04

Python速查表知識點

2014-01-02 09:57:56

PostgreSQL命令

2011-01-19 17:00:09

Postfix常用命令

2021-01-09 16:16:40

開源軟件速查表編程語言

2011-03-31 16:09:56

Mysql數據庫

2020-09-28 15:14:31

Linux常用命令實用命令

2020-10-08 18:14:15

碼農Git命令

2010-05-17 15:41:26

2010-03-29 10:16:39

CentOS常用命令

2010-04-06 18:06:18

CentOS系統

2011-03-03 15:54:27

MySQL數據庫管理
點贊
收藏

51CTO技術棧公眾號

亚洲欧洲一区二区三区在线观看| 国产精品自拍av| 欧美视频在线观看一区二区| 国产精品一区二区三区在线| 免费中文字幕日韩| 一级片一区二区三区| 中文在线免费一区三区| 国产精品毛片久久久久久| 日本a级片电影一区二区| 性感美女一区二区三区| 欧美96在线| 色综合狠狠操| 一本一道久久a久久精品综合蜜臀| 俄罗斯精品一区二区| 国产人妻精品一区二区三区不卡| 欧美日韩国产网站| av资源网一区| 欧美亚洲成人精品| 久久久久亚洲AV成人无码国产| 欧美性受ⅹ╳╳╳黑人a性爽| 国产成人免费视频网站高清观看视频| 久久亚洲精品小早川怜子66| 激情图片中文字幕| 麻豆电影在线播放| 蜜臀av性久久久久蜜臀av麻豆| 亚洲美女视频网站| 女人另类性混交zo| 1769在线观看| 久久99精品视频| 久久精品视频网站| 九九九九九国产| 久做在线视频免费观看| 中文字幕一区二区精品区| 亚洲免费观看高清| 91麻豆精品秘密入口| www.5588.com毛片| 一区中文字幕电影| 亚洲国产综合91精品麻豆| 精品久久久久久乱码天堂| 国产香蕉视频在线| 自拍欧美一区| 欧美影视一区在线| 一区二区三区四区视频在线| 国产精品无码久久av| 欧美天天视频| 欧美性高跟鞋xxxxhd| 国产精自产拍久久久久久| 日本 欧美 国产| 欧洲大片精品免费永久看nba| 一区av在线播放| 欧美精品欧美精品| 国产一区二区视频免费观看| 欧美日韩hd| 日韩久久精品成人| 日韩爱爱小视频| 中文字幕有码在线观看| 99精品在线观看视频| 国产成人精品久久二区二区| 日韩精品一区二区亚洲av性色 | 少妇一级淫片免费放播放| 在线观看欧美日韩电影| 国产精品色婷婷| 激情视频一区二区| 亚洲综合免费视频| av不卡免费看| 久久亚洲精品中文字幕冲田杏梨| 香港三日本8a三级少妇三级99| 欧美特大特白屁股xxxx| 一区二区三区中文字幕精品精品 | 国内精品视频666| 97久久精品国产| 中文字幕在线观看二区| 成人午夜大片| 亚洲精品国久久99热| 久久国产精品99久久久久久丝袜 | 日本亚洲免费观看| 欧美激情亚洲综合一区| 欧美aaa级片| 亚洲第一福利专区| 精品国产乱码久久久久久夜甘婷婷| 99色精品视频| 手机福利小视频在线播放| 黑人一区二区| 678五月天丁香亚洲综合网| av日韩一区二区三区| 尤物在线视频| 久久久蜜桃精品| 粉嫩精品一区二区三区在线观看| 中文字幕日产av| 亚洲精品偷拍| 亚洲国产成人精品一区二区| 日韩在线不卡一区| 日韩av中字| 亚洲国产精品一区二区www在线| 在线免费观看成人| 国产精品久久久久久久久毛片| 国产精品五区| 欧美高跟鞋交xxxxxhd| 免费黄色国产视频| 国内成人自拍| 亚洲欧美国产精品专区久久| 精品少妇人妻av一区二区三区| 永久免费观看精品视频| 欧洲在线/亚洲| 久久久精品在线视频| 成人免费观看在线观看| 亚洲综合一二区| 日本三日本三级少妇三级66| eeuss影院www在线观看| 秋霞午夜鲁丝一区二区老狼| 欧美一区二区三区免费视| 久久久久久激情| 久久久久观看| 欧美zozozo| 又大又长粗又爽又黄少妇视频| 欧美a视频在线| 欧美午夜宅男影院| 波多野结衣天堂| 欧美男体视频| 日本久久一区二区| 欧美在线观看视频网站| 欧美大胆性生话| 色婷婷av久久久久久久| 99热成人精品热久久66| 亚洲综合电影| 色中色一区二区| 婷婷丁香激情网| 一区二区三区无毛| 欧美一级生活片| xxxx国产视频| 高潮按摩久久久久久av免费| 亚洲爱爱爱爱爱| 中文字幕乱码在线| 日韩福利视频一区| 亚洲视频在线观看| 亚洲综合欧美综合| 99精品视频精品精品视频| 日韩在线免费av| 国产精品久久久久久久精| 好看的亚洲午夜视频在线| 97人人爽人人喊人人模波多| 日本视频免费在线| 日韩影院免费视频| 成人激情春色网| 精品久久国产视频| 91片黄在线观看| 亚洲一区3d动漫同人无遮挡| 色网站免费在线观看| 一区二区三区国产豹纹内裤在线| 欧美成人高潮一二区在线看| 久久久久久久影视| 国产精品亲子伦对白| 佐佐木明希av| 日韩伦理在线一区| 欧美性xxxxxxxx| 欧美成人精品一区二区综合免费| 午夜欧洲一区| 精品国产自在精品国产浪潮| 精品成人久久久| 激情久久久久久久久久久久久久久久| 成人免费观看网站| 免费黄色片在线观看| 亚洲欧美日韩一区二区| 欧美一区二区三区爽大粗免费| 电影亚洲一区| 精品国产一区二区三区av性色| 91精品人妻一区二区三区| jazzjazz国产精品久久| 亚洲欧美在线磁力| www.97视频| 综合国产精品| 国产精品91免费在线| 成人免费视频国产| 国产乱色国产精品免费视频| 久久99久久精品国产| 国产二区三区在线| 91国产福利在线| 色哟哟在线观看视频| 免费短视频成人日韩| 九九热这里只有精品6| youjizz在线视频| 国产很黄免费观看久久| 欧美自拍资源在线| 青草视频在线免费直播 | 中文字幕日韩第一页| 久久综合丝袜日本网| www.成年人视频| 免费看日产一区二区三区| 怡红院精品视频| 久久久精品免费看| 日韩午夜激情| 91久久精品国产91久久性色tv| 国产视频网址在线| 天天操天天综合网| 在线观看一区二区三区四区| 亚洲一区二区| 国产久一一精品| 成人在线观看网站| 婷婷国产v国产偷v亚洲高清| 色哟哟免费视频| 欧美欧美天天天天操| 成人午夜小视频| 日韩美女网站| 欧美日韩电影在线| 久久精品日韩无码| 日本欧美一区二区在线观看| 色噜噜狠狠一区二区三区| 浪潮色综合久久天堂| 亚洲欧美日韩综合| 久久久精品视频在线| 老司机精品视频在线| 国产精品久久国产三级国电话系列| 高清全集视频免费在线| 欧美日本一道本| youjizz亚洲女人| 日韩电影在线观看网站| 日韩精品一线二线三线| 国产精品高清乱码在线观看| 亚洲人成电影网| 黄色片视频免费| 国产视频911| 亚洲一级免费观看| 色喇叭免费久久综合| 成人福利视频在线观看| 黄av在线免费观看| 欧美一区二区免费| 久久免费黄色网址| 成人h版在线观看| 国产又黄又大又粗视频| 国产aⅴ精品一区二区三区久久| 国产成人精品免高潮费视频| 成人全视频高清免费观看| 欧美羞羞免费网站| 99久久99久久精品国产| 国产成人精品影院| 欧美啪啪免费视频| 精品一区二区三区的国产在线观看| 国产精品极品尤物在线观看 | 亚洲一区观看| 日韩福利二区| 麻豆国产一区| 国产69久久精品成人| 国产youjizz在线| 91精品婷婷国产综合久久| 国产极品美女高潮无套嗷嗷叫酒店| 97精品超碰一区二区三区| 日本激情视频在线| 国产精品红桃| 日本一区二区三区视频在线观看 | 蜜臀a∨国产成人精品| 久久久一二三四| 国产精品毛片久久久| 国产成人精品亚洲精品| 成人在线网址| 日韩精品在线视频观看| 亚洲综合五月天婷婷丁香| 亚洲在线成人精品| 成年人网站免费看| 国内外成人在线| 国产精品12345| 久久一区二区中文字幕| 国内精品久久久久伊人av| 国产区在线视频| 精品国偷自产国产一区| 亚洲手机在线观看| 性久久久久久久| www.com.av| 2017欧美狠狠色| 国产成人在线综合| 一区二区三区四区五区在线| 欧美精品一区在线| 日韩精品一区二区三区免费视频| 欧美富婆性猛交| 巨大荫蒂视频欧美大片| 亚洲老头同性xxxxx| 午夜久久久久久噜噜噜噜| 欧美自拍丝袜亚洲| 超碰中文字幕在线| 亚洲一区在线播放| 小嫩苞一区二区三区| 久久精品亚洲一区二区三区浴池 | 波多野结衣在线观看视频| 亚洲一二三区在线观看| 小向美奈子av| 国产精品午夜久久| 成人性生交大免费看| 成人精品电影在线观看| 无码人妻少妇色欲av一区二区| 麻豆精品视频在线| 日韩精品一区二区三区不卡| 99国产精品| a级免费在线观看| 欧美精品国产一区二区| 免费国产成人看片在线| 91综合久久| 亚洲一区二区不卡视频| 日韩精品看片| 视频在线精品一区| 欧美日韩一二三四| 日韩福利视频| 成人同人动漫免费观看 | 91精品中文在线| av中文字幕在线观看| 中文字幕亚洲欧美日韩在线不卡| 免费在线超碰| 亚洲欧美综合精品久久成人| 青青视频在线观| 亚洲美女av网站| 免费在线观看污视频| 一本大道亚洲视频| 国产美女性感在线观看懂色av| 亚洲欧美日韩国产中文| 国产高清美女一级毛片久久| 亚洲最大在线视频| 幼a在线观看| 久久五月天综合| 天堂av在线电影| 久久久久久久久久久免费精品| av影院在线免费观看| 欧美亚洲另类在线| 亚洲www.| 国产欧美最新羞羞视频在线观看| 日本大胆在线观看| 久久久久久成人| sm久久捆绑调教精品一区| 91精品国产乱码久久久久久蜜臀 | 中文字幕免费不卡| 希岛爱理中文字幕| 亚洲国产一区二区在线播放| www.日本精品| 欧美日韩国产美| 国产av无码专区亚洲a∨毛片| 精品少妇一区二区三区在线播放 | 99re这里只有精品6| 国产乱了高清露脸对白| 国产亚洲视频系列| 黄色录像免费观看| 亚洲午夜电影在线观看| 日本高清不卡码| 在线播放一区二区三区| 免费观看黄色av| 国产午夜一区二区| 国产夫妻性生活视频| 亚洲精品一区二区三区四区高清| 五月天福利视频| 在线午夜精品自拍| 亚洲综合伊人久久大杳蕉| 欧美在线视频播放| www.久久久久爱免| 精品不卡在线| 我不卡手机影院| 91九色在线观看视频| 精品无码三级在线观看视频 | 豆花视频一区二区| 午夜一区二区三区| 亚洲日本成人| 中文字幕资源在线观看| 99精品黄色片免费大全| 久久精品在线观看视频| 午夜精品一区在线观看| 影音先锋国产资源| 亚洲福利视频二区| 日本黄色片在线观看| 欧美一乱一性一交一视频| 国产精品免费精品自在线观看| 久久久精品动漫| 欧美日韩a区| 日韩精品视频一二三| 97精品超碰一区二区三区| 五月天丁香激情| 欧美在线不卡视频| 日本韩国一区| 欧美黄色片在线观看| 国产91欧美| 茄子视频成人在线观看 | 国产精品久久久爽爽爽麻豆色哟哟| 日本熟妇成熟毛茸茸| 91精品国产黑色紧身裤美女| av福利精品| 欧美视频在线观看免费网址| 中文字幕在线日亚洲9| 亚洲成人动漫在线播放| 麻豆传媒视频在线观看| 国产91对白在线播放| 亚洲天堂av资源在线观看| 少妇特黄a一区二区三区| 国产精品毛片| 日韩av在线免费看| 91se在线| 人人澡人人澡人人看欧美| 国产精品任我爽爆在线播放| 国产又粗又大又爽的视频| 美女www一区二区| 99久久精品免费视频| 天天综合网天天综合色| 高h震动喷水双性1v1| 欧美二区乱c黑人| 日韩视频在线直播| 波多野结衣 作品| 国内精品伊人久久久|