卷妹带你学数据库---5天冲刺Day2
【摘要】 卷妹带你学数据库---5天冲刺Day2👩💻博客主页:京与旧铺的博客主页✨欢迎关注🖱点赞🎀收藏⭐留言✒🔮本文由京与旧铺原创,csdn首发!😘系列专栏:java学习👕参考网课:尚硅谷💻首发时间:🎞2022年6月2日🎠🎨你做三四月的事,八九月就会有答案,一起加油吧🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大...
👩💻博客主页:京与旧铺的博客主页
✨欢迎关注🖱点赞🎀收藏⭐留言✒
🔮本文由京与旧铺原创,csdn首发!
😘系列专栏:java学习
👕参考网课:尚硅谷
💻首发时间:🎞2022年6月2日🎠
🎨你做三四月的事,八九月就会有答案,一起加油吧
🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦
🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲
图片
🛒导航小助手🎪
卷妹带你学数据库---5天冲刺Day2🛒导航小助手🎪😂排序:order by😋数据处理函数😃单行处理函数😄分组函数(多行处理函数)distinct连接查询外连接: 左外连接(左连接) 右外连接(右连接)
😂排序:order by
语法格式:
select
ename,sal
from
emp
order by
sal; // 默认是升序!!
指定降序: desc
指定升序: asc
以两个字段排序吗?或者说按照多个字段排序?
查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列。
select
ename,sal
from
emp
order by
sal asc, ename asc; // sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序。
将之前的关键字全部组合在一起,来看一下他们的执行顺序?
select
...
from
...
where
...
group by
...
having
...
order by
...
以上关键字的顺序不能颠倒,需要记忆。
执行顺序是什么?
1. from
2. where
3. group by
4. having
5. select
6. order by
😋数据处理函数
-
数据处理函数又被称为单行处理函数
😃单行处理函数
单行处理函数的特点:一个输入对应一个输出。
单行处理函数常见:
lower 转换小写
mysql> select lower(ename) as ename from emp;
upper 转换大写
mysql> select upper(name) as name from t_student;
substr 取子串(substr(被截取的字符串, 起始下标,截取的长度))
mysql> select substr(ename, 1, 1) as ename from emp;
concat函数进行字符串的拼接
mysql> select concat(empno,ename) from emp;
length 取长度
mysql> select length(ename) enamelength from emp;
trim 去空格
mysql> select * from emp where ename = trim(' KING');
str_to_date 将字符串转换成日期
date_format 格式化日期
format 设置千分位
case..when..then..when..then..else..end
当员工的工作岗位是MANAGER的时候,工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%,其它正常。 (注意:不修改数据库,只是将查询结果显示为工资上调)
select
ename,job, sal as oldsal,
(case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newsal
from
emp;
round 四舍五入
mysql> select round(1236.567, 0) as result from emp; //保留整数位。
mysql> select round(1236.567, 1) as result from emp; //保留1个小数
mysql> select round(1236.567, 2) as result from emp; //保留2个小数
mysql> select round(1236.567, -1) as result from emp; // 保留到十位。
rand() 生成随机数
mysql> select round(rand()*100,0) from emp; // 100以内的随机数
ifnull 可以将 null 转换成一个具体值
ifnull是空处理函数。专门处理空的。在所有数据库当中,只要有NULL参与的数学运算,最终结果就是NULL。
注意:NULL只要参与运算,最终结果一定是NULL。为了避免这个现象,需要使用ifnull函数。ifnull函数用法:ifnull(数据, 被当做哪个值)。如果“数据”为NULL的时候,把这个数据结构当做哪个值。
😄分组函数(多行处理函数)
多行处理函数特点:多个输入,对应1个输出。
count # 计数
sum # 求和
avg # 平均值
max # 最大值
min # 最小值
注意:
1. 分组函数在使用的时候必须先进行分组,然后才能用。如果你没有对数据进行分组,整张表默认为一组。
2. 分组函数自动忽略NULL,你不需要提前对NULL进行处理。
3. 分组函数中count(*)和count(具体字段)有什么区别?
count(具体字段):表示统计该字段下所有不为NULL的元素的总数。
count(*):统计表当中的总行数。(只要有一行数据count则++)
因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的。
4. 分组函数不能够直接使用在where子句中。
5. 所有的分组函数可以组合起来一起用。
distinct
把查询结果去除重复记录 distinct
注意:原表数据不会被修改,只是查询结果去重。
// distinct只能出现在所有字段的最前方。 mysql> select distinct job from emp;
// distinct出现在job,deptno两个字段之前,表示两个字段联合起来去重。 mysql> select distinct job,deptno from emp;
连接查询
多张表联合起来查询数据,被称为连接查询。
根据表连接的方式分类: 内连接: 等值连接 非等值连接 自连接
外连接: 左外连接(左连接) 右外连接(右连接)
内连接:等值连接
SQL99语法:
select
...
from
a
inner join
b
on
a和b的连接条件
where
筛选条件
###### inner可以省略(带着inner可读性更好!!!一眼就能看出来是内连接)
内连接:非等值连接
select
e.ename, e.sal, s.grade
from
emp e
join
salgrade s
on
e.sal between s.losal and s.hisal; // 条件不是一个等量关系,称为非等值连接。
内连接:自连接
select
a.ename as '员工名', b.ename as '领导名'
from
emp a
join
emp b
on
a.mgr = b.empno; //员工的领导编号 = 领导的员工编号
以上就是内连接中的:自连接,技巧:一张表看做两张表
以上就是内连接中的:自连接,技巧:一张表看做两张表
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)