mysql數據庫交叉連接_【數據庫】內連接、外連接、交叉連接

基本概念

關系模型(表)

關系模型由關系數據結構、關系操作集合和關系完整性約束三部分組成。

關系模型的數據結構非常簡單:一張扁平的二維表。

元組:二維表中的具有相同數據類型的某一行

屬性:二維表中的具有相同數據類型的某一列

笛卡爾積(Cartesian product):又稱直積,分別用集合A和集合B的一個元素作第一、第二元素構成有序對,所有這樣的有序對的集合稱為A和B的笛卡爾積,記作A×B。

其符號化表示為:A×B = { | x∈A∧y∈B}。

易證:若|A| = m,|B| = n,則|AB| = m*n。(|A|表示集合A的模,即 集合A中元素的個數為m個)

例如:

A={a, b}, B={0, 1, 2},則

A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

表:是實實在在地保存數據的實體,寫入的數據都保存在表中

視圖:是一個虛擬表,其內容由查詢定義。

同真實的表一樣,視圖包含一系列帶有名稱的列和行數據;但是,視圖并不在數據庫中以存儲的數據值集形式存在。

行和列數據來自由定義視圖的查詢所引用的表,并且在引用視圖時動態生成。

候選碼:若關系中的一個屬性或屬性組的值能夠唯一地標識一個元組,且他的真子集不能唯一的標識一個元組,則稱這個屬性或屬性組做候選碼。

主鍵:如果在一個關系中,有多個候選碼可以選擇,則選定其中的一個作為該關系的主鍵。

它的值用于唯一地標識表中的某一條記錄。主關鍵字是一種唯一關鍵字。

碼:是一個或多個屬性的集合。

超碼:是一個或多個屬性的集合,超碼中的這些屬性可以讓我們在一個實體集中唯一地標識一個實體。

注意:雖然超碼可以唯一標識一個實體,但是可能大多數超碼中含有多余的屬性。所以我們需要候選碼。

候選碼:是極小的超碼集,也就是它的任意真子集都不是超碼,而他本身是超碼。

主碼:是被選中用來在一個關系中區分不同元組的候選碼。

我來舉個例子吧:

學生表(學號,身份證號,姓名,性別)

超碼:(學號,性別)→(姓名)。學號和性別能唯一標識姓名一點問題都沒有,但是其實標識姓名,只用學號就能標識了,不需要性別。

候選碼:(學號)→(姓名),(身份證號)→(姓名)。學號或身份證號都能唯一標識姓名。

主碼:(學號)→(姓名)。這是人為選擇的,其實身份證號也能做主碼。

連接

所謂"連接",就是兩張表根據關聯字段(就是ON后面的關聯條件),組合成一個數據集。

內連接(inner join):(以左右表內匹配的記錄為主)表示只包含匹配的記錄。只返回兩張表匹配的記錄。

外連接(outer join):表示還包含不匹配的記錄。

左連接(left join):(以左表所有的記錄為主)又稱左外連接,返回匹配的記錄,以及表A多余的記錄。

右連接(right join):(以右表所有的記錄為主)又稱右外連接,返回匹配的記錄,以及表B多余的記錄。

全連接(full join):(以兩個表所有的記錄為主)又稱全外連接,返回匹配的記錄,以及表A和表B各自的多余記錄。

交叉連接(cross join):即 做笛卡爾積運算。

表A和表B不存在關聯字段,這時表A(共有n條記錄)與表B(共有m條記錄)連接后,一對一組合配對,會產生一張包含n*m條記錄的新表,返回新表。

89e37d44b8eee00b20924b54c42617c9.png

上圖中,表A的記錄是123,表B的記錄是ABC,顏色表示匹配關系。返回結果中,如果另一張表沒有匹配的記錄,則用null填充。

例子:

學生表:

3b2ed49f7219dfb70e3cbcff2e5374f9.png

s_id:學生學號

s_name:學生名稱

s_class:學生班級

老師表:

016a64a9edc84c3a3ca34889876d8294.png

t_id:老師id

t_class:老師管理的班級

t_name:老師名稱

內連接(INNER JOIN)

/* 內連接 */

SELECT * FROM student INNER JOIN teacher ON s_class=t_class

