目录
一、新增 (Create)
1.1 全列插入
1.2 指定列插入
二、查询 (Retrieve)
2.1 全列查询
2.2 指定列查询
2.3 查询字段为表达式
2.4 别名
2.5 去重:distinct
2.6 排序:order by
2.7 条件查询:where
2.8 分页查询:limit
三、修改 (Update)
四、删除 (Delete)
总结
CRUD 即新增 (Create)、查询 (Retrieve)、修改 (Update)、删除 (Delete) 。
一、新增 (Create)
SQL 中使用 insert 往表中插入数据。
【表结构】
1.1 全列插入
insert into 表名 values (列1, 列2, ……)
注:全列插入中每列的数目和类型,要与表结构匹配。
1.2 指定列插入
insert into 表名 (指定列1, 指定列2, ……) values (列1字段1, 列2字段1, ……), (列1字段2, 列2字段2, ……);
【结果】
二、查询 (Retrieve)
select 进行的任意操作,获得的表都是"临时表",都不会修改数据本体;并且"临时表"的每个列类型不再受限于原始表。
2.1 全列查询
select * from 表名;
2.2 指定列查询
select 列名1,列名2,…… from 表名;
2.3 查询字段为表达式
【例子】
select id+10 from person;
注:表达式还可以是多个列之间进行预算。
2.4 别名
给查询结果中一个或多个列分别起一个别名。
select 表达式 [as] 别名 from 表名;
2.5 去重:distinct
查询结果中若存在重复元素,就只保留一个。
select distinct 列名 from 表名;
2.6 排序:order by
order by 指定一个或多个列,按照指定的排序列来进行排序。指定多个列时,根据优先级 (前面的列名优先级高) 来排序。
select …… from 表名 order by 排序列名1 [asc/desc], 排序列名2 [asc/desc];
注:ASC 为升序,DESC 为降序,默认为 ASC。
2.7 条件查询:where
指定筛选条件进行查询,最终的结果集就是满足所有条件的数据集。
比较运算符:
运算符 | 说明 |
>,>=,<,<= | 大于,大于等于,小于,小于等于 |
= | 等于,null 不安全。例如 null = null 的结果是 NULL |
<=> | 等于,null 安全。例如 null <=> null 的结果是 true |
!=,<> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0,a1] (都是闭区间),如果 a0 <= value <= a1,返回null |
IN (option,……) | 如果是 option 中的任意一个,返回 true |
IS NULL | 是 null |
IS NOT NULL | 不是 null |
LIKE | 模糊匹配。%表示任意多个 (包括0个) 任意字符;_表示任意一个字符 |
逻辑运算符:
运算符 | 说明 |
AND | 多个条件必须都为 true,结果才是 true |
OR | 任意一个条件为 true,结果为 true |
NOT | 条件为 true,结果为 false |
【注意事项】
1、where 条件可以使用表达式,但不能使用别名。
2、AND 的优先级高于 OR,在同时使用时,需要使用小括号()包裹优先执行的部分。
2.8 分页查询:limit
限制一次查询返回多少条记录。
select …… from 表名 limit 记录条数 [offset] 开始条数;
注:offset 默认开始条数为第0条。
三、修改 (Update)
update 表名 set 列名 = 值 [where] 条件;
四、删除 (Delete)
delete from 表名 [where] 条件;
总结
1、若要插入 datetime 类型数据,可以写做“ '年-月-日 时:分:秒' ”。
2、使用 now() 函数可以获取到当前时间日期。
3、select 进行的任意操作,都不会修改数据本体。
4、排序中,ASC 为升序,DESC 为降序,默认为 ASC。
5、where条件不能使用别名。
6、AND 优先级高于 OR。
7、修改与删除操作不使用 where 的话,就会对所有记录进行操作。