子查詢在SELECT、UPDATE、DELETE語句內部可以出現SELECT語句。內部的SELECT語句結果可以作為外部語句中條件子句的一部分,
也可以作為外部查詢的臨時表。子查詢的類型有:
1. 單行子查詢:不向外部返回結果,或者只返回一行結果。
2. 多行子查詢:向外部返回零行、一行或者多行結果。
單行子查詢代碼演示:查詢出銷售部(SALES)下面的員工姓名,工作,工資。該問題可以用聯接查詢實現,由於所需的結果信息都在Emp表中,
可以先從Dept表中查詢出銷售部對應的部門號,然後根據當前部門號再到Emp表中查詢出符合該部門的員工記錄即可。
從銷售表中查詢出的結果可以作為Emp表中查詢的條件,SQL語句實現如下:
SQL> SELECT ENAME,JOB,SAL FROM EMP 2 WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME='SALES') 3 /
代碼解析:
內部查詢的結果作為外部查詢的條件。
需要注意:
如果內部查詢不返回任何記錄,則外部條件中字段DEPTNO與NULL比較永遠為假,也就是說外部查詢不返還任何結果。
在單行子查詢中外部查詢可以使用=、>、<、>=、<=、<>等比較運算符。
內部查詢返回的結果必須與外部查詢條件中的字段(DEPTNO)匹配。
如果內部查詢返回多行結果則出現錯誤。