2020-06-16
阅读量:
7576
#0607期DAY2# MySQL语法每日复盘起来!
如老师的建议,学习SQL最重要的就是学习它的语法!
那么今天继续复盘第二天的知识点吧🙌
一、DQL数据查询语言 - 单表查询(续Day1
- select 字段 from 表名 where 查询条件; -- 条件查询
- select 字段 from 表名 where 字段 is [Not] Null; -- 空值查询
- select 字段 from 表名 where 字段 [Not] like ‘通配符’; -- 模糊查询(注意!只能用于字符串类型的字段查询)
- select 字段 from 表名 order by 字段1,字段2... asc/desc; -- 查询结果排序 (默认值asc升序,desc降序)
- select 字段 from 表名 limit [偏移量],行数; -- 限制查询结果数量
- select 字段 from 表名 [Where查询条件] group by 字段l,字段2...; -- 分组查询
- select 字段 from 表名 [Where查询条件][group by 字段1,字段2...] having 字段=‘筛选条件’; -- 分组后筛选
相应知识点:
1.通配符:% 及 _ , %代表多个字符, _匹配一个字符
2.运算符

3.Limit
- Limit接受一个或两个数字参数,参数必须是一个整数常量
- 第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目
- 如果只给一个参数,表示返回记录行的最大数目
- 初始记录行的偏移量是0
4.聚合运算

5. Where vs. Having
- Where子句作用于表,Having子句作用于组
- Where条件查询的作用域是针对数据表进行筛选,而having条件查询则是分组结果进行过滤 where的计算速度更快
- Where在分组和聚合计算之前筛选行,Having在分组和聚合之后筛选分组的行,因此where字句不能包含聚合函数
6. 维度与度量
维度:用来分组的分类字段,包括无序&有序分类字段。无序=姓名、性别、血型;有序=学历、职称、舱位。不能进行加减乘除的运算。
度量:用来聚合运算的数值字段(年龄、数量、金额等)
7. Select的语句书写顺序与执行顺序

二、多表连接与查询 ***必须掌握的
1.横向连接
- select 字段 from table1 inner join table2 on t1.key1=t2.key2; 内连接
- select 字段 from table1,table2 where t1.key1=t2.key2; 笛卡尔积连接=内连接,内连接的效率更高
- select 字段 from table1 left join table2 on t1.key1=t2.key2; 左连接,table1是主表
- select 字段 from table1 right join table2 on t1.key1=t2.key2; 右连接,table2是主表
- select t1.ename,t2.ename from emp as t1 left join emp as t2 on t1.mgr=t2.empno; 自连接
2.纵向连接=联合查询
- select 字段 from table1 union select 字段 from table2; Union去重连接
- select 字段 from table1 union all select 字段 from table2; Union all不去重连接
3.全连接、左反连接、右反连接
- select 字段 from t1 left join t2 on t1.key1=t2.key2 union select * from t1 right join t2 on t1.key1=t2.key2; 全连接=左连接 Union 右连接
- select 字段 from t1 left join t2 on t1.key1=t2.key2 where t2.key2 is null; 左反连接=左连接is null值
- select 字段 from t1 right join t2 on t1.key1=t2.key2 where t1.key1 is null; 右反连接=右连接is null值
4.相关知识点:
- MySQL语法只支持3种连接方式:内连接、外连接(左右连接)
- 多表连接的结果由3个属性决定:方向性、主附关系、对应关系
- 为什么要拆分表?回答:节省存储空间,避免数据冗余
以上即今天要消化的知识点😉






推荐帖子
0条评论
0条评论
0条评论