網(wǎng)站建設(shè)續(xù)費(fèi)多少錢優(yōu)化seo方法
BCSP-玄子JAVA開發(fā)之JAVA數(shù)據(jù)庫編程CH-04_SQL高級(jí)(二)
4.1 IN
4.1.1 IN 子查詢
- 如果子查詢的結(jié)果為多個(gè)值,就會(huì)導(dǎo)致代碼報(bào)錯(cuò)
- 解決方案就是使用 IN 關(guān)鍵字,將 = 替換成 IN
SELECT …… FROM 表名 WHERE 字段名 IN (子查詢);
4.1.2 NOT IN 子查詢
-
與
in
一樣,查詢結(jié)果有多條使用 -
獲取的值是不包含在查詢結(jié)果里面的值
SELECT …… FROM 表名 WHERE 字段名 NOT IN (子查詢);
4.2 EXISTS
4.2.1 檢測表創(chuàng)建
DROP TABLE IF EXISTS temp;
CREATE TABLE log (… … #省略建表語句
) ;
4.2.2 EXISTS 子查詢
- 子查詢有返回結(jié)果: EXISTS子查詢結(jié)果為TRUE
- 子查詢無返回結(jié)果: EXISTS子查詢結(jié)果為FALSE,外層查詢不執(zhí)行
SELECT …… FROM 表名 WHERE EXISTS (子查詢);
4.2.3 NOT EXIST 子查詢
- 與 EXISTS 子查詢相反
- 子查詢有返回結(jié)果: NOT EXIST子查詢結(jié)果為 FALSE
- 子查詢無返回結(jié)果: NOT EXIST子查詢結(jié)果為 TRUE,外層查詢執(zhí)行
4.3 子查詢小結(jié)
當(dāng)一個(gè)查詢是另一個(gè)查詢的條件時(shí),稱之為子查詢
-
任何允許使用表達(dá)式的地方都可以使用子查詢
-
嵌套在父查詢SELECT語句的子查詢,可包括
-
SELECT 子句
-
SELECT (子查詢) [AS 列別名] FROM 表名;
-
FROM 子句
-
SELECT * FROM (子查詢) AS 表別名;
-
WHERE 子句
-
GROUP BY 子句
-
HAVING 子句
-
4.4 子查詢注意事項(xiàng)
通常,將子查詢放在比較條件的右邊以增加可讀性
子查詢可以返回單行或多行數(shù)據(jù),此時(shí)要選擇合適的關(guān)鍵字
-
子查詢的返回是單行數(shù)據(jù)時(shí),比較條件中可以使用比較運(yùn)算符
-
子查詢的返回是多行數(shù)據(jù)時(shí),比較條件中需要使用IN或NOT IN關(guān)鍵字
-
如果判斷子查詢是否有數(shù)據(jù)返回時(shí),需要使用EXISTS或NOT EXISTS關(guān)鍵字
只出現(xiàn)在子查詢中、而沒有出現(xiàn)在父查詢中的列不能包含在輸出列中
BCSP-玄子JAVA開發(fā)之JAVA數(shù)據(jù)庫編程CH-04_SQL高級(jí)(二)