ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL刷题简记

2021-07-14 09:32:38  阅读:247  来源: 互联网

标签:no dept 简记 limit emp MySQL sa 连接 刷题


文章目录

SQL的执行顺序:
–第一步:执行FROM
–第二步:WHERE条件过滤
–第三步:GROUP BY分组
–第四步:执行SELECT投影列(包括执行select里面的聚合函数)
–第五步:HAVING条件过滤
–第六步:执行ORDER BY 排序

limit

limit a  指选择前a条记录
limit a,b(相当于limit a offset b,效率较慢,优化的话,可以考虑用子查询) 指从第a+1条记录开始,选择b条记录

如查找employees里入职员工时间(对应属性列为hire_data)排名倒数第三的员工所有信息:

select *
from employees
order by hire_date desc
limit 2,1

order by

order by 列属性m desc/asc 把m按照降序/升序排序,应该放在筛选条件的后面

内连接

用内连接(不存在主表和附表之分,又有外连接存在)而不用from的原因是:from两个表,相当于做两个表的笛卡尔积,如果两张表都是1万条记录,笛卡尔积就是1亿条记录,而内连接是拿着主表的数据去另一个表做比较
如:
有一个全部员工的薪水表salaries简况如下:
在这里插入图片描述
有一个各个部门的领导表dept_manager简况如下:
在这里插入图片描述
请你查找各个部门当前领导的薪水详情以及其对应部门编号dept_no,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列,以上例子输出如下:
在这里插入图片描述

select sa.*,de.dept_no
from dept_manager as de 
INNER JOIN salaries as sa 
on de.emp_no = sa.emp_no AND de.to_date = sa.to_date
order by sa.emp_no asc

外连接

左连接

表1是主表,表2是附表,保留在表1中而不再表2中的悬浮数组

SELECT ..
FROM 表1
LEFT JOIN 表2 ON 条件

例:
有一个员工表,employees简况如下:
在这里插入图片描述
有一个部门表,dept_emp简况如下:
在这里插入图片描述
请你查找所有已经分配部门的员工的last_name和first_name以及dept_no,也包括暂时没有分配具体部门的员工,以上例子如下:
在这里插入图片描述

select emp.last_name,emp.first_name,dep.dept_no
from employees as emp
LEFT JOIN dept_emp as dep
on emp.emp_no = dep.emp_no;

group by

在这里插入图片描述

SELECT emp_no, COUNT(emp_no) AS t 
FROM salaries 
GROUP BY emp_no HAVING t > 15

在这里插入图片描述

聚合函数

转载教程

标签:no,dept,简记,limit,emp,MySQL,sa,连接,刷题
来源: https://blog.csdn.net/fan__lee/article/details/118709211

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有