也稱爲嵌套查詢,位於兩個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)]
關聯子查詢是指一個包含對錶的引用的子查詢,該表也顯示在外部查詢中。通俗一點來說,就是子查詢引用到了主查詢的數據