MySQL筆記之子查詢使用介紹_MySQL教程
推薦:MySQL筆記之觸發(fā)器的應(yīng)用觸發(fā)器是由事件來觸發(fā)某個操作,這些事件包括INSERT語句,UPDATE語句和DELETE語句
子查詢是將一個查詢語句嵌套在另一個查詢語句中
內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條件
因為在特定情況下,一個查詢語句的條件需要另一個查詢語句來獲取
參考表:employee

參考表:department

復(fù)制代碼 代碼如下:hl5o.cn
mysql> SELECT * FROM employee
-> WHERE d_id IN
-> (SELECT d_id FROM department);
+------+------+--------+------+------+--------------------+
| num | d_id | name | age | sex | homeaddr |
+------+------+--------+------+------+--------------------+
| 1 | 1001 | 張三 | 26 | 男 | 北京市海淀區(qū) |
| 2 | 1001 | 李四 | 24 | 女 | 北京市昌平區(qū) |
| 3 | 1002 | 王五 | 25 | 男 | 湖南長沙市 |
+------+------+--------+------+------+--------------------+
rows in set (0.00 sec)
此處首先查詢出department表中所有d_id字段的信息,并將結(jié)果作為條件
接著查詢employee表中以d_id為條件的所有字段信息
NOT IN的效果與上面剛好相反
帶比較運算符的子查詢
復(fù)制代碼 代碼如下:hl5o.cn
mysql> SELECT d_id, d_name FROM department
-> WHERE d_id!=
-> (SELECT d_id FROM employee WHERE age=24);
+------+-----------+
| d_id | d_name |
+------+-----------+
| 1002 | 生產(chǎn)部 |
| 1003 | 銷售部 |
+------+-----------+
rows in set (0.00 sec)
這里查詢出了哪些部門沒有年齡為24歲的員工,看起來有點復(fù)雜
此外,運算符還有很多,這里不再贅述
帶EXISTS關(guān)鍵字的子查詢
EXISTS關(guān)鍵字表示存在。使用EXISTS關(guān)鍵字時,內(nèi)層查詢語句不返回查詢的記錄,而是返回一個真假值,如果內(nèi)層查詢語句查詢到滿足條件的記錄,就返回true,否則返回false
當(dāng)返回的值為true時,外層查詢語句將進行查詢,否則不進行查詢
復(fù)制代碼 代碼如下:hl5o.cn
mysql> SELECT * FROM employee
-> WHERE EXISTS
-> (SELECT d_name FROM department WHERE d_id=1004);
Empty set (0.00 sec)
此處內(nèi)層循環(huán)并沒有查詢到滿足條件的結(jié)果,因此返回false,外層查詢不執(zhí)行
NOT EXISTS剛好與之相反
當(dāng)然,EXISTS關(guān)鍵字可以與其他的查詢條件一起使用
條件表達式與EXISTS關(guān)鍵字之間用AND或者OR來連接
復(fù)制代碼 代碼如下:hl5o.cn
mysql> SELECT * FROM employee
-> WHERE age>24 AND EXISTS
-> (SELECT d_name FROM department WHERE d_id=1003);
+------+------+--------+------+------+--------------------+
| num | d_id | name | age | sex | homeaddr |
+------+------+--------+------+------+--------------------+
| 1 | 1001 | 張三 | 26 | 男 | 北京市海淀區(qū) |
| 3 | 1002 | 王五 | 25 | 男 | 湖南長沙市 |
+------+------+--------+------+------+--------------------+
rows in set (0.00 sec)
帶ANY關(guān)鍵字的子查詢
ANY關(guān)鍵字表示滿足其中任一條件
復(fù)制代碼 代碼如下:hl5o.cn
mysql> SELECT * FROM employee
-> WHERE d_id!=ANY
-> (SELECT d_id FROM department);
+------+------+--------+------+------+--------------------+
| num | d_id | name | age | sex | homeaddr |
+------+------+--------+------+------+--------------------+
| 1 | 1001 | 張三 | 26 | 男 | 北京市海淀區(qū) |
| 2 | 1001 | 李四 | 24 | 女 | 北京市昌平區(qū) |
| 3 | 1002 | 王五 | 25 | 男 | 湖南長沙市 |
| 4 | 1004 | Aric | 15 | 男 | England |
+------+------+--------+------+------+--------------------+
rows in set (0.00 sec)
帶ALL關(guān)鍵字的子查詢
ALL關(guān)鍵字表示滿足其中所有條件
復(fù)制代碼 代碼如下:hl5o.cn
mysql> SELECT * FROM employee
-> WHERE d_id>=ALL
-> (SELECT d_id FROM department);
+------+------+------+------+------+----------+
| num | d_id | name | age | sex | homeaddr |
+------+------+------+------+------+----------+
| 4 | 1004 | Aric | 15 | 男 | England |
+------+------+------+------+------+----------+
row in set (0.00 sec)
暫時不明白這兩條語句是什么意思,到時候再補上
UNION合并查詢結(jié)果
復(fù)制代碼 代碼如下:hl5o.cn
mysql> SELECT d_id FROM employee
-> UNION
-> SELECT d_id FROM department;
+------+
| d_id |
+------+
| 1001 |
| 1002 |
| 1004 |
| 1003 |
+------+
rows in set (0.00 sec)
合并比較好理解,也就是將多個查詢的結(jié)果合并在一起,然后去除其中的重復(fù)記錄
如果想保存重復(fù)記錄可以使用UNION ALL語句
分享:MySQL筆記之視圖的使用詳解使用視圖的大部分情況是為了保障數(shù)據(jù)安全性,提高查詢效率
相關(guān)MySQL教程:
- MSSQL清空日志刪除日志文件
- 關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題
- 解析mysql與Oracle update的區(qū)別
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲過程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 深入理解SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接
- 解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
- 淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
- 解析MySQL中INSERT INTO SELECT的使用
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- 解析csv數(shù)據(jù)導(dǎo)入mysql的方法
- mysql 無法連接問題的定位和修復(fù)過程分享
- 關(guān)于MySQL數(shù)據(jù)遷移--data目錄直接替換注意事項的詳解
- Mysql字符集設(shè)置指南
- mysql隨機查詢的優(yōu)化
- SQL Server Management Studio 沒有出來
- Mysql的主從數(shù)據(jù)庫沒有同步的解決辦法
- MySQL和Access的區(qū)別
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲過程的介紹
- mysql出現(xiàn)“Incorrect key file for table”處理方法
猜你也喜歡看這些
- SQL Server查詢語句的使用
- SQL Server 2005數(shù)據(jù)加密技術(shù)應(yīng)用研究
- 無法在 SQL Server 2005 Manger Studio 中錄入中文的
- sql2008安裝后服務(wù)器改名造成名稱不一致解決方法
- Sql學(xué)習(xí)第三天——SQL 關(guān)于CTE(公用表達式)的遞歸查詢使用
- 測試SQL Server業(yè)務(wù)規(guī)則鏈接方法
- 如何解決MySQL 5數(shù)據(jù)庫連接超時問題
- SqlServer獲取存儲過程返回值的實例
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- 談SQL Server數(shù)據(jù)庫管理常用的SQL和T-SQL語句
- 相關(guān)鏈接:
- 教程說明:
MySQL教程-MySQL筆記之子查詢使用介紹
。