基本查询SQL笔记
查询一个表的所有字段
SELECT * FROM user;
查询了user表的所有字段。
指定字段查询
SELECT id,email FROM user;
别名
SELECT id,email AS emails FROM user;
它会将email字段名改成emails展示。
查询条件-包含
查询email中含有@
符号的数据:
SELECT * FROM user WHERE email LIKE "%@%";
查询email中含有@
符号并且id大于2的数据:
SELECT * FROM user WHERE email LIKE "%@%" AND id>2;
查询email中不含有@
符号并且id大于2的数据:
SELECT * FROM user WHERE email NOT LIKE "%@%" AND id>2;
查询条件-或
查询email中含有@
符号或者id大于2的数据:
SELECT * FROM user WHERE email LIKE "%@%" OR id>2;
查询条件-且
查询email中不含有@
符号并且id大于2的数据:
SELECT * FROM user WHERE email NOT LIKE "%@%" AND id>2;
查询条件-区间
查询id为2-4且包括2和4的数据:
SELECT * FROM user WHERE id BETWEEN 2 AND 4;
非得话可以加个NOT
关键词:
SELECT * FROM user WHERE id NOT BETWEEN 2 AND 4;
当然用且也能实现:
SELECT * FROM user WHERE id>=2 AND id<=4;
查询条件-集合
就是提供一组数据,如果查询的值存在于这组数据,类似于js数组的includes方法。
SELECT * FROM user WHERE id IN (2,3);
这样就查询了id为2和3的数据。
SELECT * FROM user WHERE id NOT IN (2,3);
这样是非2、3的数据。
查询-去重
查询email并进行去重:
SELECT DISTINCT email FROM user;
查询-null
查询nickname为空的用户数据:
SELECT * FROM user WHERE nickname IS NULL;
非空:
SELECT * FROM user WHERE nickname IS NOT NULL;
我们也可以给null的数据弄一个默认值:
SELECT *,if(nickname,nickname,"没有昵称") FROM user WHERE nickname IS NULL;
但是你会得到这样一个数据:
id | nickname | gender | if(nickname, nickname, "没有昵称") | |
---|---|---|---|---|
1 | null | 1 | 13xxx@qq.com | 没有昵称 |
2 | null | 1 | 1@qq.com | 没有昵称 |
3 | null | 0 | 2@qq.com | 没有昵称 |
4 | null | 0 | 3@qq.com | 没有昵称 |
if(nickname,nickname,"没有昵称")
成了key了,应该会有更好的办法,到时候再说。
排序
- DESC 从大到小排序;
- ASC 从小到大排序;
SELECT * FROM user ORDER BY id DESC;
排序-多重条件
假设id存在重复的情况,它不是主键可以重复,我们希望重复的id数据通过gender字段从小到大排序,等于排序中的排序。
SELECT * FROM user ORDER BY id DESC,gender DESC;
sql会根据你的书写顺序优先级进行排序,如果第一个条件就不存在重复的值,第二个条件也没什么意义。
你可以有很多排序条件字段。
区间
区间尝尝用来分页使用,取指定的数据。
SELECT * FROM user ORDER BY id DESC LIMIT 2;
id从大到小排序,取了前两条数据。
我们也可以指定起始位置:
SELECT * FROM user ORDER BY id DESC LIMIT 1,2;
第一个参数1表示从1下标开始,这个就和js的数组下标一样,limit它也是从0开始计的,1就是第一条数据之后。
第二个参数2表示取2条数据。
总的就是id从大到小排序,取第二条到第四条。假如这个id数据顺序是:4,3,2,1
,那么得到的就是3,2
。
子查询
查询一个数据要基于另一个查询结果。
比如查询一个id值最大的那个人,取它的性别数据,再通过这个性别数据查询user表。
SELECT * FROM user WHERE gender = (SELECT gender from user ORDER BY id desc LIMIT 1);
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据