实践:
1.技能框架-思维导图
2.清单-规划好时间
3.操作-习题的方式
4.文档-历史,部署,功能介绍,基本管理,原理
5.原理叙述,模拟讲课场景,录制视频
6.整理数据以及小结
要求:
- 练习题,要不看答案敲出来,三遍以上
- 文档原理,要看着图说出来
- 对历史介绍要能说出来,读三遍,回想一边
目录
[toc]
简书貌似不支持TOC目录生成
1.技能框架
2.清单-规划
4.文档
【1】文档-单独使用
(1) @@参数
【1】用来查询mysql中设定的参数-》/etc/my.cnf 中 设置的参数
select @@参数
【2】查看当前数据库的端口
select @@port;
【3】查看当前数据库中的数据目录
select @@datadir;
【4】查看server_id
select @@server_id;
【5】查看innodb_flush_log_at_trx_commit;
select @@innodb_flush_log_at_trx_commit;
【6】查询所有参数
show variables;
【7】模糊查询
show variables like '%trx%';
(2)查询函数
【1】查询当前所在的数据库
select database();
【2】查询当前时间表
select now();
【3】打印函数
select concat("hell");
(3)计算功能
select 3+5 ;
【2】文档-作用
1.用来查询数据行(记录)的内容
2.根据业务需求进行分析数据
3.业务熟悉
一般先查询表结构,看看这个业务库都有那些表,然后在看这些表里面都有那些列,以及这些表都是通过那些列进行关联的。4.熟悉步骤
1.查看库 show databases; 2.查看库有哪些表 show databaes.tables; 3.查看表中有哪些列 desc tables; 4.查看表结构 show create tables tables_name;
【3】文档-组合应用的名词解释
1. SELECT 配合 FROM 子句的使用
1.命令格式
SELECT 列.... FROM 表;
2.名词解释
select 选择那些表中的列 from 选择那些库中的表
3.使用场景
单独查询某个列的时候,常用于表中的查询
2. SELECT 配合 WHERE 子句使用
1.命令格式
SELECT 列 FROM 表 WHERE 条件
2.名词解释
1.select 选择那些表中的列 2.from 选择那些库中的表 3.where 匹配内容
3.使用场景
等值查询(列=行) 范围查询(比较符号,between...and...) 连词查询(and,or,in) 模糊查询(like...xxx%..)
3. SELECT 配合 GROUP BY + 聚合函数应用
1.命令格式
SELECT 列.... 聚合函数(列) FROM 表 WHERE 条件 group by 分组的列
2.名词解释
1.select 选择那些表中的列 2.from 选择那些库中的表 3.where 匹配内容 4.group by 分组,对所查询的列进行分组去重复
3.使用场景
平均值 AVG() 最大值 MAX() 最小值 MIN() 总和 SUM() 计数 COUNT() 列转行 GROUP_CONCAT()
4.原理
1.把要分组的列取出来,然后进行排序去重。 2.然后根据聚合函数进行计算。 3.最后进入原表中
5.注意
1.MySQL表是一对一的关系,如果分组去重后,计算出的结果,可能是一对多。 2.防止一对多的现象,请使用拼接语句
4. SELECT 配合 HAVING 应用
1.命令格式
SELECT 列.... 聚合函数(列) FROM 表 WHERE 条件 group by 分组的列. having 条件;
2.名词解释
1.select 选择那些表中的列 2.from 选择那些库中的表 3.where 匹配内容 4.group by 分组,对所查询的列进行分组去重复 5.having 对以上的结果的值,再一次进行匹配比较
3.使用场景
多用于需要对结果在次进行分析的场景,多用于group by之后。
5. SELECT 配合 ORDER BY 排序应用
1.命令格式
SELECT 列.... 聚合函数(列) FROM 表 WHERE 条件 group by 分组的列. having 条件; order by 聚合函数()/order by 聚合函数() desc;
2.名词解释
1.select 选择那些表中的列 2.from 选择那些库中的表 3.where 匹配内容 4.group by 分组,对所查询的列进行分组去重复 5.having 对以上的结果的值,再一次进行匹配比较 6.order by 对计算的结果进行排序,默认从小到大
3.使用场景
1.多用于,对查询出来的结果-计算结果,进行排序。数字默认从小到大,如果是字符,就按照ACIC编码,进行排序。 2.从大到小,需要在聚合函数后加上desc
6. SELECT 配合 LIMIT 使用
1.命令格式
SELECT 列.... 聚合函数(列) FROM 表 WHERE 条件 group by 分组的列. having 条件 order by 聚合函数()/order by 聚合函数() desc limit 数字;
2.名词解释
1.select 选择那些表中的列 2.from 选择那些库中的表 3.where 匹配内容 4.group by 分组,对所查询的列进行分组去重复 5.having 对以上的结果的值,再一次进行匹配比较 6.order by 对计算的结果进行排序,默认从小到大 7.limit 对查询的结果,进行分页显示,范围截断显示,等
3.使用场景
1.多用于对结果进行分页查看 2. 前几行:limit 6; 中间几行:limit 4,8; ---5 6 7 8 行
【4】文档-多表查询
1.命令格式
select 列 from 表1 join 表2 on 表1.列=表2.列
2.名词解释
select 列 跨表查询的列 from 表1 小表/或用作条件的列的表 join 表2 大表 on 表1.列=表2.列 相关联的列
3.使用场景
1.多用于一张表,已经满足不了需求,需要跨表显示 2.三张表以上的连接,需要一个首尾关联表。
4.查询思路
(1) 先找有关表
(2) 表之间的关联关系列
例如: A.z C.Y C.k B.z A表与B表没有直接关联关系,但是A表和C表有关联关系,C表与B表有关联关系,这个时候通过C表,去与B表建立连接关系 三表以上 A B C join A on A.Z=B.N Join C on B.n=c.o 多表查询的本质是把几张表合在一起。 多表连接,要分清一对多的关系,多对一要分组
(3)原理
1.跨表查询,其实就是把,几张表中的列,取出来,然后在整合成一张表,进行查询。 2.其实我们查询还是一张表。
(4) 建议
1.把需要的表列出来 2.找到表中列关联的点 3.把要查询的值列出来 4.无论几张表查询,都尽量把需要的表,列出来,先找到其中的关系
【5】别名
1.命令格式
表的后面接上 AS 别名
2.应用场景
多用于表名比较长的查询
3.注意
无法应用于group by 子句后,只能应用于from表的时候
【6】扩展
1.外连接
2.子查询
3.高级编程: 存储过程,函数,视图,事件,触发器,游标等.
【7】习题要求
- 命令
- 命令解读
- 解题思路
【6】习题-1-select语句练习
【1】用来查询mysql中设定的参数-》/etc/my.cnf 中 设置的参数
【2】查看当前数据库的端口
【3】查看当前数据库中的数据目录
【4】查看server_id
【5】查看innodb_flush_log_at_trx_commit;
【6】查询所有参数
【7】模糊查询
【8】查询当前所在的数据库
【9】查询当前时间表;
【10】打印函数
【11】模糊查询
7.习题-2-子句练习
1.SELECT 配合 FROM 子句的使用
(1) 查询city表中的所有数据
(2) 查询city表中 name和population列的所有值
2.SELECT 配合 WHERE 子句使用
2.1 WHERE 的等值条件查询
(1) 查询city表中,中国所有的城市信息
2.2 WHERE 的范围查询( > < >= <= != <>,between...and...)
(1) 查询人口数小于100人的城市.
(2) 查询世界上人口数量在100w到200w之间的城市
2.3 WHERE 的 连接查询(AND,OR,IN)
(1) 查询中国,人口数量大于500w的城市
(2) 查询中国和美国的所有城市信息(OR)
(3)查询中国和美国的所有城市信息(IN)
2.4 WHERE 配合 LIKE 的模糊查询
(1) 查询CH开头的国家的城市信息
3.SELECT 配合 GROUP BY + 聚合函数应用
(1) 统计每个国家的总人口数量
(2) 统计中国每个省的总人口数量
(3) 统计中国每个省的城市个数和城市名称列表
4.SELECT 配合 HAVING 应用
(1) 统计中国每个省的总人口数量
5.SELECT 配合 ORDER BY 排序应用
(1) 查询中国所有城市,并按人口从小到大(从大到小)
(2) 统计中国每个省的总人口数量,并按总人口数从大到小排序
(3) 统计中国每个省的总人口数量,并查询总人口数超过500w的信息,按总人口降序排序
6.SELECT 配合 LIMIT 使用
(1) 统计中国每个省的总人口数量,并查询总人口数超过500w的,按总人口降序排序,只显示前5名
(2) 统计中国每个省的总人口数量,并查询总人口数超过500w的,按总人口降序排序,只显示3-6名
8.习题-3-多表查询
1.city库
(1) 查询一下chengdu城市,人口数,所在的国家名,所在的大洲
(2) 查询一下chengdu城市,人口数,所在的国家名,所在的大洲
2.studuy库
(1)oldguo老师教的课程名称
(2)每位老师,所教课程的平均分.
(3)统计一下每位老师所教学生个数及学生名字
(4)统计zhang3,学习了几门课
(5)查询zhang3,学习的课程名称有哪些
(6)查询oldguo所教课程的平均分数
(7)查询所有老师所教学生不及格的信息
(8)查询oldguo所教的不及格的学生姓名
(9)每位老师所教课程的平均分,并按平均分排序
(10)查询平均成绩大于60分的同学的学号和平均成绩;
(11)查询所有同学的学号、姓名、选课数、总成绩;
(12)查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
(13)统计各位老师,所教课程的及格率
(14)查询每门课程被选修的学生数
(15)查询出只选修了一门课程的全部学生的学号和姓名
(16)查询选修课程门数超过1门的学生信息
(17)统计每门课程:优秀(85分以上),良好(70-85),一般(60-70),不及格(小于60)的学生列表
(18)查询平均成绩大于85的所有学生的学号、姓名和平均成绩