第四节
掌握数据库其他
高级查询的用法
大数据系列课程
学习目标
掌握in的用法
掌握模糊查询like的用法
掌握统计count()的用法
掌握分组group by的用法
掌握去重distinct的用法
掌握between的用法
掌握mysql分页、mysql常用函数
查询--in的用法
使用场景:查询的时候,条件字段的值存在于某个数据集
语法
select … from 表名 where 条件字段 in (数据集)
数据集可以是具体的某几个值:值a,b,…,n;也可以是通
过一个子查询得到的数据集。
示例
查询用户Id为1,2,3的用户信息。
select * from member where Id in(1,2,3);
拓展
not in的用法:条件字段的值不存在于某个数据集
查询用户Id不为12, 3的用户。
d6d085bbecbea2e9654c11a661dab562
模糊查询--like
使用场景:查询的时候,条件字段的值不完整的情况
语法:
%用来匹配任意长度的字符串,而且%出现的位置不同所代
表的意义不同
条件字段的值以任意字符串开头,以XX结尾的值
select <字段1,字段2...> from < 表名 > where < 条件
字段 > like ‘%XX’
条件字段的值以XX开头,以任意字符串结尾
select <字段1,字段2...> from < 表名 > where <条件
字段 > like ‘XX%’
条件字段的值包含了XX
select <字段1,字段2...> from < 表名 > where <条件
字段 > like ‘%XX%’
查询--between
使用场景:条件字段的取值处于两个数据范围内的情况
语法
select … from 表名 where 条件字段 between 数值A and 数值B; 
示例
找出用户表可用余额在100000400000的用户信息。(包含边界值)
select * from member where LeaveAmount between 100000.00 and
400000
.
00
查询--去重(distinct
使用场景:去除查询结果中的重复数据
语法
select distinct 字段名1 from 表名
示例
查询所有有投资的用户Id
select distinct MemberID from invest
分组--group by
使用场景:group by 顾名思义就是按照某一个,或者多个字段来分组,有“
聚合函数”来配合才能使用,使用时至少需要一个分组字段。某某信息来进行
分组
语法
select 查询字段,聚合函数 from 查询涉及到的表 group by 分组字段 having 
滤条件; 
语法解释:
聚合函数:对一组值执行计算并返回单一的值的函数。聚合函数经常与 SELECT
语句的 GROUP BY 子句一同使用,常见的聚合函数有:sum()count()
avg()min()max()
having:在分完组以后如果想在这个分组结果的基础上继续过滤的话就必须把
过滤条件写在having后面
请按项目分组,统计投资表中各个项目的投资次数。
select LoanId,count() from invest GROUP BY LoanId
查询--分页(limit
使用场景:取查询结果的前n
语法
select … from 表名 limit m,n;
m指的索引值是从m开始,n表示每页要取多少条。
示例
每页取十条展示。
第一页为:limit 0,10表示取索引从0开始取10条记录。
第二页为:limit 10,10 表示取索引从10开始取10条记录。
第三页为:limit 20,10 表示取索引从20开始取10条记录。
x页。,y个数据 ??   -- (x-1)*y , y
思考
若每页展示x条数据,则取第y页时,分页语句中的mn值分别为多少。
拓展
请用sqlmember表数据按照id降序排列后取前三条数据数据。
查询--常用mysql函数
数值相关函数
求字段A的最小值:min(字段A)
求字段A的最大值:max(字段A)
求字段A的平均值:avg(字段A)
求字段A的和:sum(字段A)
日期函数
获取系统当前日期时间:sysdate()
获取系统当前日期:curdate()
获取系统当前时间:curtime()
获取给定日期的年份: year(date)
获取给定日期的月份: month(date)
为指定日期增加一个时间间隔的函数:DATE_ADD(date,INTERVAL expr unit)
字符串函数
字符串拼接函数:concat(字段A,字段B),
字符串截取函数:SUBSTR(字段A, 截取开始的位置position,截取字符个数)
获取字符串长度的函数:length(字段A)
Select语句查询结构
SELECT
... 字段
FROM
... 
[WHERE]
... 关联条件
[GROUP BY]
... 分组字段
[HAVING]
... 查询条件
[ORDER BY]
... 排序字段
[LIMIT]
... 分页
谢谢!