SQL之對EXISTS謂詞的理解

2021-08-30 02:41:42 字數 811 閱讀 2640

一、首先明確幾點:

exists相當於存在量詞彐

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

select sname

from student

where

exists

(select

*from sc

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

;)

一、對上面的過程理解:

本查詢涉及表student和sc表。

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

二、注意:

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

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

SQL中關於EXISTS謂詞的理解

讓我們先看看exists的用法 exists代表存在量詞。帶有exists謂詞的子查詢不返回任何資料,只產生邏輯真值 true 或邏輯假值 false 例如,以下的sql語句 select sname from student where exists select from sc where sc...

對於SQL中EXISTS謂詞的理解

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

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

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