💖✨MySQL一万字深度总结,基础+进阶(一)
这是我参与 8 月更文挑战的第 2 天,活动详情查看: 8月更文挑战。
👨🎓作者:Java学术趴
💌公众号:Java学术趴
🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。
🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。
☠️每日毒鸡汤:一朵花的美丽在于它曾经凋谢过。
👋大家好!我是你们的老朋友Java学术趴,今天继续给大家分享小编精心为大家整理的一万字MySQL数据库核心知识、在接下来的几天为大家持续分享,💘关注不迷路呦!!!💘。数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。数据库是一个按数据结构来存储和管理数据的计算机软件系统。🦄
1.排序(升序,降序)
语法格式:
select
字段值1,字段值2...
from
表名
order by
字段值;
1.1 按照工资升序,找出员工名和薪资
select ename,sal from emp order by sal; (这个为默认,默认升序)
注意:默认是升序。怎么指定升序或者降序?asc表示升序,desc表示降序。
select ename,sal from emp order by sal; (默认升序)
select ename,sal from emp order by sal asc;
select ename,sal from emp order by sal desc;
1.2按照工资的降序排列,当工资相同的时候在按照名字的升序排列。
select ename,sal from emp order by sal desc,ename asc;
注意: 越靠前的字段越能起主导作用。只有当前面的字段无法完成排序的时候,才会启用后面的字段。
练手:
select ename,sal from emp order by 1;
select ename,sal from emp order by 2;
select * from emp order by 6;
1.3找出工作岗位是 SALESMAN 员工,并且要求按照薪资的降序排序
select
ename,job,sal
from
emp
where
job = 'SALESMAN'
order by
sal desc;
执行顺序 : 先执行from,在执行where,在执行select,最后在执行order by 。
select
* 3
from
tablename 1
where
条件 2
order by
... 4
order by 是最后执行的。
2.分组函数
2.1分组函数/聚合函数/多行处理函数
- count 计数
- sum 求和
- avg 平均数
- max 最大值
- min 最小值
记住: 所有的分组函数都是对“某一组”数据进行操作的。
2.2找出工资的总和?
select sum(sal) from emp;
2.3找出最高工资
select max(sal) from emp;
2.4找出最低工资
select min(sal) from emp;
2.5找出平均工资
select avg(sal) from emp;
2.6找出总人数
select count(*) from emp;
select count(ename) from emp;
分组函数一共有5个。分组函数还有另一个名字:多行处理函数。 多行处理函数的特点:输入多行,最终输出的结果是 1 行。
2.7分组函数自动忽略NULL。
select count(comm) from emp;
select sun(comm) from emp;
多此一举:不需要添加这个额外的过滤条件,分组函数自动忽略null
select sum(comm) from emp where comm is not null;
2.8找出工资高于平均工资的员工
第一步 : 找出平均工资
select avg(sal) from emp;
第二步 : 找出工资高于平均工资的员工
select ename,sal from emp where sal > (select avg(sal) from emp);
以下的错误信息:无效的使用了分组函数。
以上的错误原因:**SQL语句当中有一个语法规则,分组函数不可以直接使用在where子句当中。
因为group by 是在 where 执行之后才会执行的。
select 5
...
from 1
...
where 2
...
group by 3
...
having 4
...
order by 6
...
3.count(*) 和 count(具体某个字段) , 他们有什么区别?
-
count(*) : 不是统计某个字段中数据的个数,而是统计总记录条数。(和某个字段无关)
-
count(comm) : 表示统计comm字段中不为NULL的数据总数量。
select count(*) from emp;
select count(comm) from emp;
select count(job) from emp;
4.分组函数也可以组合起来用
select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;
今天就先分享到这里,明天继续给大家分享,关注不迷路呦,我们明天见😊。
以上项目的源代码,点击星球🌍进行免费获取 星球(Github地址)如果没有Github的小伙伴儿。可以搜索🔍微信公众号:Java学术趴,📭发送MySQL,免费给发给大家项目源码,代码是经过小编亲自测试🔧的,绝对可靠,免费拿去使用。
--------💘看完的大佬们可以关注一下小编,会一直更新小技巧,免费分享给大家呦!!!💝---------
点击🌍星球可快速进入小编的Github星球呦!!里边还有更多好玩的技术,等待大家去探索呦💪!!