MySQL常用操作语句
說明:文中[]以及括號內的內容為可選參數,根據實際需要來決定寫還是不寫。
MySQL數據庫默認端口是 3306
基本操作
1、查看MySQL數據庫服務器和數據庫字符集 show variables like '%char%';
2、查看MySQL數據表的字符集 show table status from 要查詢的庫 like '%要查詢的表%';
3、查看MySQL數據列的字符集 show full columns from 要查詢的表;
4、查看當前安裝的MySQL所支持的字符集 show charset;
5、創建數據庫時,設定字符集為utf8 create database 數據庫名 character set utf8;
6、查看MySQL數據庫支持的存儲引擎 show engines; 或 show variables like 'have%';
7、查看默認存儲引擎 show variables like 'storage_engine';
8、數據庫登錄 mysql -h localhost -u root -p;
9、刪除數據庫 drop database 要刪除的數據庫名;
10、創建表 CREATE TABLE 表名(字段 屬性,字段 屬性,字段 屬性);
11、查看表結構 describe 表名;
12、查看表詳細結構語句 SHOW CREATE TABLE 表名 \G;
13、修改表名 ALTER TABLE 舊表名 RENAME 新表名;
14、修改字段的數據類型 ALTER TABLE 表名 MODIFY 屬性名 數據類型;
15、修改字段名 ALTER TABLE 表名 CHANGE 舊屬性名 新屬性名 新數據類型;
16、增加字段 ALTER TABLE 表名 ADD 屬性名1 數據類型 [ 完整性約束條件 [FIRST] AFTER 屬性名2 ];
17、刪除字段 ALTER TBALE 表名 DROP 屬性名;
18、修改字段的排列位置 ALTER TABLE 表名 MODIFY 屬性名1 數據類型 FIRST|AFTER 屬性名2;
19、更改表的存儲引擎 ALTER TABLE 表名 ENGINE=存儲引擎名;
20、刪除表的外鍵約束 ALTER TABLE 表名 DROP FOREIGN KEY 外鍵別名;
21、刪除沒有被關聯的普通表 DROP TABLE 表名;
22、刪除被其他表關聯的父表
(1)先刪除有關聯表的外鍵 ALTER TABLE 有關聯的表名 DROP FOREIGN KEY 外鍵名;
(2)再刪除要刪除的表 DROP TABLE 表名;
23、創建表時,創建普通索引,在建表的時候,語句最后加入 INDEX(要建立索引的字段);
24、創建表時,創建唯一性索引,在建表的時候,語句最后加入 UNIQUE INDEX 索引名(索引字段 ASC);
25、創建表時,創建全文索引,在建表的時候,語句最后加入 FULLTEXT INDEX 索引名 (要建立索引的字段);
26、創建表時,創建單列索引,在建表的時候,語句最后加入 INDEX 索引名(要建立索引的字段);
27、創建表時,創建多列索引,在建表的時候,語句最后加入 INDEX 索引名(要建立索引的字段1,要建立索引的字段2);
28、創建表時,創建空間索引,在建表的時候,語句最后加入 SPATIAL INDEX 索引名(要建立索引的字段);
29、在已經存在的表上創建索引 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名 (屬性名 [(長度)] [ASC|DESC]);
(1)、在已經存在的表上創建唯一性索引 CREATE UNIQUE INDEX 索引名 ON 表名(要建立索引的字段);
(2)、在已經存在的表上創建全文索引 CREATE FULLTEXT INDEX 索引名 ON 表名(要建立索引的字段);
(3)、在已經存在的表上創建單列索引 CREATE INDEX 索引名 ON 表名(要建立索引的字段);
(4)、在已經存在的表上創建多列索引 CREATE INDEX 索引名 ON 表名(要建立索引的字段1,要建立索引的字段2);
(5)、在已經存在的表上創建空間索引 CREATE SPATIAL 索引名 ON 表名(要建立索引的字段);
30、在已經存在的表上修改索引 ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 (屬性名 [(長度)] [ASC|DESC]);
(1)、普通索引 ALTER TABEL 表名 ADD INDEX 索引名(要建立索引的字段);
(2)、唯一性索引 ALTER TABEL 表名 ADD UNIQUE INDEX 索引名(要建立索引的字段);
(3)、全文索引 ALTER TABLE 表名 ADD FULLTEXT INDEX 索引名(要建立索引的字段);
(4)、單列索引 ALTER TABLE 表名 ADD INDEX 索引名(要建立索引的字段);
(5)、多列索引 ALTER TABLE 表名 ADD INDEX 索引名(要建立索引的字段1,要建立索引的字段2);
(6)、空間索引 ALTER TABLE 表名 ADD SPACIAL INDEX 索引名(要建立索引的字段);
31、刪除索引 DROP INDEX 索引名 ON 表名;
32、創建視圖 CREATE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW AS SELECT 語句[WITH [CASCADED|LOCAL] CHECK OPTION];
備注:
UNDEFINED表示MYSQL將自動選擇所要的使用的算法;
MERGE選項表示將使用視圖的語句與視圖定義合并起來;
TEMPTABLE表示將視圖的結果存入臨時表,用臨時表執行語句。
CASCADED表示更新視圖時要滿足所有相關視圖表和表的條件,
LOCAL表示更新視圖時,要滿足該視圖本身的定義的條件即可。
33、在VIEW表中查看視圖詳細信息 SELECT * FROM INFORMATION_SCHEMA.VIEWS;
34、修改視圖方法一
CREATE OR REPLACE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW 視圖名 [(屬性清單)] AS SELECT 語句[WITH [CASCADED|LOCAL] CHECK OPTION];
35、修改視圖方法二
ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW 視圖名 [(屬性清單)] AS SELECT 語句[WITH [CASCADED|LOCAL] CHECK OPTION];
36、刪除視圖 DROP VIEW [IF EXISTS] 視圖名列表 [RESTRICT|CASCADE];
初級操作
1、創建觸發器 CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件 ON 表名 FOR EACH ROW 執行語句;
2、創建有多個執行語句的觸發器
DELIMITER &&
CREATE TRIGGER 觸發器名 BEFOR|AFTER 觸發事件 ON 表名 FRO EACH ROW
BEGIN
執行語句1;
執行語句2;
END
&&
DELIMITER;
3、查看觸發器信息 SHOW TRIGGERS \G
4、查詢指定觸發器信息 SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME ='觸發器名';
5、刪除觸發器 DROP TRIGGER 觸發器名;
6、查詢 SELECT 字段列表 FROM 表名和視圖列表 WHERE 條件表達式;
7、排序 SELECT 字段列表 FROM 表名和視圖列表 WHERE 條件表達式 ORDER BY 要排序的字段 ASC|DESC;
8、分組查詢 SELECT 字段列表 FROM 表名和視圖列表 GROUP BY 要分組的字段;
9、分組查詢顯示分組的所有元素 SELECT 字段列表,GROUP_CONCAT(要全部顯示的字段) FROM 表名和視圖列表 GROUP BY 要分組的字段;
10、分組字段中元素的個數 SELECT 字段列表,COUNT(要全部顯示的字段) FROM 表名和視圖列表 GROUP BY 要分組的字段;
11、分組限制輸出結果 SELECT 字段列表 FROM 表名和視圖列表 GROUP BY 要分組的字段 HAVING 條件表達式;
12、分組記錄分組個數總和 SELECT 字段列表 FROM 表名和視圖列表 GROUP BY 要分組的字段 WITH ROLLUP;
13、限制查詢結果數量 SELECT * FROM 表名和視圖列表 LIMIT 數字;
14、限制查詢結果數量,指定初始位置 SELECT * FROM 表名和視圖列表 LIMIT 起始數字,顯示的數量;
15、統計記錄條數 SELECT COUNT(*) FROM 表名和視圖列表;
16、統計某個字段數據的和 SELECT SUM(要統計的字段) FROM 表名和視圖列表;
17、統計某個字段的平均值 SELECT AVG(要統計的字段) FROM 表名和視圖列表;
18、某個字段的最大值 SELECT MAX(要統計的字段) FROM 表名和視圖列表;
19、某個字段的最小值 SELECT MIN(要統計的字段) FROM 表名和視圖列表;
20、內連接查詢 SLECT 屬性名列表 表名1,表名2 WHERE 表名1.字段名1=表名2.字段名2;
21、外接接查詢 SLECT 屬性名列表 表名1 LEFT|RIGHT|JOIN 表名2 ON 表名1.字段名1=表名2.字段名2;
22、子查詢 SELECT COUNT(*) FROM 表名和視圖列表 WHERE 字段 IN (子查詢語句);
23、合并查詢 SELECT 語句1 UNION|UNION ALL SELECT 語句2;
24、為表起別名 SELECT 字段列表 FROM 表名和視圖列表 別名;
25、為字段起別名 SELECT 字段列表 AS 別名 FROM 表名和視圖列表
26、使用正則表達式 SELECT 字段列表 FROM 表名和視圖列表 WHERE 字段名 REGEXP '正則表達式';
27、插入數據 INSERT INTO 表名(屬性1,屬性2,...,屬性n) VALUES(值1,值2,...,值n);
28、更新數據 UPDATE 表名 屬性名1=取值1,屬性名2=取值2,...屬性名n=取值n WHERE 條件表達式;
29、刪除數據 DELETE FROM 表名 WHERE 條件表達式;
30、創建存儲過程 CREATE PROCEDURE 存儲過程名稱 (參數列表) 存儲過程特性 SQL代碼;
例如:創建一個名為num_from_employee 的存儲過程
CREAT PROCEDURE num_from_employee(IN emp_id int,OUT count_num INT)
READS SQL DATA
BEGIN
SELECT COUNT(*) INTO count_num
FROM employee
WHERE d_id=emp_id;
END
備注:
CONTAINS SQL表示子程序包含SQL語句,但不包含讀或寫數據的語句;
NO SQL 表示子程序中不包含SQL語句;
READS SQL DATA 表示子程序中包含讀數據的語句;
MODIFIES SQL DATA 表示子程序中包含寫數據的語句。
31、創建存儲函數 CREATE FUNCTION 函數名 (參數列表) 存儲過程特性 RETURNS Type 運行的SQL代碼;
例如:創建一個名為name_from_employee 的存儲過程
CREAT FUNCTION name_from_employee(emp_id INT)
RETURNS VARCHAR(20)
BEGIN
RETURN (SELECT name
FROM employee
WHERE d_id=emp_id);
END
32、查看存儲過程和函數的狀態 SHOW PROCEDURE|FUNCTION STATUS LKE '存儲過程名稱' \G;
33、查看存儲過程和函數的定義 SHOW CREATE PROCEDURE|FUNCTION 存儲過程名稱;
34、從INFORMATION_SCHEMA.ROUTINES 表中查看存儲過程和函數的信息
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='存儲過程名稱';
35、修改存儲過程和函數 ALTER PROCEDURE|FUNCTION 存儲過程名稱 執行語句;
36、刪除存儲過程和函數 DROP PROCEDURE|FUNCTION 存儲過程名稱;
37、新建普通用戶
方法一 CREATE USER 用戶名 IDENTIFIED BY '密碼';
方法二 GRANT priv_type ON database.table TO 用戶名 IDENTIFIED BY '密碼';
38、刪除普通用戶 DROP USER 用戶名;
39、ROOT用戶修改普通用戶密碼
方法一 SET PASSWORD FOR '用戶名'@'主機名'=PASSWORD("新密碼");
方法二 UPDATE mysql.user SET Password=PASSWORD("新密碼") WHERE User="用戶名" AND Host="主機名";
40、普通用戶修改密碼 SET PASSWORD=PASSWORD('新密碼');
41、數據備份 mysqldump -u username -p dbname table1 table2 ...>Backupname.sql
42、備份多個數據庫 mysqldump -u username -p --database dbname1 dbname2 ...>BackupName.sql
43、數據還原 mysql -u root -p [dbname]<backup.sql
44、查看MySQL數據庫的性能 SHOW STATUS LIKE 'value';
45、分析查詢,查看SQL語句執行情況 EXPLAIN SELECT 語句;
[參考文獻] 黃縉華.MySQL入門很簡單[M].北京:清華大學出版社,2011.