week06 day02(sql gropy by 、having、order by、limit、运算符、函数)

一.函数

1.group by

  • 按照某一字段进行分组, 会把该字段中值相同的归为一组, 将查询的结果 分类显示, 方便统计。
  • 如果有 WHERE 要放在 WHERE 的后面
  • 语法: select 字段 from 表名 group by 分组字段;
注意:group by 一般是配合统计函数使用的,如果没有使用统计函数,每个分组只会挑选第一个数据。例如sex = 男中,郭德纲是在第一个,所以选他
sql 复制代码
select *
from student
group by `sex`

2. count 和 with rollup

sql 复制代码
select sex, count(*)
from student 
GROUP BY sex
with rollup: 增强统计(在分组统计的基础上,再求和一次)
sql 复制代码
select sex, count(*)
from student 
GROUP BY sex
with rollup

3. Having

  • 语法: SELECT 字段 FROM 表名 HAVING 条件
  • 条件字段必须要在结果集中出现 , HAVING 可以写在 GROUP BY 的后面
临时表:临时表必须要 as 别名, 临时表可以作为数据源

因为select 在sql执行中,在where和having之后,所以你给别名age,在where或者having进行条件筛选时没有作用,创建临时表,可以有效解决这一问题

sql 复制代码
(select 
	`name`, 
	`sex`, 
	`city`,
	money,
	year(NOW()) - year(birthday) as age
from student
	)as temp
按照city分组,且选择计数大于1 的城市

这里用了 临时表, group by 分组, having 对分组后的结果进行进一步筛选

sql 复制代码
select  city as 城市,COUNT(*) as 计数
from
	(select 
	`name`, 
	`sex`, 
	`city`,
	year(NOW()) - year(birthday) as age
from student
	)as temp
where age < 30
group by city
HAVING 计数 >1

4. order by 排序(正序,倒序,随机排) (运行顺序在select 之后)

sql 复制代码
order by () asc   正序
order by () desc  倒序
order by sex,city desc  会先按照sex 降序,再按照 city降序
order by rand() 随机排序

select  city as 城市,COUNT(*) as 计数
from
	(select 
	`name`, 
	`sex`, 
	`city`,
	year(NOW()) - year(birthday) as age
from student
	)as temp
where age < 30
group by city
order by 计数 asc # 正序

5. limit 限制取出数量

sql 复制代码
select 字段 from 表名 limit m;  -- 从第 1 个到第 m 个
select 字段 from 表名 limit m, n;  -- 从第 m 个开始,往下取n 个
select 字段 from 表名 limit m offset n;  -- 跳过前 n 个, 取后面的 m 个

6. LIKE (模糊查询) regexp语法与like类似(没有? 贪婪模式)

在模糊查询中,_ 代表的是匹配一个字符串, %代表是0~多位

sql 复制代码
select * 
from student 
where `name` like "郭%"

7. ROUND(X,2) 保留几位小数

sql 复制代码
SELECT ROUND(2.333,2)

8. concat() 字符拼接

sql 复制代码
select 
CONCAT("123","abc")

-- 123abc

9. 去重 distinct()

城市有重复,看一共有哪些城市

sql 复制代码
select
count(DISTINCT city)
from student

10. group_concat()

当不使用group_concat时,结果如下图,上海后的name只有一个人名字

sql 复制代码
select city,`name`
from student
group by city
sql 复制代码
select city,GROUP_CONCAT(`name`)
from student
group by city

11. MOD(X,Y)

返回 x/y 的模

二. 运算符

1. xor 逻辑异或:

  • (TRUE,TRUE) FALSE
  • (TRUE,FALSE) TRUE
  • (FALSE,TRUE) TRUE
  • (FALSE,FALSE) FALSE

三. 日期函数

date_format
sql 复制代码
-- 1997-10-01
select DATE_FORMAT(birthday,"%Y-%m-%d") FROM STUDENT
date_add
sql 复制代码
select DATE_ADD("2019-8-8",INTERVAL 1 YEAR) from student

四. 字符串函数

相关推荐
数据库小学妹21 小时前
SQL Server数据库同步工具怎么选?6款方案对比+信创迁移避坑清单
数据库·经验分享·sqlserver·dba
不剪发的Tony老师1 天前
国产数据库之GaussDB:固若金汤
数据库·gaussdb
雨辰AI1 天前
生产级实测:SpringBoot3 + 达梦数据库接口从 200ms 优化至 20ms 完整调优指南
java·数据库·spring boot·后端·政务
凡人叶枫1 天前
Effective C++ 条款39:明智而审慎地使用 private 继承
java·数据库·c++·嵌入式开发
基德爆肝c语言1 天前
MySQL表的操作
前端·数据库·mysql
TDengine (老段)1 天前
TDengine 连接算子 — Inner/Outer/ASOF/Window Join 的实现与使用
大数据·数据库·物联网·哈希算法·时序数据库·tdengine·涛思数据
Keano Reurink1 天前
搜索API与GSC数据对比:发现数据盲区
数据库·python·数据挖掘
shushangyun_1 天前
汽车服务行业B2B平台+AI解决方案哪家专业:2026年最新测评
java·运维·网络·数据库·人工智能·汽车
大黄说说1 天前
深入理解 Go 协程 Goroutine:并发编程的核心精髓
java·数据库·python
sulikey1 天前
数据库系统概论4 - 更新与视图 期末速成课笔记
数据库·笔记·考试·期末速成·数据库系统概论