Mysql笔记一:简单查询中那些不起眼的用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YaoDeBiAn/article/details/79976051

1.带LIKE的字符匹配查询(模糊查询)

该用法原理为:

a.百分号通配符“%”,匹配任意长度的字符串,包括零字符(零个字符),这就好比js正则表达式中的*号,是同样的道理。

给定一张表user:


输入以下语句:

SELECT username FROM user WHERE username LIKE '%b%';    #查询用户名中含b字符的用户名列表

结果:


b.下划线通配符‘_’,一次只能匹配任意一个字符。

同样的,还是同样的表,输入以下sql语句:

SELECT username FROM user WHERE username LIKE '%b_____';    #查询用户名中含b字符为倒数第四各字符(注意这里b后面有三个下划符号)

结果和上面一样:


2.查询空值

数据表创建的时候,设计者可以指定某列中是否可以包含空值(NULL)。空值不同于0.也不同于空字符串。空值一般表示数据未知、不适用或将在以后添加数据。在select语句中使用IS NULL子句,可以查询某字段内容为空的记录。

比如:SELECT username FROM user WHERE age IS NULL;  #查询年龄为空的记录的用户名

同时与IS NULL相反的是,NOT IS NULL,他用来查询某字段不为空的记录:

SELECT username FROM user WHERE age NOT IS NULL;  #查询年龄为空的记录的用户名

3.查询结果不重复

我们在查询的过程中,比如查询用户表中年龄这一字段,重复结果是不可避免的,我们在SELECT语句中加入DISTINCT来解决重复结果:

SELECT DISTINCT age FROM user;

4.分组查询中使用WITH ROLLUP对查询结果进行统计

使用WITH ROLLUP关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录总和,即统计记录数量。


SELECT storeId,COUNT(*) FROM product GROUP BY storeId WITH ROLLUP;    #对storeId进行分组,并显示其数量

结果为:


由结果可以看到,通过GROUP BY 分组之后,在显示结果的最后面新添加了一行,该行Total列的值正好是上面所有数值之和。

5.多字段分组

所谓的多字段分组,就是在GROUP BY后面添加多个字段,即根据多个字段来进行分组,其原理是先根据第一个字段分组,然后再按第二个字段进行分组。。。依次类推。用四个字概括就是层次分组。

便于理解,可以形象化地以分家为例:

一个家族的太公太婆辈去世,留下了一份遗产,那么如果按照辈分层层均分的话,就是这样:爷爷辈有多少户家庭,就将该遗产均分给每一户爷爷辈,爷爷辈获取了该比例的遗产后,要将自己的获得的均分给儿子辈,依次类推,儿子辈又将他获得的那份均分给他的儿子们即孙子辈,其中每一辈分依次分遗产的过程就好比多字段分组。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页