SQL中關於EXISTS謂詞的理解

2021-08-13 02:02:32 字數 1032 閱讀 3217

讓我們先看看exists的用法:exists代表存在量詞。帶有exists謂詞的子查詢不返回任何資料,只產生邏輯真值「true」或邏輯假值「false」。

例如,以下的sql語句:

select sname

from student

where exists

(select *

from sc

where sc.sno=student.sno and cno='1;

)

本查詢涉及表student和sc表。我們可以這樣理解上面的sql語句做的事情:在student表中從頭到尾每次取乙個元組出來,用這個元組的sno與sc表所有的元組做比較,如果比較條件成立(sc表中存在sno值等於student.sno中值並且其cno='1'的元組),即exists語句中的sql語句有返回值過來,則exists返回給上一級元組乙個true值,則表示允許現在student表中的這個元組可以放入結果表中。

使用exists後,若內層查詢結果非空,則外層的where子句返回真值,否則返回假值。

由exists引出的子查詢,其目標列表示式通常都用*,因為exists的子查詢只返回真值或者假值,不返回選擇出來的結果,因此,你給什麼樣的列名最後返回的都是true或者false,所以給出實際列名無意義。

對於如何寫帶有exists查詢的子句,我是這樣理解的:

1.首先子查詢中必須要有依賴父查詢的條件,即我們單獨把子查詢的select語句提出來不能正常執行。

2.每次查詢時父查詢表中的乙個元組對子查詢所有的元組進行判定,如果為true則父查詢中的這個元組允許放入結果表,否則進行父查詢下乙個元組的判定。

對於SQL中EXISTS謂詞的理解

from student where exists select from sc where sc.sno student.sno and cno 1 在這裡插入 片本查詢涉及表student和sc表。我們可以這樣理解上面的sql語句做的事情 在student表中從頭到尾每次取乙個元組出來,用這個元...

SQL之對EXISTS謂詞的理解

一 首先明確幾點 exists相當於存在量詞彐 exists和not exists不返回任何資料,只返回邏輯真或者假由exists引出的子查詢,其目標列表示式通常都用 因為exists的子查詢只返回真值或者假值,不返回選擇出來的結果,因此,你給什麼樣的列名最後返回的都是true或者false,所以給...

SQL語句查詢謂詞Exists原理之我見

在sql中使用exists表示判斷子查詢是否存在記錄,它返回的是true或false欄位。如果有記錄返回,則返回值,否則返回為false。exists做為where 條件時,是先對where 前的主查詢詢進行查詢,然後用主查詢的結果乙個乙個的代入exists的查詢進行判斷,如果為真則輸出當前這一條主...