?? sql中的in和exists的應用技巧1.sql
字號:
----檢索學習了課程號為‘C2'的學生的學號與姓名---
--1.(聯接查詢)(由于要做笛卡爾集運算,所以效率是最低)
SELECT s.學號,姓名 FROM 學生情況表 as s,成績表 as c where s.學號=c.學號 and c.課號='C2'
--(說明:在本查詢中,先執行from語句把兩個表做笛卡爾積,構成一張包括兩表所有信息的大表,再執行where條件,
--在本大表中取出數據進行篩選,篩選完成后再把所需顯示的字段顯示出來)
--2.(嵌套查詢)(IN 的使用技巧)
SELECT 學號,姓名 from 學生情況表 where 學號 in
(select 學號 from 成績表 where 課號='C2')
--(說明:由于在子查詢中沒有出現主查詢的數據,所以本查詢不是相關子查詢,而是先執行里面的子查詢并返回一個記錄
--集后,再執行外層的查詢,判斷'學號'是否在子查詢的記錄集中,如果是,則選出該記錄,如此完成后再返回出用戶所規
--定的字段)
SELECT 學號,姓名 from 學生情況表 where 'C2' in
(select 課號 from 成績表 where 學號=學生情況表.學號)
--(說明:由于子查詢中使用了主查詢的數據,所以本查詢屬于是相關的子查詢,過程為:先從主表中取出一條記錄的學號
--值,然后執行子查詢,在子表中也取出一條記錄的學號,并判斷是否和主表中的學號相等,如果不相等則取下一條記錄,否
--則,則寫進要返回的記錄集中,如此,則子查詢就返回一個在'學生情況表'和'成績表'中同一個學號的課號記錄集,最后再
--判斷是否包括了C2,如果有,則立即顯示出該主表記錄的學號和姓名 )
--3.(存在量詞的嵌套查詢)(由于exists不返回記錄集,并且是相關查詢所以執行效率最高)
select 學號,姓名 from 學生情況表 where exists
(select * from 成績表 where 成績表.學號=學生情況表.學號 and 課號='C2')
--(說明:exists查詢總是相關查詢,
--先從'學生情況表'中取出一條記錄的學號值,再從'成績表'中取出一條記錄的學號值,如果相等則比較課號是否為C2,如果都
--相等,則exists返回一個T值,則把'學生情況表'中取出的該記錄的有關字段顯示出來)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -