卷妹带你学数据库---5天冲刺Day2

卷妹带你学数据库—5天冲刺Day2

在这里插入图片描述

👩‍💻博客主页:京与旧铺的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

🔮本文由京与旧铺原创,csdn首发!

😘系列专栏:java学习

👕参考网课:尚硅谷

💻首发时间:🎞2022年6月2日🎠

🎨你做三四月的事,八九月就会有答案,一起加油吧

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲
💬推荐一款模拟面试、刷题神器👉点击进入网站


图片


🛒导航小助手🎪

😂排序: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; //员工的领导编号 = 领导的员工编号

以上就是内连接中的:自连接,技巧:一张表看做两张表

以上就是内连接中的:自连接,技巧:一张表看做两张表

/ 条件不是一个等量关系,称为非等值连接。


内连接:自连接

select
a.ename as ‘员工名’, b.ename as ‘领导名’
from
emp a
join
emp b
on
a.mgr = b.empno; //员工的领导编号 = 领导的员工编号


以上就是内连接中的:自连接,技巧:一张表看做两张表

以上就是内连接中的:自连接,技巧:一张表看做两张表
![在这里插入图片描述](https://img-blog.csdnimg.cn/f3e5980f065d4a57b410eb37c52ef127.gif#pic_center)
结束语🏆🏆🏆
🔥推荐一款模拟面试、刷题神器网站
点击跳转进入网站[点击进入](https://www.nowcoder.com/exam/oj?page=1&tab=%E8%AF%AD%E6%B3%95%E7%AF%87&topicId=220&fromPut=pc_csdncpt_jyjp_java)
1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单
2、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题
3、大厂笔试真题:字节跳动、美团、百度、腾讯…
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

京与旧铺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值