您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關MySQL聯合查詢的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
笛卡爾積
笛卡爾乘積是指在數學中,兩個集合X和Y的笛卡爾積(Cartesian product),又稱直積,表示為X×Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員 [3] 。
假設集合A={a, b},集合B={0, 1, 2},則兩個集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
內連接
select 字段 from 表1 別名1 [inner] join 表2 別名2 on 連接條件 and 其他條件;select 字段 from 表1 別名1,表2 別名2 where 連接條件 and 其他條件;
外連接
外連接分為左外連接和右外連接。如果聯合查詢,左側的表完全顯示我們就說是左外連接;右側的表完全顯示我們就說是右外連接。
--左外連接,表1完全顯示select 字段名 from 表名1 left join 表名2 on 連接條件;-- 右外連接,表2完全顯示select 字段 from 表名1 right join 表名2 on 連接條件;
自連接
涉及到行與行之間的比較時,就需要自連接了
示例:顯示所有“計算機原理”成績比“Java”成績高的成績信息
-- 先查詢“計算機原理”和“Java”課程的idselect id,name from course where name='Java' or name='計算機原理';-- 再查詢成績表中,“計算機原理”成績比“Java”成績 好的信息SELECTs1.*FROMscore s1,score s2WHEREs1.student_id = s2.student_idAND s1.score < s2.scoreAND s1.course_id = 1AND s2.course_id = 3;
-- 也可以使用join on 語句來進行自連接查詢SELECTs1.*FROMscore s1JOIN score s2 ON s1.student_id = s2.student_idAND s1.score < s2.scoreAND s1.course_id = 1AND s2.course_id = 3;
子查詢
子查詢是指嵌入在其他sql語句中的select語句,也叫嵌套查詢。
單行子查詢:返回一行記錄的子查詢
案例:查詢與“小白” 同學的同班同學:
select * from student where classes_id=(select classes_id from student wherename='小白');
多行子查詢:返回多行記錄的子查詢
[NOT] IN關鍵字:
先執行子查詢的SQL,得到的結果放到內存中,再進行外層查詢,就直接把給出的限制條件和子查詢的結果比較,篩選就好了。(依賴內存,適合子查詢的結果集合比較小的情況)
[NOT] EXISTS關鍵字:
先執行外層查詢,依次取每一條外層查詢的記錄,帶入到里層查詢中
如果里層查詢的結果集合非空,就保留外層查詢到的結果
如果里層查詢的結果集合為空,就丟棄外層查詢到的結果
不依賴內存,適合外層查詢結果集合小,子查詢的結果集合比較大的情況
合并查詢
為了合并多個select的執行結果,可以使用集合操作符 union,union all。使用UNION
和UNION ALL時,前后查詢的結果集中,字段需要一致。
union
該操作符用于取得兩個結果集的并集。當使用該操作符時,會自動去掉結果集中的重復行。
案例:查詢id小于3,或者名字為“英文”的課程:
select * from course where id<3unionselect * from course where name='英文';-- 或者使用or來實現select * from course where id<3 or name='英文';
union all
該操作符用于取得兩個結果集的并集。當使用該操作符時,不會去掉結果集中的重復行。
案例:查詢id小于3,或者名字為“Java”的課程:
-- 可以看到結果集中出現重復數據Javaselect * from course where id<3union allselect * from course where name='英文';
感謝各位的閱讀!關于“MySQL聯合查詢的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。