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

举报
京与旧铺 发表于 2022/06/29 16:28:22 2022/06/29
【摘要】 卷妹带你学数据库---5天冲刺Day2👩‍💻博客主页:京与旧铺的博客主页✨欢迎关注🖱点赞🎀收藏⭐留言✒🔮本文由京与旧铺原创,csdn首发!😘系列专栏:java学习👕参考网课:尚硅谷💻首发时间:🎞2022年6月2日🎠🎨你做三四月的事,八九月就会有答案,一起加油吧🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大...

卷妹带你学数据库---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; //员工的领导编号 = 领导的员工编号

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。