查询一个表的所有字段

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;

但是你会得到这样一个数据:

idnicknamegenderemailif(nickname, nickname, "没有昵称")
1null113xxx@qq.com没有昵称
2null11@qq.com没有昵称
3null02@qq.com没有昵称
4null03@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);
分类: MySQL 标签: MySQL表查询子查询条件

评论

暂无评论数据

暂无评论数据

目录