mysql中雖然有連線查詢實現多表連線查詢,但是連線查詢的效能很差,因此便出現了子查詢。
1、理論上,子查詢可以出現在查詢語句的任何位置,但實際應用中多出現在from後和where後。出現在from後的子查詢結果通常是多行多列的,充當臨時表;而出現在where後的子查詢結果通常是單行單列,充當條件:
2、where後作為條件的子查詢多與「=」、「!=」、「>」、「
in和not in:
其中in表示包含於後邊子查詢結果集裡的任意乙個,not in表示不包含於後邊結果集裡的任意乙個。上圖子查詢的結果中,返回depart_id為1、2、4,因此第乙個查詢就會查出emp中所有depart_id是1或2或4的,第二個就會查出既不是1也不是2也不是4的。
=any的用法和in的效果是一樣的;>any是說要大於子查詢結果集裡的任意乙個就可以,簡單理解就是只要大於結果集中最小的那個就可以;
>all就是說要大於子查詢結果集裡所有的,簡單理解就是要比最大的那個還大;
exists和not exists只關心後邊的子查詢是否有結果,而不關心子查詢的結果是什麼;對於exists,如果後邊的子查詢有結果,那麼它的值就是true,反之如果沒有查到結果,則為false,而not exists正好和這個情況相反,有值為false,無值為true。當他們的值為true時,前邊查詢到的結果成立,會被加入到主查詢的結果集,否則不會被加入主查詢的結果集。
在上便的查詢中,查詢語句會先從emp中查詢一條資料,然後拿這條資料的depart_id和company中的depart_id比較,當存在兩個id相同的資料時,就會有結果返回,然後最終返回6條資料,而第二個查詢一樣的道理,當不存在兩個id相同的資料時,主查詢才有結果返回,只有一條資料。
mysql安裝總結 mysq安裝總結 MySQL
2 建立mysql安裝使用者 直接檢視install binary檔案當中有建立使用者的語句。語句為groupadd mysql useradd r g mysql mysql 3 為前面解壓的目錄在 usr local 下建立乙個軟連線,並且附許可權。cd usr local ln s opt m...
8月26日學習總結
老師說讓我們這一周負責好自己的那一章,所以今天看的並查集和線段樹這兩部分的知識點。首先是關於並查集,一般它處理的是無向圖的 的連通分量問題。看的資料上將並查集問題分為了三類 一類是並查集的基礎應用問題,一類是並查集根節點可以維護資訊的題,還有一類是並查集路徑壓縮問題。上午看的關於這類的問題都基本上是...
MySql學習總結
mysql 5.1參考手冊 使用筆記 除標準sql語言外 1 啟動指令碼位置 選項檔案位置 如果使用rpm包安裝指令碼位置在 etc init.d mysqld 選項位置 etc my.cnf 2 啟動服務方法 啟動服務 service mysqld start 開機自動啟動 chkconfig m...