exists子句在Sql中的含義
帶有EXISTS謂詞的子查詢不返回任何資料,只產生邏輯真值“true”或邏輯假值“false”。
使用存在量詞EXISTS後,若內層查詢結果非空,則外層的WHERE子句返回真值否則返回假值。
由EXISTS引出的子查詢,其目標列表示式通常都用*,因為帶EXISTS的子查詢只返回真值或假值,給出列名無實際意義。
這類查詢與前面講解得不相關子查詢有一個明顯的區別,即子查詢的查詢條件依賴於外層父查詢的某個屬性值,稱這類查詢為相關子查詢。求解相關子查詢不能像求解不相關子查詢那樣,一次將子查詢求解出來,然後求解父查詢。內層查詢由於與外層查詢有關,因此必須反覆求值。從概念上講,相關查詢的一般處理過程是:
首先去外層查詢中表的第1個元組,根據它與內層查詢相關的屬性值處理內層查詢,若WHERE子句返回值為真,則取此元組放入結果表;然後再取表的下一個元組;重複這個過程直到外層表全部檢查完為止。
相對來講,in子句通常用在不相關子查詢中。通常先執行子查詢,將子查詢的結構用於父查詢。子查詢的查詢條件不依賴於父查詢,這類子查詢稱為不相關子查詢。
exists子句例子:SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='1');
in子句例子:SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
(SELECT Sdept
FROM Student
WHERE Sname='');
使用存在量詞EXISTS後,若內層查詢結果非空,則外層的WHERE子句返回真值否則返回假值。
由EXISTS引出的子查詢,其目標列表示式通常都用*,因為帶EXISTS的子查詢只返回真值或假值,給出列名無實際意義。
這類查詢與前面講解得不相關子查詢有一個明顯的區別,即子查詢的查詢條件依賴於外層父查詢的某個屬性值,稱這類查詢為相關子查詢。求解相關子查詢不能像求解不相關子查詢那樣,一次將子查詢求解出來,然後求解父查詢。內層查詢由於與外層查詢有關,因此必須反覆求值。從概念上講,相關查詢的一般處理過程是:
首先去外層查詢中表的第1個元組,根據它與內層查詢相關的屬性值處理內層查詢,若WHERE子句返回值為真,則取此元組放入結果表;然後再取表的下一個元組;重複這個過程直到外層表全部檢查完為止。
相對來講,in子句通常用在不相關子查詢中。通常先執行子查詢,將子查詢的結構用於父查詢。子查詢的查詢條件不依賴於父查詢,這類子查詢稱為不相關子查詢。
exists子句例子:SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='1');
in子句例子:SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
(SELECT Sdept
FROM Student
WHERE Sname='');
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733344/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL中EXISTS的使用SQL
- SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差別SQL
- SQL中 where 子句和having子句中的區別SQL
- Oralce 使用SQL中的exists 和not exists 用法詳解SQL
- MySQL 5.7中sql_mode的含義解釋MySql
- 樹狀sql中connect by裡prior的含義!SQL
- T-SQL、Jet SQL、PL-SQL 的含義SQL
- SQL中IN和EXISTS用法的區別SQL
- Java中static的含義Java
- [精選] SQL中的IN與NOT IN、EXISTS與NOT EXISTS的區別及效能分析SQL
- oracle SQL with 子句OracleSQL
- SQL -- JOIN子句SQL
- 【SQL】existsSQL
- SQL語句中NULL的真實含義SQLNull
- C++中&和*的含義C++
- Spring中bean的含義SpringBean
- oracle中斜槓(/)的含義Oracle
- SVN中clean up的含義
- c++中&含義C++
- explain中filesort含義AI
- 對線面試官:SQL中的IN與NOT IN、EXISTS與NOT EXISTS的區別及效能分析面試SQL
- sql中in和exists的原理及使用場景。SQL
- SQL之limit子句的使用SQLMIT
- SQL Server中sysobjects含義及批量賦予許可權的方法SQLServerObject
- sql:delete if exists還是drop if exists?SQLdelete
- 蘊含式(包含EXISTS語句的分析)
- topas 中 PgSp 欄位的含義
- JavaScript 中 void(0) 的含義JavaScript
- group by中cube含義解析
- 如何理解樹狀sql中ORDER SIBLINGS BY排序的含義SQL排序
- SQL外來鍵約束的含義及建立SQL
- SQL SERVER儲存過程AS和GO的含義SQLServer儲存過程Go
- SQL grouping sets 子句SQL
- SQLite中的WHERE子句SQLite
- SQLite中的FROM子句SQLite
- DB2 exists子句會過濾掉所用的本條記錄DB2
- Linux shell中2>&1的含義Linux
- JS陣列中的apply含義JS陣列APP