SQL语句是数据库查询和程序设计语言,想学好MySQL数据库,SQL是必备的工具和技能。在SQL中,一个主要的功能就是进行数据查询,其中SQL子查询是一种重要的编写形式,SQL子查询可以和多种java语句一起完成各种复杂查询,下面为大家介绍一下SQL子查询的基本概念以及三种查询形式。
SQL子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,当一个查询是另一个查询的条件时,就构成了子查询。
以下是SQL子查询必须遵循的几个规则:
(1)子查询必须用括号括起来。
(2)子查询在SELECT子句中只能有一个列,除非在主查询中有多列,与子查询的所选列进行比较。
(3)ORDER BY不能用在子查询中,虽然主查询可以使用ORDER BY。可以在子查询中使用GROUP BY,功能与ORDER BY相同。
(4)子查询返回多于一行,只能与多值运算符一起使用,如IN运算符。
(5)BETWEEN运算符不能与子查询一起使用,但是,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子查询有一定的认识和了解,在后面做操作练习时会更加得心应手。
不写代码你养我啊08-23 11:30
HelloWorld09-29 17:28
兔子06-15 17:15