『数据库』朴实无华的数据库多表查询,连接查询、笛卡尔积
『數據庫』 樸實無華且枯燥的數據庫教程–入門必看!(不收藏,真的吃虧了)
文章目錄
- 一、交
- 二、并
- 三、差
- 四、笛卡爾積
- 五、連接查詢
一、交
(會用到連接運算,固定寫法,連接運算在下面不用著急看)
先假設兩張表:
Table NSA1:
| 張三 | 男 | 18 |
| 李四 | 跨性別者 | 21 |
| 王五 | 女 | 18 |
| 韓七 | 男 | 12 |
Table NSA2:
| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 趙六 | 女 | 18 |
| 韓七 | 女 | 12 |
等價于
SELECT a.Name,a.Sex FROM NSA1 a INNER JOIN NSA2 b USING(Name ,Sex )| 張三 | 男 | 18 |
| 王五 | 女 | 18 |
二、并
先假設兩張表:
Table NSA1:
| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 韓七 | 男 | 12 |
Table NSA2:
| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 趙六 | 女 | 18 |
| 韓七 | 男 | 12 |
| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 韓七 | 男 | 12 |
| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 趙六 | 女 | 18 |
| 韓七 | 男 | 12 |
如果執行:
SELECT Name,Sex FROM NSA1 UNION SELECT Name,Sex FROM NSA1| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 韓七 | 男 | 12 |
| 趙六 | 女 | 18 |
注釋:union自帶去重
三、差
(會用到連接運算,固定寫法,連接運算在下面不用著急看)
先假設兩張表:
Table NSA1:
| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 趙六 | 女 | 18 |
| 韓七 | 男 | 12 |
Table NSA2:
| 張三 | 男 | 18 |
| 李四 | 男 | 21 |
| 王五 | 女 | 18 |
| 韓七 | 男 | 12 |
| 趙六 | 女 | 18 |
四、笛卡爾積
其實所有的鏈接運算都是都是建立在笛卡爾積上的,笛卡爾積就是不舍棄任何全外連接,可以這么理解,但是cross join 象征著返回所有的情況,默認不使用 where進行過濾的。
舉例:
Table Name :
| 朱小明 |
| 劉小華 |
Table Subject:
| 語文 |
| 數學 |
| 法律 |
| 劉小華 | 數學 |
| 劉小華 | 法律 |
| 劉小華 | 語文 |
| 朱小明 | 法律 |
| 朱小明 | 語文 |
| 朱小明 | 數學 |
五、連接查詢
連接運算是關系的二目運算.關系R與關系S的連接運算是從兩個關系的廣義笛卡爾積中選取屬性間滿足一定條件(稱為連接條件,記為AθB)的元組形成一個新關系。
①等值連接
等值連接是從關系R與S的廣義笛卡爾積中選取A、B屬性相等的那些元組,按照屬性相同的行將兩(或以上)張表元組匹配連接;
舉個例子
ID_Name表
| 1 | 大好人 |
| 2 | 大壞蛋 |
| 3 | 豬八戒 |
| 4 | 孫悟空 |
| 5 | 沙和尚 |
| 7 | 唐三藏 |
| 8 | 武松 |
ID_MingZhu 表
| 3 | 西游記 |
| 4 | 西游記 |
| 5 | 西游記 |
| 7 | 西游記 |
| 8 | 水滸傳 |
| 3 | 豬八戒 | 3 | 西游記 |
| 4 | 孫悟空 | 4 | 西游記 |
| 5 | 沙和尚 | 5 | 西游記 |
| 7 | 唐三藏 | 7 | 西游記 |
| 8 | 武松 | 8 | 水滸傳 |
② 自然連接
自然連接是特殊的等值連接,要求兩個關系中進行比較的分量必須是同名的屬性組,并且在結果中把重復的屬性列去掉。
舉個例子:
ID_Name表
| 1 | 大好人 |
| 2 | 大壞蛋 |
| 3 | 豬八戒 |
| 4 | 孫悟空 |
| 5 | 沙和尚 |
| 7 | 唐三藏 |
| 8 | 武松 |
ID_MingZhu 表
| 3 | 西游記 |
| 4 | 西游記 |
| 5 | 西游記 |
| 7 | 西游記 |
| 8 | 水滸傳 |
| 3 | 豬八戒 | 西游記 |
| 4 | 孫悟空 | 西游記 |
| 5 | 沙和尚 | 西游記 |
| 7 | 唐三藏 | 西游記 |
| 8 | 武松 | 水滸傳 |
③ 左外連接
將返回右表的所有行。如果左表的某行在右表中沒有匹配行,則將為右表返回空值左連接:
例子:
ID_Name表
| 1 | 大好人 |
| 2 | 大壞蛋 |
| 3 | 豬八戒 |
| 4 | 孫悟空 |
| 5 | 沙和尚 |
| 7 | 唐三藏 |
| 8 | 武松 |
ID_MingZhu 表
| 3 | 西游記 |
| 4 | 西游記 |
| 5 | 西游記 |
| 7 | 西游記 |
| 8 | 水滸傳 |
| 9 | 紅樓夢 |
| 1 | 大好人 | NULL | NULL |
| 2 | 大壞蛋 | NULL | NULL |
| 3 | 豬八戒 | 3 | 西游記 |
| 4 | 孫悟空 | 4 | 西游記 |
| 5 | 沙和尚 | 5 | 西游記 |
| 7 | 唐三藏 | 7 | 西游記 |
| 8 | 武松 | 8 | 水滸傳 |
④ 右外連接
將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值;
例子
ID_Name表
| 1 | 大好人 |
| 2 | 大壞蛋 |
| 3 | 豬八戒 |
| 4 | 孫悟空 |
| 5 | 沙和尚 |
| 7 | 唐三藏 |
| 8 | 武松 |
ID_MingZhu 表
| 3 | 西游記 |
| 4 | 西游記 |
| 5 | 西游記 |
| 7 | 西游記 |
| 8 | 水滸傳 |
| 9 | 紅樓夢 |
| 3 | 豬八戒 | 3 | 西游記 |
| 4 | 孫悟空 | 4 | 西游記 |
| 5 | 沙和尚 | 5 | 西游記 |
| 7 | 唐三藏 | 7 | 西游記 |
| 8 | 武松 | 8 | 水滸傳 |
| NULL | NULL | 9 | 紅樓夢 |
- 全外連接。
左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方用null 填充
例子
ID_Name表
| 1 | 大好人 |
| 2 | 大壞蛋 |
| 3 | 豬八戒 |
| 4 | 孫悟空 |
| 5 | 沙和尚 |
| 7 | 唐三藏 |
| 8 | 武松 |
ID_MingZhu 表
| 3 | 西游記 |
| 4 | 西游記 |
| 5 | 西游記 |
| 7 | 西游記 |
| 8 | 水滸傳 |
| 9 | 紅樓夢 |
| 1 | 大好人 | NULL | NULL |
| 2 | 大壞蛋 | NULL | NULL |
| 3 | 豬八戒 | 3 | 西游記 |
| 4 | 孫悟空 | 4 | 西游記 |
| 5 | 沙和尚 | 5 | 西游記 |
| 7 | 唐三藏 | 7 | 西游記 |
| 8 | 武松 | 8 | 水滸傳 |
| NULL | NULL | 9 | 紅樓夢 |
寫在最后:
Name:風骨散人,目前是一名雙非在校大學生,預計考研,熱愛編程,熱愛技術,喜歡分享,知識無界,希望我的分享可以幫到你!名字的含義:我想有一天我能有能力隨心所欲不逾矩,不總是向生活低頭,有能力讓家人擁有富足的生活而不是為了生計而到處奔波。“世人慌慌張張,不過是圖碎銀幾兩。偏偏這碎銀幾兩,能解世間惆悵,可讓父母安康,可護幼子成長 …”
文章主要內容:
Python,C++,C語言,JAVA,C#等語言的教程
ACM題解、模板、算法等,主要是數據結構,數學和圖論
設計模式,數據庫,計算機網絡,操作系統,計算機組成原理
Python爬蟲、深度學習、機器學習
計算機系408考研的所有專業課內容
目前還在更新中,先關注不迷路。微信公眾號,cnblogs(博客園),CSDN同名“風骨散人”
如果有什么想看的,可以私信我,如果在能力范圍內,我會發布相應的博文!
感謝大家的閱讀!😘你的點贊、收藏、關注是對我最大的鼓勵!
總結
以上是生活随笔為你收集整理的『数据库』朴实无华的数据库多表查询,连接查询、笛卡尔积的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快手设置密码在哪里设置
- 下一篇: 『数据库』朴实无华且枯燥的数据库文章--