MySQL子查询详细教程

 更新时间:2022年10月28日 08:39:11   作者:腹白  
这篇文章主要介绍了MySQL子查询详细教程的相关资料,需要的朋友可以参考下

定义:select语句中嵌套select语句,被嵌套的select语句是子查询。

子查询可以出现在:

select 
	....(select)..
from 
	....(select)..
where 
	....(select)..

1.where后面嵌套子查询

select * from emp where sal > (select avg(sal) from emp) ; 

2.from后面嵌套子查询*

SELECT d.dname,AVG(s.grade) '部门平均薪资' 
FROM emp e
JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal 
JOIN dept d ON e.deptno = d.deptno
GROUP BY d.dname

3.在select 后面嵌套子查询

找出每个员工所在的部门名称

写法一:看作临时表
SELECT t.ename,d.dname
FROM dept d JOIN (SELECT e.ename,e.deptno FROM emp e) t ON t.deptno = d.deptno   

写法二:连接查询
SELECT e.ename,d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno

写法三:select后嵌套子查询
SELECT e.ename,(SELECT d.dname FROM dept d WHERE d.deptno = e.deptno) AS dept FROM emp e ;

4.union

可将查询结果集相加

SELECT ename,job FROM emp e WHERE job = 'CLERK'
UNION
SELECT ename,job FROM emp e WHERE job = 'SALESMAN'

而且两张不相干的表中数据也能够因此拼接在一起。(但是列数保持一致)

SELECT ename FROM emp 
UNION
SELECT dname FROM dept

5.*limit

重点中的重点,分页查询全靠它

1)limit是mysql中特有的,其他数据库中没有,但是Oracle中有一个相同的机制叫rownum。

2)limit取结果集中的部分数据

3)语法机制:limit startIndex,length

​ startindex表示起始位置,从0开始,0表示第一条数据。

​ length表示取几个。

4)limit是sql语句中最后一个执行的环节。

(当前页数-1)* 页的大小 = 当前页起始下标

到此这篇关于MySQL子查询详细教程的文章就介绍到这了,更多相关MySQL子查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL实现LeetCode(180.连续的数字)

    SQL实现LeetCode(180.连续的数字)

    这篇文章主要介绍了SQL实现LeetCode(180.连续的数字),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • MySQL详细讲解多表关联查询

    MySQL详细讲解多表关联查询

    在数据库的设计中, 我们通常都是会有很多张表 , 通过表与表之间的关系建立我们想要的数据关系, 所以在多张表的前提下, 多表的关联查询就尤为重要
    2022-04-04
  • MySQL回表查询与索引覆盖的区别

    MySQL回表查询与索引覆盖的区别

    本文主要介绍了MySQL回表查询与索引覆盖的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • MySQL 时间类型的选择

    MySQL 时间类型的选择

    MySQL 有多种类型存储日期和时间,例如 YEAR 和 DATE。MySQL 的时间类型存储的精确度能到秒(MariaDB 可以到毫秒级)。但是,也可以通过时间计算达到毫秒级。时间类型的选择没有最佳,而是取决于业务需要如何处理时间的存储。
    2021-06-06
  • MySQL 如何限制一张表的记录数

    MySQL 如何限制一张表的记录数

    能否控制单表在一个固定的记录数,比如说1W条,超过不让插入新记录或者说直接抛出错误?关于这个问题,没有一个简化的答案,比如执行一条命令或者说简单设置一个参数都不能完美解决。接下来便介绍MySQL 如何限制一张表的记录数来给出一些可选解决方案
    2021-09-09
  • MySQL:reading initial communication packet问题解决方法

    MySQL:reading initial communication packet问题解决方法

    网站访问出现如题错误,经过检查my.cnf,发现innodb_buffer_pool_size = 2048M 设置过大,调整为innodb_buffer_pool_size = 1024M即可,网上也有该问题的其他解决方法,但都不能解决我的问题
    2012-07-07
  • (MariaDB)MySQL数据类型和存储机制全面讲解

    (MariaDB)MySQL数据类型和存储机制全面讲解

    下面小编就为大家分享一篇(MariaDB)MySQL数据类型和存储机制全面讲解,具有很的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Mysql中文乱码问题的最佳解决方法

    Mysql中文乱码问题的最佳解决方法

    这篇文章主要介绍了Mysql中文乱码问题的最佳解决方法,需要的朋友可以参考下
    2014-07-07
  • MySQL数据库设计概念及多表查询和事物操作

    MySQL数据库设计概念及多表查询和事物操作

    数据库设计就是根据业务系统具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型,本文给大家介绍MySQL数据库设计概念及多表查询和事物操作,感兴趣的朋友一起看看吧
    2022-05-05
  • MySQL中的ORDER BY问题

    MySQL中的ORDER BY问题

    这篇文章主要介绍了MySQL中的ORDER BY问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论