东软大三上学期实训笔记-mysql篇Day2


20201222

知识点回顾:

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 表关联条件 与 筛选条件

(5) 多表查询的语法(99版)

select 查询列表
From 表1 join 表2
on 表的关联条件
where 筛选条件

(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');

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;

3.用中文给字段取别名时,使用别名不可加引号(字段而不是字符串)

SELECT
		sal*12 AS '年薪'
FROM
		emp
ORDER BY 年薪;

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);

解析:
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fire king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值