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

mysql篇Day2

知识点回顾:

作业的讲解与分析:

知识点讲解:

1、如何判断数据库中null的数据?

2、<=> : 安全 等于

3、运算符优先级(自测)

4、排序查询:order by

5、函数:

6、单行函数

7、分组函数:

8、分组查询

9、连接查询

总结:

1.STR_TO_DATE()函数的使用注意

2.GROUP BY的执行顺序及其操控对象

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

4.经典案例:

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) 案例:

f2a8ab89be0a591f8bfaf06f02078ea0.png

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) 案例:

6ea1fd567067a8947abd1d01d4adb5e6.png

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) 案例:(字符)

ec7d99c688cf93def5ac3cfb223ca6e7.png

bacdca4799d9f0963b628c219438c6fc.png

(6)

7、分组函数:

(1) 主要分类

① Sum :求和

② Avg:求平均值

③ Max:最大值

④ Min:最小值

⑤ Count:统计个数

(2) 特点:

① Sum、avg 一般处理数值型

② Max、min、count 可以处理任何类型

③ 分组函数 都会忽略null

(3) 统计个数的区分

① MYISAM存储引擎下,count(*) 效率比较高

② INNODB存储引擎下,count(1)和count(*) 效率几乎相同,比count(字段)效率高一些

(4) 案例:

cbfdde50b92b608674992efe3177d040.png

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) 特点:

91f0230d2d32e3a8ba25dbcb57fe3e30.png

(5) 案例:

7f7f6bb3ea824c28e274272cd374f19d.png

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) 内连接==》等值连接

① 使用等号 设置的条件

② 案例:

3ae8f579dcbaf0d0199e5511268869b0.png

17d0117a252f0dc882cfa03ba45f746f.png

(9) 内连接==》非等值连接

① 使用 in、between.and、not null、is null 等

② 案例:

9225d9acf3af98735fe3f8e4a2045ef1.png

(10) 内连接==》自连接

① 自己连接自己

② 案例:

e08ca69bccc55c247169298606ffa671.png

总结:

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

解析:

eaec006076157cf55293f1e4878272a9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值