SQL语法汇总 —— 表中的增删改查
SQL语法——增删改查
SELECT 查询语句(从数据库中选取数据)
FROM 范围子句(限定查询的范围)
语法:SELECT 字段 FROM 表名;
1 | SELECT * FROM table_1; #查询table_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 | SELECT * FROM table_1 ORDER BY col_1 DESC, col_2 ASC; |
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的值
1 | INSERT INTO table_1 VALUES (val_1, val_2,...); #在table_1表中插入一条记录 |
UPDATE 更新语句(更新表中记录)
SET 设置子句(设置某字段的值)
语法:UPDATE 表 SET 字段名='值';
SET一次可以设置多个字段的值,字符型数值要用单引号环绕。
1 | UPDATE table_1 SET 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
1 | UPDATE table_1 SET col_1='val_1' WHERE col_2='val_2'; |
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的记录
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 | SELECT * FROM table_1 WHERE col_1='val_1' AND col_2='val_2'; |
LIKE & RLIKE 模糊匹配操作符(用于对值的模糊匹配)
LIKE语法:... WHERE 字段 LIKE '通配符条件';
RLIKE语法:...WHERE 字段 RLIKE '正则表达式';
LIKE、RLIKE用于WHERE子句中。
1 | SELECT * FROM table_1 WHERE col_1 LIKE 'B%'; #查询table_1表中所有col_1字段以B开头的记录 |
通配符 与 正则表达式
通配符与LIKE一起使用,其包括:
通配符 | 描述 |
---|---|
% | 替代0个或多个字符。 |
_ | 替代1个字符。 |
正则表达式与RLIKE一起使用,例如:
正则表达式(例子) | 描述 |
---|---|
[charlist] | 列表中任意字节开头,如:[BfG]匹配’B’或’f’或’G’。 |
[^charlist]或[!charlist] | 不在列表中的任意字节开头。 |
IN 多值指定操作符(指定多个可能的值)
语法:...WHERE 字段 IN (多个值);
IN操作符用于WHERE子句中。
1 | SELECT * FROM table_1 WHERE col_1 IN (val_1, val_2); |
BETWEEN 二选一操作符(指定两个可能的值)
语法:...WHERE 字段 BETWEEN 值1 AND 值2;
BETWEEN配合AND一起使用。
1 | SELECT * FROM table_1 WHERE col_1 BETWEEN val_1 AND val_2; |