久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql支持子查詢嗎

162次閱讀
沒有評論

共計 2768 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章主要介紹了 mysql 支持子查詢嗎的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇 mysql 支持子查詢嗎文章都會有所收獲,下面我們一起來看看吧。

mysql 支持子查詢。子查詢是指將一個查詢語句嵌套在另一個查詢語句中,它是 MySQL 中比較常用的查詢方法,通過子查詢可以實現多表查詢。子查詢可以在 SELECT、UPDATE 和 DELETE 語句中使用,而且可以進行多層嵌套;在實際開發時,子查詢經常出現在 WHERE 子句中,語法為“WHERE 表達式 操作符 (子查詢)”,子查詢必須在括號中關閉。

本教程操作環境:windows7 系統、mysql8 版本、Dell G3 電腦。

mysql 支持子查詢。

MySQL 中的子查詢

子查詢是 MySQL 中比較常用的查詢方法,通過子查詢可以實現多表查詢。子查詢指將一個查詢語句嵌套在另一個查詢語句中。子查詢可以在 SELECT、UPDATE 和 DELETE 語句中使用,而且可以進行多層嵌套。在實際開發時,子查詢經常出現在 WHERE 子句中。

子查詢在 WHERE 中的語法格式如下:

WHERE  表達式   操作符  (子查詢)

其中,操作符可以是比較運算符和 IN、NOT IN、EXISTS、NOT EXISTS 等關鍵字;子查詢必須在括號中關閉

1)IN | NOT IN

當表達式與子查詢返回的結果集中的某個值相等時,返回 TRUE,否則返回 FALSE;若使用關鍵字 NOT,則返回值正好相反。

2)EXISTS | NOT EXISTS

用于判斷子查詢的結果集是否為空,若子查詢的結果集不為空,返回 TRUE,否則返回 FALSE;若使用關鍵字 NOT,則返回的值正好相反。

例 1

使用子查詢在 tb_students_info 表和 tb_course 表中查詢學習 Java 課程的學生姓名

mysql  SELECT name FROM tb_students_info 
 -  WHERE course_id IN (SELECT id FROM tb_course WHERE course_name =  Java

結果顯示,學習 Java 課程的只有 Dany 和 Henry。上述查詢過程也可以分為以下 2 步執行,實現效果是相同的。

1)首先單獨執行內查詢,查詢出 tb_course 表中課程為 Java 的 id,SQL 語句和運行結果如下。

mysql  SELECT id FROM tb_course 
 -  WHERE course_name =  Java

可以看到,符合條件的 id 字段的值為 1。

2)然后執行外層查詢,在 tb_students_info 表中查詢 course_id 等于 1 的學生姓名。SQL 語句和運行結果如下。

mysql  SELECT name FROM tb_students_info 
 -  WHERE course_id IN (1);

習慣上,外層的 SELECT 查詢稱為父查詢,圓括號中嵌入的查詢稱為子查詢(子查詢必須放在圓括號內)。MySQL 在處理上例的 SELECT 語句時,執行流程為:先執行子查詢,再執行父查詢。

例 2

與例 1 類似,在 SELECT 語句中使用 NOT IN 關鍵字,查詢沒有學習 Java 課程的學生姓名,SQL 語句和運行結果如下。

mysql  SELECT name FROM tb_students_info 
 -  WHERE course_id NOT IN (SELECT id FROM tb_course WHERE course_name =  Java

可以看出,運行結果與例 1 剛好相反,沒有學習 Java 課程的是除了 Dany 和 Henry 之外的學生。

例 3

使用 = 運算符,在 tb_course 表和 tb_students_info 表中查詢出所有學習 Python 課程的學生姓名,SQL 語句和運行結果如下。

mysql  SELECT name FROM tb_students_info
 -  WHERE course_id = (SELECT id FROM tb_course WHERE course_name =  Python

結果顯示,學習 Python 課程的學生只有 Jane。

例 4

使用 運算符,在 tb_course 表和 tb_students_info 表中查詢出沒有學習 Python 課程的學生姓名,SQL 語句和運行結果如下。

mysql  SELECT name FROM tb_students_info
 -  WHERE course_id   (SELECT id FROM tb_course WHERE course_name =  Python

可以看出,運行結果與例 3 剛好相反,沒有學習 Python 課程的是除了 Jane 之外的學生。

例 5

查詢 tb_course 表中是否存在 id=1 的課程,如果存在,就查詢出 tb_students_info 表中的記錄,SQL 語句和運行結果如下。

mysql  SELECT * FROM tb_students_info
 -  WHERE EXISTS(SELECT course_name FROM tb_course WHERE id=1);

由結果可以看到,tb_course 表中存在 id=1 的記錄,因此 EXISTS 表達式返回 TRUE,外層查詢語句接收 TRUE 之后對表 tb_students_info 進行查詢,返回所有的記錄。

EXISTS 關鍵字可以和其它查詢條件一起使用,條件表達式與 EXISTS 關鍵字之間用 AND 和 OR 連接。

例 6

查詢 tb_course 表中是否存在 id=1 的課程,如果存在,就查詢出 tb_students_info 表中 age 字段大于 24 的記錄,SQL 語句和運行結果如下。

mysql  SELECT * FROM tb_students_info
 -  WHERE age 24 AND EXISTS(SELECT course_name FROM tb_course WHERE id=1);

結果顯示,從 tb_students_info 表中查詢出了一條記錄,這條記錄的 age 字段取值為 25。內層查詢語句從 tb_course 表中查詢到記錄,返回 TRUE。外層查詢語句開始進行查詢。根據查詢條件,從 tb_students_info 表中查詢 age 大于 24 的記錄。

拓展

子查詢的功能也可以通過表連接完成,但是子查詢會使 SQL 語句更容易閱讀和編寫。

一般來說,表連接(內連接和外連接等)都可以用子查詢替換,但反過來卻不一定,有的子查詢不能用表連接來替換。子查詢比較靈活、方便、形式多樣,適合作為查詢的篩選條件,而表連接更適合于查看連接表的數據。

關于“mysql 支持子查詢嗎”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“mysql 支持子查詢嗎”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計2768字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 漯河市| 五华县| 松溪县| 永德县| 福泉市| 克什克腾旗| 嘉鱼县| 汝阳县| 健康| 韩城市| 遵化市| 水城县| 壶关县| 杭州市| 揭西县| 广水市| 丹寨县| 体育| 始兴县| 花莲市| 句容市| 民县| 徐水县| 宜丰县| 龙里县| 眉山市| 沙田区| 黑龙江省| 凤凰县| 钟祥市| 梧州市| 嘉荫县| 怀安县| 福泉市| 漳平市| 平陆县| 桂林市| 崇礼县| 肇庆市| 交口县| 武鸣县|