聚合函数:
sount:获得行数目 语法 celect count(*) from 表名
sum:获得单列的和值 语法 celect sum(列名) from 表名
avg:平均值 语法 celect avg(列名) from 表名
max:最大值 语法 celect max(列名) from 表名
min:最小值 语法 celect min(列名) from 表名
sum只有all 和 distinct 方法没有*规范
max/min 没有all distinct 和 * 规范
数据分组:
select 列A 聚合函数(聚合函数规范) from 表名 where 过滤条件 group by 列A / 使用group by 以列A 进行分组
为什么要分组:对数组统计与聚合函数相结合
HAVING(having) :
要与 group by 一起使用没有单独存在的意义
select 列A ,聚合函数(聚合函数规范) from 表名 group by 列A having 条件 / 分组后再进行过滤
where 运行在分组前 having 运行在分组后 分组后面不能跟 where 只能跟 having
技数规范 丨 含义
* 丨 计数选择的行,包括null
ALL(all) 丨 指定列非空值行,如果不带ALL和DISTINCT 这是默认的操作
DINTINCT(distinct) 丨 计算定列的所有唯一非空值行。并且去掉重复的值
SQL语句执行顺序:
①select ②from ③where ④group by ⑤order by ⑥ having
在mysql中关键字 字段 列名不敏感 但是值应该敏感 数据库中 lower 把字符转为小写 upper 转换为大写
子查询:
select columnA,(子查询) as columnB from 表名
什么是子查询:嵌套在主查询语句中的查询
sql语句 select 每次抓取一条记录,如果有相似的那么就继续抓取下一条 最后由工具显示出来
where中嵌套子查询:
select columnA from 表名 where columnB =(子查询)
ALL运算和ANY
ALL:需要满足全部
ANL:满足任意条件即可
EXISTS(exists):当子查询能查询东西才执行 不然这条语句都不会执行
相关子查询:(关联子查询 需要的时间会更长)
① 执行依赖于外部查询数据
② 外部查询返回一行,子查询就执行一次
非相关子查询:
① 独立于外部查询的子查询
② 子查询总共执行一次,执行后把值传递给外部查询
UNION(union) 组合查询(也叫联合查询) UNION ALL 会保存相同的行
select 列A,列B from 表名
UNION
select 列C,列D from 表名