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.