DDL–数据定义语句
创建数据库/表
数据库
CREATE DATABASE crashcourse
or CREATE SCHEMA crashcourse;
表
CREATE TABLE test(column_name1 column_type1 constraints,
column_name2 column_type2 constraints);
使用数据库/表—USE
数据库
USE crashcourse;
表
USE test;
显示包含的数据库/表—SHOW
数据库
SHOW DATABASES;
表
SHOE TABLES
显示表内容
SHOW COLUMNS FROM test;
or DESC test;
删除数据库/表—DROP
数据库
DROP DATABASE crashcourse;
表
DROP TABLE test;
表操作—ALTER TABLE
增加内容
ALTER TABLE test ADD column_name column_type [FIRST|AFTER existed_column_name];
删除内容—DROP
ALTER TABLE test DROP col_name;
改变内容—MODIFY/CHANGE
不可改列名
ALTER TABLE test MODIFY column_name column_type [FIRST|AFTER existed_column_name];
可以改列名
ALTER TABLE test CHANGE old_column_name column_name column_type [FIRST|AFTER existed_column_name];
DML—数据操作语句
增—INSERT
INSERT INTO tab_name(field1,field2,...) VALUES (value1, value2,...);
删—DELETE
DELETE FROM tab_name [WHERE constrains];
(不加where删除整表!!)
改—UPDATE
UPDATE tab_name SET field_x = value_x [WHERE constrains];
查—SELECT
SELECT col_name/* FROM tab_name [WHERE constrains];
查询子语句
条件限制—WHERE
[WHERE constrains]
排序—ORDER BY
[ORDER BY 域1[DESC/ASC],域2[DESC/ASC]... ]
输出限制—LIMIT
[LIMIT 起始偏移量,显示行数]
域统计—COUNT() | MAX() | MIN() | SUM()…
可以将field的位置改为域统计值。
[COUNT(field_x)]
分组—GROUP BY
[GROUP BY field1,field2...]
组统计—WITH ROLLUP
对分组后的数据统计
分组条件限制—HAVING
对分组进行条件限制,类同WHERE,但是是对组操作。
[HAVING constrains]
拓展查询
子查询
[IN|NOT IN|=|!=|EXISTS|NOT EXISTS]
表内连接—INNER JOIN … ON
一般取两表子集
SELECT ...
FROM tab_name1 INNER JOIN tab_name2 ON constrains
[WHERE ...]
表外连接—LEFT|RIGHT OUTER JOIN … ON
一般取两表“并集”(LEFT:左表全包含;RIGTH:右表全包含)
SELECT ...
FROM tab_name1 LEFT|RIGTH OUTER JOIN tab_name2 ON constrains
[WHERE ...]
组合查询—UNION|UNION ALL
UNION排除重复的SELECT
UNION ALL包含重复的SELECT
SELECT语句1
UNION|UNION ALL
SELECT语句2
UNION|UNION ALL
...
UNION|UNION ALL
SELECT语句n(仅仅最后才能有ORDER BY)
正则表达式—LIKE|REGEXP
全字段搜索—LIKE
constrains: [域 LIKE '表达式(“%”:多字段通配符;“_”:单字段通配符)']
部分匹配搜索—REGEXP
constrains: [域 REGEXP '正则表达式']
视图—VIEW
视图用于将需要重用的复杂SELECT语句打包,每次调用视图都相当于调用对应的SELECT语句。
CREATE VIEW view_name AS
SELSET组合语句
使用视图就和使用表一样,通过from view_name使用。
储存过程—PROCEDURE
储存过程创建
将一些列操作进行打包,类似C语言里面的函数。
DELIMITER $
CREATE PROCEDURE procedure_name(IN|OUT|INOUT 参数名 参数类型)
BEGIN
一系列操作;
END;
储存过程调用—CALL
CALL procedure_name(@输出的临时变量名);
@
加在变量前面。
游标—CURSOR
游标声明—DECLARE
游标开关—OPEN|CLOSE
游标使用,移动—FETCH
使用游标要先声明,然后再打开,才能使用。声明只用声明一次,开关可以多次。一般在声明时把游标指向一个列。
...
BEGIN
DECLARE cursor_name CURSOR
FOR
SELECT cul_name FROM tab_name;
OPEN cursor_name;
FETCH cursor_name INTO variables;
CLOSE cursor_name;
END;
...
流程函数
触发器
触发器共6个,分别用于INSERT|UPDATE|DELETE的前后进行附加操作。