MySQL刷题简记
2021/7/14 19:14:19
本文主要是介绍MySQL刷题简记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- limit
- order by
- 内连接
- 外连接
- 左连接
- group by
- 聚合函数
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
聚合函数
转载教程
这篇关于MySQL刷题简记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程