mysql第二天-2020.4.28
单表查询:
1.去重 distinct 单字段或多字段均可
2.条件查询:
运算优先级:算数运算符>条件运算符>逻辑运算符
逻辑运算符:not ,and,or
3.模糊查询:
like
通配符
%不定长度匹配
_一个字符
4.排序:
order by
默认 升序
asc 升序
desc 降序
注意:对两个字段以上进行排序,只有当第一个字段取值相同时,才会对第二个字段进行排序
5.限制查询结果数量:
limit 偏移量(从0开始),行数
6.分组:
group by
having  分组条件
select 后面只能跟分组字段和聚合字段,显示其他字段也可以,但如果不是和分组字段一一对应,虽然不会报错,但也没意义。
聚合函数:
count()
Max()
Min()
Avg()
Sum()
having 后可以用聚合函数,不可以用select中指定的别名,其他数据库都不行,mysql5.75版本可以用,建议不要在having后用select中指定的别名
7.多表连接
表之间的关系:
1:1
1:多
多:多
连接形式:
内连接:只有两个表中满足连接条件的数据都有才显示
inner join
左右连接:只要确定主表,左右连接都一样,满足连接条件的查询出来,同时主表中的记录也会被查出来而附表中的记录显示为空
left join
right join
全连接:满足连接条件的,以及左,右表中不满足记录的都会显示。
右反连接:右表有左表为空的显示
左反连接:左表有右表为空的显示
笛卡尔积 : 
select * from a,b; 
记录总数 a记录数*b记录数
若有限制条件,同inner join
-- 内连接
select * from t1 inner join t2 on t1.key1 = t2.key2;
select * from t1,t2 where t1.key1 = t2.key2; -- 内连接 没有主副关系 
-- 左连接
select * from t1;
select * from t2;
select * from t1 left join t2 on t1.key1=t2.key2;
-- 右连接
select * from t1;
select * from t2;
select * from t1 right join t2 on t1.key1=t2.key2;
-- 全连接 mysql 实现方式
select * from t1 left join t2 on t1.key1 = t2.key2
union 
select * from t1 right join t2 on t1.key1 = t2.key2;
-- mysql实现左反连接
select * from t1 left join t2 on t1.key1 = t2.key2
where t2.key2 is null;
-- mysql实现右反连接
select * from t1 right join t2 on t1.key1 = t2.key2
where t1.key1 is null;
维度:用来分组的字段(有序:学历,职称;无序:姓名,性别,血型)
度量:用来聚合计算的字段(数值字段)
如何选择主表:
1表作为主表可以保证维度的完整性
多表作为主表可以保证度量的准确性
没有明确表明需要保证维度完整的准确性,所以将度量值所在表作为主表
度量值通常存在于多表中,因此通常情况下可以将多表作为主表进行外连接
不同的
数据分析工具支持的表连接方式:
Oracle/sql server/Tableau/Python:内连接(inner join)、左连接(left join)、右连接(right join)、全连接(full join)
MySQL:内连接(inner join)、左连接(left join)、右连接(right join)
Power BI:内连接、左连接、右连接、全连接、左反连接、右反连接
8.合并查询                           
union 合并可以去重   
union all 合并但不能去重
9.代码执行顺序以及编写顺序:
from
where
group by
having
select
order by
limit
注意:count(*)不是所有都可以这么计算,要按实际数据情况,可通过count(字段名)