也称为嵌套查询,位于两个in个一个查询的 WHERE 子句里的查询,它返回的数据一般在主查询里做为一个条件,从而进一步数据库返回的数据数据库
a、子查询必须位于圆括号内函数
b、子查询的SELECT子句中只能有一个列,除非主查询中的多个列,用于与子查询选中的列相比较code
c、子查询不能使用 ORDER BY,不过主查询能够,在查询中,GROUP BY能够起到同 ORDER BY 相同的做用table
d、返回多行数据的子查询只能同多值操做符一块儿使用,好比 IN 操做符语法
e、SELECT 列表中不能包含任何对 BLOB、ARRAY、CLOB 或者 NCLOB类型值的引用引用
f、子查询不能直接在用在集合函数中im
g、BETWEEN 操做符不能同子查询一块儿使用,可是 BETWEEN 操做符能够在子查询中数据
语法查询
SELECT column_name [,column_name] FROM table1 [,table2] WHERE column_name OPERATOR (SELECT column_name [,column_name] FROM table1 [,table2] [WHERE])
案例img
找除薪水大于4500的数据
SELECT * FROM CUSTOMERS WHERE ID IN( SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)
将子查询返回的数据插入到其余表中,子查询选区的数据能够被任何字符、日期或着数值函数所修饰(DML命令,须要使用COMMIT和ROLLBACK)
语法
INSERT INTO table_name [(column1 [,column2 ])] SELECT [ * |column1 [,column2]] FROM tabel [, table2] [WHERE VALUE OPERATOR]
案例
按照上述的将表全部的数据插入新表 INSERT INTO CUSTOMERS_BKP SELECT * FROM CUSTOMERS WHERE ID IN( SELECT ID FROM CUSTOMERS )
更新列表
语法
UPDATE table SET column_name = new_value [WHERE OPERATOR[VALUE]] (SELECT COLUMN_NAME FROM TABLE_NAME) [WHERE)]
示例
假设咱们有一份 CUSTOMERS_BKP 表做为 CUSTOMERS 表的备份。
下面的示例将 CUSTOMERS 表中全部 AGE 大于或者等于 27 的客户的 SALARY 字段都变为了原来的 0.25 倍
UPDATE CUSTOMERS SET SALARY = SALARY * 0.25 WHERE AGE IN ( SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27)
语法
DELETE FROM TABLE_NAME [WHERE OPERATOR [VALUE]] (SELECT COLUMN_NAME FROM TABLE_NAME [WHERT)]
关联子查询是指一个包含对表的引用的子查询,该表也显示在外部查询中。通俗一点来说,就是子查询引用到了主查询的数据