/* 我比較喜歡這種 */

SELECT * FROM student,teacher WHERE s_class=t_class

7cd69710a1579400921c0091ecaf29e0.png

外連接(OUTER JOIN)

左外連接(LEFT JOIN)

/* 左連接 */

SELECT * FROM student LEFT JOIN teacher ON s_class=t_class

0beb318806b7921d5b4cfc6ce5e62e54.png

右外連接(RIGHT JOIN)

/* 右連接 */

SELECT * FROM student RIGHT JOIN teacher ON s_class=t_class

858cabbf9b46ef9159f9d7ad5e5eca9b.png

全外連接(FULL JOIN)

注意:Oracle數據庫支持full join,mysql是不支持full join的,但仍然可以同過左外連接+union+右外連接實現。

/* 全連接(不適用于MYSQL) */

SELECT * FROM student FULL JOIN teacher ON s_class=t_class

/* 全連接 */

SELECT * FROM student LEFT JOIN teacher ON s_class=t_class

UNION

SELECT * FROM student RIGHT JOIN teacher ON s_class=t_class

7ec05e58c68c5b1dd681fb2273828dec.png

交叉連接(笛卡爾積)(CROSS JOIN)

/* 交叉連接 */

SELECT * FROM student CROSS JOIN teacher

8e1f5d199ffb0e8ce07ac31b7899753b.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271350.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#實現GDI+基本圖的縮放、拖拽、移動

C#實現GDI基本圖的縮放、拖拽、移動示例代碼如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms; namespace ResizableControls{ public …

網絡資產管理系統_固定資產管理系統的三種網絡架構方式

隨著互聯網技術的發展和信息技術的廣泛使用,固定資產管理系統在各行業的應用越來越普及,固定資產管理系統作為當今主流的企業固定資產信息化管理模式,能夠對企業固定資產進行有效管理并提升企業的管理水平。對于固定資產管理系統的網絡結構方…

計算機網絡基礎:廣域網協議相關知識筆記

廣域網常指覆蓋范圍廣、數據傳輸速率較低,以數據通信為目的的數據通信網。廣域網主要是通過專用的或交換式的連接把計算機連接起來。廣域網傳輸協議主要包括:PPP(點對點協議)、DDN、ISDN(綜合業務數字網)、…

mysql check table_修復MySQL的MyISAM表命令check table用法

MyISAM如果損壞了修復方法是比較簡單了我們只要使用check table命令就可以了,下面我們來看一篇關于修復MySQL的MyISAM表命令check table用法,具體如下所示。MySQL日志文件里出現以下錯誤,MySQL表通常不會發生crash情況,一般是在更…

python字典append_python中字典重復賦值,append到list中引發的異常

