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后面添加多个字段,即根据多个字段来进行分组,其原理是先根据第一个字段分组,然后再按第二个字段进行分组。。。依次类推。用四个字概括就是层次分组。
便于理解,可以形象化地以分家为例:
一个家族的太公太婆辈去世,留下了一份遗产,那么如果按照辈分层层均分的话,就是这样:爷爷辈有多少户家庭,就将该遗产均分给每一户爷爷辈,爷爷辈获取了该比例的遗产后,要将自己的获得的均分给儿子辈,依次类推,儿子辈又将他获得的那份均分给他的儿子们即孙子辈,其中每一辈分依次分遗产的过程就好比多字段分组。
共同学习,写下你的评论
评论加载中...
作者其他优质文章