SQL语法汇总 —— 表中的增删改查

SQL语法——增删改查


SELECT 查询语句(从数据库中选取数据)

FROM 范围子句(限定查询的范围)

语法:SELECT 字段 FROM 表名;

1
2
SELECT * FROM table_1;      #查询table_1中所有内容
SELECT col_1 FROM table_1; #查询table_1中的col_1列

WHERE 条件子句(提出选取的条件)

语法:SELECT 字段 FROM 表 WHERE 条件;

条件 通常为字段=值
如果是文本字段,则要用单引号环绕;如果是数值字段,则不要。

1
SELECT * FROM table_1 WHERE col_1='val';  #查询table_1所有col_1列为val的内容

GRPUP BY 分组子句()

HAVING 再统计子句()

ORDER BY 排序子句(对结果集进行排序)

语法:SELECT 字段 FROM 表 ORDER BY 排序字段 排序方式;

排序字段可选多个,按照前后顺序优先排序。
排序方式可选:ASC:顺序、DESC:降序。

1
2
SELECT * FROM table_1 ORDER BY col_1 DESC, col_2 ASC;
#查询table_表所有内容,按照col_1降序排序,col_1值相同的按照col_2升序排序

LIMIT 查询数量子句(设置查询记录的条数)

语法:SELECT 字段 FROM 表 LIMIT 数量;

这个子句是MySQL中特有的,SQL Server中对应的是TOP,Oracle中对应的是ROWNUM,用法略有不同。

1
SELECT * FROM table_1 LIMIT 1000; #查询table_1表中前1000条记录的所有字段

DISTINCT去重查询子句(结果集删除重复项)

语法:SELECT DISTINCT 字段 FROM 表;

1
SELECT DISTINCT col_1 FROM table_1;	  #查询table_1表col_1列不重复的记录

INSERT 插入语句(向表中插入新记录)

INTO 指定表子句(指定插入到哪张表(以及哪些字段))

VALUES 指定值子句(指定要插入的值)

语法:INSERT INTO 表 VALUES 值;

INTO可指定插入数据的表,也可指定表和具体字段。
VALUES列出指定字段的值(若没有指定字段则要列出所有字段的值),可以一次插入多条记录。
1
2
3
INSERT INTO table_1 VALUES (val_1, val_2,...);            #在table_1表中插入一条记录
INSERT INTO table_1 VALUES (val_1,...), (val_2,...); #在table_1表中插入两条记录
INSERT INTO table_1 (col_1, col_2) VALUES (val_1, val_2); #在table_1表中插入新记录,只记录col_1,col_2的值

UPDATE 更新语句(更新表中记录)

SET 设置子句(设置某字段的值)

语法:UPDATE 表 SET 字段名='值';

SET一次可以设置多个字段的值,字符型数值要用单引号环绕。

1
2
UPDATE table_1 SET col_1='val_1', col_2='val_2';
#将table_1表中所有记录的col_1设为val_1,col_2设为val_2

WHERE 条件子句(限制更新的范围)

语法:UPDATE 表名 SET 字段名='值' WHERE 条件;

条件通常为字段名='值',字符型数值要用单引号环绕。
1
2
UPDATE table_1 SET col_1='val_1' WHERE col_2='val_2';
#将table_1表 中所有col_2的值为val_2的记录 的 col_1字段更新为val_1

DELETE 删除语句(删除表中记录)

FROM 范围子句(限定删除的范围)

语法:DELETE FROM 表;DELETE * FROM 表;

不会删除表,只会删除表中记录。(效率不及TRUNCATE TABLE)

1
DELETE FROM table_1; #删除table_1表中的所有记录

WHERE 条件子句(限定删除的条件)

语法:DELETE FROM 表 WHERE 条件;

条件通常为字段名='值',字符型数值要用单引号环绕。
1
DELETE FROM table_1 WHERE col_1='val_1'; #删除table_1表中col_1字段值为val_1的记录

操作符 (通常配合WHERE子句使用)

AND & OR 条件连接操作符(用于连接条件)

语法:条件1 AND 条件2/条件1 OR 条件2 AND OR就是字面意思

1
2
SELECT * FROM table_1 WHERE col_1='val_1' AND col_2='val_2';
查询table_1表所有col_1列为val_1且col_2列为val_2的内容

LIKE & RLIKE 模糊匹配操作符(用于对值的模糊匹配)

LIKE语法:... WHERE 字段 LIKE '通配符条件';
RLIKE语法:...WHERE 字段 RLIKE '正则表达式';

LIKE、RLIKE用于WHERE子句中。

1
2
SELECT * FROM table_1 WHERE col_1 LIKE 'B%';    #查询table_1表中所有col_1字段以B开头的记录
SELECT * FROM table_1 WHERE col_1 RLIKE '[Be]'; #查询table_1表中所有col_1字段以B或e开头的记录

通配符 与 正则表达式

通配符与LIKE一起使用,其包括:

通配符 描述
% 替代0个或多个字符。
_ 替代1个字符。

正则表达式与RLIKE一起使用,例如:

正则表达式(例子) 描述
[charlist] 列表中任意字节开头,如:[BfG]匹配’B’或’f’或’G’。
[^charlist]或[!charlist] 不在列表中的任意字节开头。

IN 多值指定操作符(指定多个可能的值)

语法:...WHERE 字段 IN (多个值);

IN操作符用于WHERE子句中。

1
2
SELECT * FROM table_1 WHERE col_1 IN (val_1, val_2);
#查询table_1表中所有col_1字段值为val_1或val_2的记录

BETWEEN 二选一操作符(指定两个可能的值)

语法:...WHERE 字段 BETWEEN 值1 AND 值2;

BETWEEN配合AND一起使用。

1
2
SELECT * FROM table_1 WHERE col_1 BETWEEN val_1 AND val_2;
#查询table_1表中所有col_1字段值为val_1或val_2的记录