今天遇到了一個關于python 字典的誤用。先上代碼: data [{id: 1, name: 管理員, role: admin, desc: 系統管理員, acl: None}, {id: 2, name: 研發, role: dev, desc: 研發人員, acl: None}, {id: 3, name: 測試, role: qa, desc: 測試人員, acl: None}, {id: 4, n…

計算機網絡基礎:TCP/IP協議相關知識筆記?

1、TCP/IP特性邏輯編址:每一塊網卡會在出廠時由廠家分配了唯一的永久性物理地址。針對Internet,會為每臺連入因特網的計算機分配一個邏輯地址也就是IP地址。路由選擇:專門用于定義路由器如何選擇網絡路徑的協議,即IP數據包的路由選…

終于做出來了

1 <!doctype html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>精英大賽2號 </title>6 <meta name"Keywords" content"關鍵字">7 <meta name"Desp…

ashx連接mysql_ASP.net與SQLite數據庫通過js和ashx交互(連接和操作)

ASP.net與SQLite數據庫通過js和ashx交互(連接和操作)&#xff1a;廢話(也是思路)&#xff1a;用的是VS2010&#xff0c;打算做網站前后臺。由于不喜歡前臺語言里加些與html和css和js的其他內容&#xff0c;想實現前后臺語言的分離&#xff0c;與前后臺通過js的ajax實現交互&…

計算機網絡:九大命令!解決網絡故障新思路

一&#xff1a;ping命令ping是個使用頻率極高的實用程序&#xff0c;主要用于確定網絡的連通性。這對確定網絡是否正確連接&#xff0c;以及網絡連接的狀況十分有用。簡單的說&#xff0c;ping就是一個測試程序&#xff0c;如果ping運行正確&#xff0c;大體上就可以排除網絡訪…

webpack打包后引用cdn的js_JS逆向:Webpack打包后的代碼怎么搞?猿人學爬蟲比賽第十六題詳細題解...

實戰地址http://match.yuanrenxue.com/match/16抓包分析地址欄輸入 地址&#xff0c;按下F12并回車&#xff0c;發現數據在這里:查看cookie&#xff0c;無加密相關的字段。請求的接口倒是有個m的加密參數&#xff0c;看來這題的主要目的就是 看看m參數怎么進行加密的吧。切換 I…

計算機網絡基礎:IP基礎知識筆記

1、 IP地址概念IP是用來唯一標識主機地址。IP地址 網絡地址 主機地址(又稱&#xff1a;主機號和網絡號組成)例如IP&#xff1a;192.168.100.168 子網掩碼 255.255.255.0 對應的網絡地址和主機地址如下&#xff1a;192.168.100.168&#xff08;IP地址&#xff09; 192.168.1.…

bs架構的系統能連接mysql嗎_HTTP、BS架構

Django 底層原理快捷鍵方向鍵方向鍵本鍵如果活動選項是選項按鈕或文件則為移動焦點&#xff1b;方向鍵 Win鍵(簡稱Win鍵)使窗口全屏、最小化、靠左半邊、靠右半邊(部分版本不支持)&#xff1b;方向鍵Shift鍵將連續的文字或文件選中方向鍵(左右)Ctrl鍵 在英文單詞或中文詞語間跳…

離散卷積的計算

本文轉自&#xff1a; 離散卷積與自相關----------信號處理系列 http://www.cnblogs.com/einyboy/archive/2012/12/30/2839633.html 一、 定義 離散信號f(n),g(n)的定義如下&#xff1a; N-----為信號f(n)的長度 s(n)----為卷積結果序列,長度為len(f(n))len(g(n))-1 以3個元…

計算機網絡基礎:Internet常用服務介紹?

1、域名服務Internet中的域名地址和IP地址是等價的&#xff0c;它們之間是通過域名服務完成映射的。實際上DNS是一種分布式地址信息數據庫系統&#xff0c;服務器中包含整個數據庫的某部分信息&#xff0c;并供客戶查詢。域名系統采用客戶端/服務器模式&#xff0c;整個系統由解…

lamba

lamba /*** lamba*/Testpublic void test5() {Runnable r () -> System.out.println("hello");r.run();}Testpublic void test6() {int num 0;Runnable r new Runnable() {Overridepublic void run() {System.out.println("java");}};r.run();}

第五章 Response(JavaTM Servlet 規范3.1 )

The Response 響應 響應對象包裝了從服務器端返回到客戶端的所有信息。在HTTP協議上&#xff0c;這些信息既可以通過HTTP headers 又可以通過響應體從服務器端傳輸到客戶端。 5.1 緩沖 為了效率&#xff0c;servlet 容器允許但非必須緩沖到客戶端的輸出。典型地&#xff0c;服…

c語言深度剖析第三版pdf_入門到入墳,蘊含全網最強知識點3283頁筆記、pdf教程,活到老,學到老...

又到了“金九銀十”面試求職高峰期&#xff0c;在金三銀四時也參與過不少面試&#xff0c;2020都說工作不好找&#xff0c;也是對開發人員的要求變高。前段時間自己有整理了一些Java后端開發面試常問的高頻考點問題做成一份PDF文檔&#xff08;1000道高頻題&#xff09;&#x…

mysql 5.7.23要錢嗎_最新mysql 5.7.23安裝配置圖文教程

2018年最新mysql5.7詳細安裝與配置&#xff0c;總共分為四步&#xff0c;其中環境變量配置不是必須的。1、安裝包下載2、安裝過程3、環境變量配置4、連接測試一、官網下載mysql安裝包1.前往官網下載&#xff0c;下載鏈接為&#xff1a;2.選擇合適你電腦系統的版本進行安裝。如果…