子查询

子查询

DESC descend;
ASC ascend;
INSERT INTO emp VALUES(‘1219’,’DASD’,’STUDENT’,’7902’,’18-12月-16’,’0’,’12’,’20’);
UPDATE emp SET ename = ‘wakaka’ WHERE JOB = ‘STUDENT’;
[charlist] 字符列中的任何单一字符
[^charlist]或者[!charlist] 不在字符列中的任何单一字符
现在,我们希望从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE ‘[ALN]%’
SELECT * FROM emp WHERE ENAME LIKE ‘%[!s]%’;
子查询:在一个查询里面继续嵌套其他的查询语句。
在一个查询语句之中有可能会同时嵌套多个子查询。

子查询的各个使用形式

WHERE字句:子查询一般会返回单行单列、单行多列、多行单列。
HAVING字句:子查询会返回单行单列,同时表示要使用统计函数
FROM字句:子查询返回多行多列数据(表结构);

在WHERE字句里面使用子查询

例:查询出低于公司哦、平均工资的雇员信息
SELECT AVG(sal)
FROM emp;//查询出来的结果为单行单列可以作为WHERE字句使用
SELECT *
FROM emp
WHERE sal<(
SELECT AVG(sal)
FROM emp
);
范例:查询出公司最早雇佣的雇员信息
SELECT MIN(hiredate)
FROM emp;//得到单行单列结果
SELECT *
FROM emp
WHERE hiredate = (
SELECT MIN(hiredate)
FROM emp
);
例:与SCOTT从事同一工作,并且工资相同的雇员信息
SELECT job,sal
FROM emp WHERE
ename = ‘SCOTT’;//此时返回的结果是单行多列,这时候就要求要比较的内容与列数相同,顺序也不能搞乱
SELECT *
FROM emp
WHERE(job,sal)=(
SELECT job,sal
FROM emp WHERE
ename = ‘SCOTT’)
AND ename<>’SCOTT’
;
如果说子查询返回的内容是多行单列。那么就表示一个操作的数据范围。
提供有三个操作符:IN、ANY、ALL。
1、IN操作:指的是与子查询返回额内容相同。
SELECT sal FROM emp WHERE job=’MANAGER’;
SELECT *
FROM emp
WHERE sal IN(
SELECT sal FROM emp WHERE job=’MANAGER’);
NOT IN 操作,如果子查询当中有Null,为空,那么返回的没有任何操作。
2、ANY操作,一共分为三种形式:
= ANY://功能和IN一样
SELECT *
FROM emp
WHERE sal =ANY(
SELECT sal FROM emp WHERE job=’MANAGER’);
< ANY:
SELECT *
FROM emp
WHERE sal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值