SQL基本语法
表操作
创建表
CREATE TABLE table_name (column1 datatype constraint,column2 datatype constraint,column3 datatype constraint,...
);
删除表
DROP [TEMPORARY] TABLE [IF EXISTS] table_name [, table_name...];
TEMPORARY
:表示临时表,仅在当前会话有效,关闭会话后该表自动删除。
IF EXISTS
:如果表不存在,则创建,否则不创建。
修改表
ALTER TABLE table_name
ADD column_name datatype constraint;ALTER TABLE table_name
DROP COLUMN column_name;ALTER TABLE table_name
MODIFY column_name datatype constraint;
显示表结构
DESC table_name;
数据操作
插入数据
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...);
查询数据
SELECT column1, column2, column3,...
FROM table_name;
对查询列对应的字段进行算术运算并且使用 AS
给列起别名。
SELECT <column1 + column2 AS sum_column | column1 + 10 AS c1Add10, column2>
FROM table_name;
对查询的结果进行去重:DISTINCT
SELECT DISTINCT column1, column2, column3,...
FROM table_name;
对查询结果进行排序:ORDER BY
SELECT column1, column2, column3,...
FROM table_name
ORDER BY column1 [DESC | ASC] [, column2 [DESC | ASC]...];
DESC
:降序,ASC
:升序。
条件查询
SELECT column1, column2, column3,...
FROM table_name
WHERE condition;
condition
:条件表达式,可以是比较运算符、逻辑运算符、函数等:
>, >=, <, <=
:比较运算符。=
:等于,NULL不安全,例如 NULL = NULL 的结果是 NULL。<=>
:等于,NULL安全,例如 NULL <=> NULL 的结果是 TRUE(1)。!=, <>
:不等于。BETWEEN a0 AND a1
:范围匹配,[a0, a1],如果 a0 <= val <= a1,则返回 TRUE(1)。IN (option, ...)
:值匹配,如果是option中的任意一个,则返回 TRUE(1)。IS NULL
:是 NULL。IS NOT NULL
:不是 NULL。LIKE
:模糊匹配,%
表示任意多个,包括零个任意字符,_
表示任意一个字符。- 逻辑运算符:
AND
:与。OR
:或。NOT
:非。
分页查询
SELECT column1, column2, column3,...
FROM table_name
LIMIT [offset,] row_count;
offset
:偏移量,从第几行开始查询,默认为0。
row_count
:查询的行数。
更新数据
UPDATE table_name
SET column1 = value1, column2 = value2, column3 = value3,...
[WHERE condition]
[ORDER BY ...]
[LIMIT ...];
删除数据
DELETE FROM table_name
[WHERE condition]
[ORDER BY ...]
[LIMIT ...];
数据约束
NOT NULL
非空约束,字段不能为空。
字段不能为空。
CREATE TABLE table_name (column1 datatype NOT NULL,
);
UNIQUE
唯一约束,字段值必须唯一。
字段值必须唯一。
CREATE TABLE table_name (column1 datatype UNIQUE,
);
PRIMARY KEY
主键约束,字段值必须唯一并且不能为NULL。是 NOT NULL
和 UNIQUE
的组合。
字段值必须唯一并且不能为NULL。
通常给主键字段加上 AUTO_INCREMENT
属性。
CREATE TABLE table_name (column1 datatype PRIMARY KEY AUTO_INCREMENT,
);
复合主键,可以指定多个字段作为主键。
CREATE TABLE table_name (column1 datatype,column2 datatype,PRIMARY KEY (column1, column2)
);
FOREIGN KEY
外键约束,字段值必须存在于另一张表的主键值。
字段值必须存在于另一张表的主键值。
FOREIGN KEY (字段名) references 主表名(列)
CREATE TABLE table_name (column1 datatype,
);
CREATE TABLE table_name2 (column2 datatype,FOREIGN KEY (column2) references table_name(column1)
);
DEFAULT
默认约束,字段值如果没有指定,则使用默认值。
字段值如果没有指定,则使用默认值。
DEFAULT value
CREATE TABLE table_name (column1 datatype DEFAULT value,
);
CHECK
检查约束,字段值必须满足一定条件。
字段值必须满足一定条件。
CHECK (condition)
CREATE TABLE table_name (column1 datatype CHECK (column1 > 0),gender datatype CHECK (gender = 'M' or gender = 'F')
);