动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

SQL子查询的三种形式

08-26 16:58 81浏览
举报 T字号
  • 大字
  • 中字
  • 小字

SQL语句是数据库查询和程序设计语言,想学好MySQL数据库,SQL是必备的工具和技能。在SQL中,一个主要的功能就是进行数据查询,其中SQL子查询是一种重要的编写形式,SQL子查询可以和多种java语句一起完成各种复杂查询,下面为大家介绍一下SQL子查询的基本概念以及三种查询形式。

SQL子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,当一个查询是另一个查询的条件时,就构成了子查询。

以下是SQL子查询必须遵循的几个规则:

1子查询必须用括号括起来。

2子查询在SELECT子句中只能有一个列,除非在主查询中有多列,与子查询的所选列进行比较。

3ORDER BY不能用在子查询中,虽然主查询可以使用ORDER BY。可以在子查询中使用GROUP BY,功能与ORDER BY相同。

4子查询返回多于一行,只能与多值运算符一起使用,如IN运算符。

5BETWEEN运算符不能与子查询一起使用,但是,BETWEEN可在子查询内使用

select语句嵌套select语句被称为子查询select子句可出现在select、from、where 关键字后面,如下:

select… (select)…

from …(select)…

where …(select)…

下面介绍SQL子查询的三种不同关键字的形式:

1出现在WHERE后面的子查询

where 后)找出薪水比公司平均薪水高的员工,要求显示员工名和薪水

select ename,sal from emp where sal > avg(sal)

以上语句执行报错,因为分组函数不能直接使用在where关键字后面

思路分析:第一步:找出公司的平均薪水,平均薪水:2073.214286

第二步:找出薪水比公司平均薪水高的员工

第三步:将平均薪水 2073.214286 值替换为它的查询语句即可

2)查询在FROM后面的子查询

from 后)找出每个部门的平均薪水,并且要求显示平均薪水的薪水等级

思路分析:第一步:找出每个部门的平均薪水

第二步:查询出薪水等级信息

第三步:将第一步查询出来的结果当作一张临时表t,将第一步的查询结果与 salgrade薪水等级表做进行表连接,条件t.avgsal between s.losal and s.hisal;

这里有一个小技巧可以使用,就是将查询结果当做临时表。

3)出现在查询列表中的子查询(select后使用了解)

select

e.ename,(select d.dname from dept d where

e.deptno = d.deptno) as dname

from emp e;

SQL子查询的用途是广泛的,当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时,便会与一些java关键字和语句一起使用进行数据查询。

以上就是对SQL子查询基本概念和三种形式的介绍,SELECT语句是SQL的查询,目前所看到的所有SELECT语句都是简单查询,这也是所有java程序员必须要掌握的,希望这篇文章可以帮助到大家,尤其是希望java零基础的朋友们通过这篇文章的学习,可以对SQL子查询有一定的认识和了解,在后面做操作练习时会更加得心应手。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵1123
程序员代码小兵1123

6篇文章贡献24102字

作者相关文章更多>

推荐相关文章更多>

MySQL开发规范

达芬奇09-04 11:38

必须掌握的30种SQL语句优化

不写代码你养我啊08-23 11:30

ES(Elasticsearch)支持PB级全文搜索引擎入门教程

HelloWorld09-29 17:28

Java面试中的hadoop面试题及答案整理

兔子06-15 17:15

数据库分类之速成篇

呵呵呀06-17 18:54

发评论

举报

0/150

取消