MySQL 语法
在阅读语句语法时,应该记住以下约定
- | 符号用来指出几个选择中的一个,因此, NULL|NOT NULL 表示或者给出 NULL 或者给出 NOT NULL 。
- 包含在方括号中的关键字或子句(如[like this])是可选的。
- 既没有列出所有的 MySQL 语句,也没有列出每一条子句和选项。
SQL 执行顺序
(8)SELECT (9)DISTINCT (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2) ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
上面的序号代表 SQL 在运行时,数据库底层的先后顺序,我们可以看到: WHERE 是在 GROUP BY 之前执行的,所以 WHERE 的后面是不能使用聚合函数来进行数据过滤的,只能使用 FROM 表里的字段来进行数据过滤; HAVING 是在 GROUP BY 之后执行的,那么这些数据就都已经分过组了的,可以使用聚合函数来进行数据的分组过滤。
INSERT
INSERT 给表增加一行。
INSERT SELECT
INSERT SELECT 插入 SELECT 的结果到一个表。
DELETE
DELETE 从表中删除一行或多行。
UPDATE
UPDATE 更新表中一行或多行。
SELECT
SELECT 用于从一个或多个表(视图)中检索数据。
SELECT columnname, ...
FROM tablename, ...
[WHERE ...]
[UNION ...]
[GROUP BY ...]
[HAVING ...]
[ORDER BY ...];
CREATE TABLE
CREATE TABLE 用于创建新数据库表。为更新已经存在的表的结构, 使用 ALTER TABLE 。
CREATE TABLE tablename
(
column datatype [NULL|NOT NULL] [CONSTRAINTS],
column datatype [NULL|NOT NULL] [CONSTRAINTS],
...
);
CREATE INDEX
CREATE INDEX 用于在一个或多个列上创建索引。
CREATE PROCEDURE
CREATE PROCEDURE 用于创建存储过程。
CREATE USER
CREATE USER 用于向系统中添加新的用户账户。
CREATE VIEW
CREATE VIEW 用来创建一个或多个表上的新视图。
ALTER TABLE
ALTER TABLE 用来更新已存在表的模式。为了创建新表,应该使用 CREATE TABLE。
ALTER TABLE tablename
(
ADD column datatype [NULL|NOT NULL] [CONSTRAINTS],
CHANGE column columns datatype [NULL|NOT NULL] [CONSTRAINTS],
DROP column,
...
);
DROP
DROP 永久地删除数据库对象(表、视图、索引等)。
START TRANSACTION
START TRANSACTION 表示一个新的事务处理块的开始。
ROLLBACK
ROLLBACK 用于撤销一个事务处理块。
COMMIT
COMMIT 用来将事务处理写到数据库。
SAVEPOINT
SAVEPOINT 为使用 ROLLBACK 语句设立保留点。