SQL查询语句语法结构和运行顺序:
语法结构:select--from--where--group by--having--order by--limit
运行顺序:from--where--group by--having--order by--limit--select
select:
在select核心语句中加distinct关键字,可以对最后显示的数据去重
在select distinct后加多个字段时,是对重复的行数进行去重
将 distinct放在第二个字段时,出现了语法错误,因为显示多个字段时distinct无法对单一字段去重,只能对这几个字段组成的行中重复的行数据去重,所以distinct本质是加在select后,而不是字段前。
where:
1.再多条件的情况下可以用in操作符
例如:select name,population from world where name in ('Sweden','Norway','Denmark')
2.查询条件是一个数值范围时,可以使用between...and...
3.模糊查询:where字句的表达式除了使用运算符来进行条件判断,还可以使用like操作符组合通配符进行模糊查询。通配符使用%、_等
4.多条件查询:使用and 或者or逻辑运算符对多个条件进行组合筛选想要的数据
order by 排序:
order by 字段名 asc|desc 规定查询出的结果集显示的顺序
order by 核心子句是可选项,使用该子句是为了对被查出的结果集,指定依据字段排序
asc 指定该字段升序排序,desc为降序排序,不写则默认为升序排序
例: order by subject in ('chemistry','physics'),subject ,winner
其中 subject in ('chemistry','physics') 代表的含义就是 出现chemistry或者physics时记为1, 因为此时这个语句时升序排序,1比0大,所以chemistry和physics会排在最后面。
Limit:
【limit【位置偏移量】,行数】显示查询结果集显示的行数
查询结果返回前n行: limit n
查询结果返回第 x+1 行开始的 n 行到 x+n 行: limit x,n
例:查询第四行到第七行 则 limit 3,4 第三行往后取4行 第三行不算
limit子句写在整段查询语句的最后一行
聚合函数&group by:
聚合函数适用于需要获取数据得汇总信息,例如某字段行数、某字段平均值、某字段中最大最小数等。
group by字段名: 规定依据那个字段分组聚合
group by核心子句是可选项,使用该子句是为了依据相同字段值分组后进行聚合运算,常和聚合函数联用
having:
having 表达式: 限定分组聚合后得查询行必须满足得条件
having 核心子句是可选项,使用该子句是为了对group by分组后得数据进行筛选
SQL运行原理:
from --where-- group by-- having--order by--limit--select
执行from语句从数据库中调取复制一份表格
执行where语句在复制得表格中筛选出符合条件的数据行
执行group by语句依据指定字段对筛选后的数据分区,将依据的字段去重分组,相当于Excel建立一个数据透视表,添加了行标签
执行having语句筛选满足条件的分组
执行order by 语句筛选后的数据进行排序
执行limit语句对排序后的数据限制显示的行
执行select语句,提取最后要显示的字段
常见函数:
数学函数:
字符串函数:
数据类型转换函数:
日期时间函数:
条件判断函数--根据满足不同条件,执行相应流程
总结: