知识点回顾:
1、数据库:mysql
2、数据库下载、安装、卸载
3、数据库客户端安装(navicat 等)
4、数据库启动、关闭
5、数据库 登录、退出
6、数据库常用命名
7、数据库导入sql脚本
8、Sql语句的分类
9、基本的查询语句
10、条件查询 where
作业的讲解与分析:
1、14道题
知识点讲解:
1、如何判断数据库中null的数据?
(1) = 或 <> 不能用于判断null值
(2) is null 或 is not null 可以判断 null
2、<=> : 安全 等于
(1) 既可以判断 NULL值,也可以判断普通的数据
(2) 可读性比较差
(3) 对比学习:
① is null 或者 =
(4) 案例:
3、运算符优先级(自测)
(1) () 优先级最高
(2) 从高到低顺序
① 算术运算符
② 比较运算符
③ 特殊比较运算符
③.1. Between and、in、like、is null 等
④ 逻辑运算符
④.1. NOT
④.2. AND
④.3. OR
4、排序查询:order by
(1) 语法:
Select 查询列表 ③
From 表名 ①
【Where 筛选条件】 ②
Order by 排序列表 【asc|desc】 ④
(2) 特点:
① asc:升序(默认) desc:降序
② Order by 后面的排序列表,可以是单个字段 或 多个字段 或 别名 或 表达式 或 函数
(3) 案例:
5、函数:
(1) 类似于 java 方法
(2) 好处:
① 提高代码的重用性
② 隐藏实现细节
(3) 分类:
① 单行函数
② 分组函数(聚合函数)
6、单行函数
(1) IFNULL
(2) 单行函数:=》字符
① length
② concat
③ upper/lower
④ substr
⑤ replace
⑥ lpad/rpad (中间的长度设置是包括补充后字符长度和原字符长度)
⑦ Instr
⑧ trim (字符串中间的空格去不掉)
(3) 数学函数
① round :四舍五入
② Ceil: 向上取整
③ Floor:向下取整
④ Mod: 取余
⑤ Truncate:截断
(4) 日期函数:
① Now:返回当前的系统日期+时间
② Curdate:返回当前的日期
③ Curtime:返回当前时间
④ 获取指定的 年、月、日、时、分、秒
④.1. Year
④.2. Month
④.3.等
⑤ Str_to_date: 将字符串 转化 为 日期类型
⑥ Date_format: 将日期转换为字符串
(5) 案例:(字符)
(6)
7、分组函数:
(1) 主要分类
① Sum :求和
② Avg:求平均值
③ Max:最大值
④ Min:最小值
⑤ Count:统计个数
(2) 特点:
① Sum、avg 一般处理数值型
② Max、min、count 可以处理任何类型
③ 分组函数 都会忽略null
(3) 统计个数的区分
① MYISAM存储引擎下,count(*) 效率比较高
② INNODB存储引擎下,count(1)和count(*) 效率几乎相同,比count(字段)效率高一些
(4) 案例:
8、分组查询
(1) 语法:
select 分组函数,列 4
from 表 1
【where 筛选条件】2
group by 分组的列表 3
【having 分组的筛选条件】6
【order by 子句】5
(2) 注意:
① 查询列表中,要求是分组函数和group by 后面出现的字段
(3) 分组核心关键字
① group by
①.1. 按照某个字段或某些字段进行分组
② having
②.1. 对分组之后的数据进行再次的条件筛选
(4) 特点:
(5) 案例:
9、连接查询
(1) 连接查询可以理解为 多表查询
(2) 例如:查看每个员工对应的部门名称及工资等级
(3) 连接查询是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表中获取数据。
(4) 多表查询的语法(92版)
Select 查询列表
From 表1,表2,...
Where 表关联条件 与 筛选条件1
2
3
(5) 多表查询的语法(99版)
select 查询列表
From 表1 join 表2
on 表的关联条件
where 筛选条件1
2
3
4
(6) 连接查询的分类
① 年份进行划分
①.1. SQL92
a. 比较老的语法
①.2. SQL99
a. 比较新的语法
② 根据表的连接方式进行划分:
②.1. 内连接 INNER JOIN
a. 等值连接
a.1. 使用 =
b. 非等值连接
b.a. in、between.and、not in、is null 等
c. 自连接
c.a. 自己连接自己
②.2. 外连接 OUTER JOIN
a. 左外连接(左连接)
b. 右外连接(右连接)
②.3. 全连接—
(7) 笛卡尔积现象
① 现象:表1,有m行,表2有n行,结果 m*n行
② 出现的原因:没有设置其连接条件
③ 如何避免:设置其连接条件
(8) 内连接==》等值连接
① 使用等号 设置的条件
② 案例:
(9) 内连接==》非等值连接
① 使用 in、between.and、not null、is null 等
② 案例:
(10) 内连接==》自连接
① 自己连接自己
② 案例:
总结:
1.STR_TO_DATE()函数的使用注意
-- D可换成d,Y不可换成y,m不可换成M。
SELECT
STR_TO_DATE('2020-01-06', '%Y-%m-%D');
SELECT
STR_TO_DATE('2020-01-06', '%Y-%c-%D');1
2
3
4
5
6
2.GROUP BY的执行顺序及其操控对象
执行失败可用第8大点第四小点解释:
GROUP BY后结果集字段为deptno,COUNT(1),故操控不了comm。
SELECT deptno,COUNT(1) -- 执行顺序FROM,WHERE,GROUP BY,SELECT,HAVING
FROM emp
GROUP BY deptno
HAVING comm IS NOT NULL;1
2
3
4
3.用中文给字段取别名时,使用别名不可加引号(字段而不是字符串)
SELECT
sal*12 AS '年薪'
FROM
emp
ORDER BY 年薪;1
2
3
4
5
4.经典案例:
-- 10、查询每个经理所管理的人数,经理编号,经理姓名,要求包括没有经理的人员信息
SELECT
COUNT(e1.empno),IFNULL(e1.empno,e2.empno),IFNULL(e1.ename,e2.ename)
FROM
emp e1 RIGHT JOIN emp e2 ON e1.empno=e2.mgr
GROUP BY IFNULL(e1.empno,e2.empno);1
2
3
4
5
6
解析:
文章来源: blog.csdn.net,作者:Fire king,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/m0_48333563/article/details/111562062