mysql使用--連接查詢

1.連接查詢
如:SELECT * FROM t1, t2;
上述FROM語句將t1表,t2表連接。
假設t1表含n條記錄,t2表含m條記錄,則t1, t2得到的表將包含n*m條記錄。

我們以一個混合連接,過濾的查詢分析語句執行過程。
如:SELECT * FROM t1, t2 WHERE t1.m1 > 1 AND t1.m1 = t2.m2 AND t2.n2 < ‘d’;
(1).針對FROM子句得到結果集1。
(2).對結果集1中每行執行過濾條件,得到結果集2。
(3).對結果集2執行SELECT得到最終結果集。

上述是從執行效果角度解釋執行邏輯。實際執行中為了效率優化的考量,會視t1為驅動表,視t2為被驅動表。
先結合WHERE子句對驅動表執行過濾,再針對過濾后表中每條記錄與被驅動表結合執行其他過濾條件以得到最終結果集。

2.內連接和外連接
執行連接查詢時,如果驅動表中某一行執行連接后得到的多行中,全部被WHERE過濾掉了,這樣最終結果集中將不含驅動表此行的相關信息,有時這不是我們希望的。故,引入內連接,外連接。
(1).對內連接,如驅動表的記錄在被驅動表找不到匹配的記錄,則最終結果集中將不含驅動表此行的相關信息。這就是默認下的表現。
(2).對外連接,如驅動表的記錄在被驅動表找不到匹配的記錄,則最終結果集中將依然包含一條此驅動表此行的對應行。只不過對應行中被驅動表各個列的數值為NULL。

_1.外連接下過濾條件–ON
使用外連接下,過濾使用ON語句。且ON子句必須要存在。
ON語句此時用于替代WHERE。但采用ON語句過濾下,對驅動表中某行和被驅動表中所有行構成的合并行都無法通過過濾下,依然會在最終結果集產生一個合并行其中被驅動表部分采用NULL。
_2.外連接下過濾–WHERE
外連接下,必須存在ON執行過濾。但ON過濾下,對驅動表所有在被驅動表中無法產生任何匹配的行,在最終結果集中均保留一行。如果希望對這些保留行執行過濾,需要依賴WHERE子句來進行。

3.連接語法
在MySQL中,根據選取的驅動表的不同,外連接可細分為左外連接和右外連接。
左外連接,可簡稱左連接;右外連接,可簡稱右連接;

_1.左連接的語法
如:SELECT * FROM t1 LEFT [OUTER] JOIN t2 ON 過濾條件 [WHERE 過濾條件];
括號中OUTER可以省略,不影響含義。
這里t1是驅動表,t2是被驅動表。
上述語句中ON子句不可省略,可以用ON替代WHERE。也可以讓ON專注于過濾最終結果集中WHERE無法過濾的行。

_2.右連接的語法
如:SELECT * FROM t1 RIGHT [OUTER] JOIN t2 ON 連接條件 [WHERE 過濾條件];
此時驅動表是t2,t1是被驅動表。

_3.內連接的語法
下列這些語句含義一致,均采用內連接:
SELECT * FROM t1, t2;
SELECT * FROM t1 JOIN t2;
SELECT * FROM t1 INNER JOIN t2;
SELECT * FROM t1 CROSS JOIN t2;

內連接中ON子句沒有存在必要。存在下等價于WHERE看待。

4.多表連接
如:SELECT * FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.m1 = t2.m2 AND t1.m1 = t3.m3;另一種效果等價寫法:SELECT * FROM t1 INNER JOIN t2 ON t1.m1 = t2.m2 INNER JOIN t3 ON t1.m1 = t3.m3;

5.表的別名
如:SELECT s1.number, s1.name, s1.major, s2.subject, s2.score FROM student_info AS s1 INNER JOIN student_score AS s2 WHERE s1.number = s2.number;
上述在FROM子句中給student_info,student_score起了別名,在查詢語句其他地方可使用別名來引用表。

6.自連接
如:SELECT * FROM t1, t1;
會報錯,報錯不是因為不允許自連接,而是因為FROM子句中不允許兩個表同名。
這樣就可以了:SELECT * FROM t1 AS table1, t1 AS table2;
`

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

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

相關文章

thinkphp文件夾生成zip壓縮包

一、準備工作&#xff0c;使用phpinfo()查看有沒有zip擴展 <?php echo phpinfo(); ?>Thinkphp使用PHP自帶的ZipArchive壓縮文件或文件夾 顯示enabled 說明已經配置好 如果沒有安裝擴展的&#xff0c;請參照以下方法&#xff1a; 1、下載對應版本的擴展包&#xff1a…

Java操作excel之poi

1. 創建Excel 1.1 創建新Excel工作簿 引入poi依賴 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar…

QTableView 和 QAbstractTableModel

1.自定義類繼承QAbstractTableModel 頭文件如下&#xff1a; #ifndef TESTMOUDLE_H #define TESTMOUDLE_H #include "StructTest.h" #include <QAbstractTableModel> class TestMoudle : public QAbstractTableModel { public: TestMoudle(QStringList&…

如何一次性解壓多個文件

第一步&#xff1a;多選壓縮包 第二步&#xff1a;右鍵解壓即可 一句話&#xff0c;單個怎么解壓&#xff0c;多個就怎么解壓&#xff0c;只不過先選中 參考&#xff1a;如何一次性解壓多個文件

智能安全帽作業記錄儀賦能智慧工地人臉識別勞務實名制

需求背景 建筑工地是一個安全事故多發的場所。目前&#xff0c;工程建設規模不斷擴大&#xff0c;工藝流程紛繁復雜&#xff0c;如何完善現場施工現場管理&#xff0c;控制事故發生頻率&#xff0c;保障文明施工一直是施工企業、政府管理部門關注的焦點。尤其隨著社會的不斷進…

YARN,ZOOKEERPER--學習筆記

1&#xff0c;YARN組件 1.1YARN簡介 YARN表示分布式資源調度&#xff0c;簡單地說&#xff0c;就是&#xff1a;以分布式技術完成資源的合理分配&#xff0c;讓MapReduce能高效完成計算任務。 YARN是Hadoop核心組件之一&#xff0c;用于提供分布式資源調度服務。 而在Hadoop …

邏輯漏洞(業務邏輯)dami CMS

邏輯漏洞&#xff08;業務支付邏輯漏洞&#xff09;dami CMS 0x01 業務邏輯簡介 業務邏輯指的是一個系統或應用程序中的實際業務規則和流程。它描述了如何處理特定的業務需求、數據和操作。業務邏輯通常是根據特定行業或組織的需求而設計的。 在軟件開發中&#xff0c;業務邏…

零編程基礎Python的全面學習指南

文章目錄 前言什么是編程&#xff1f;Python代碼對應的機器碼準備開始Windows變量類型整型字符串型布爾類型字符串連接和整數相加if 語句捕獲用戶輸入導入MacWindows游戲時間&#xff01;小結關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Pyt…

磐舟CI使用說明及案例

整體介紹 磐舟作為一個devops產品&#xff0c;它具備基礎的CI流水線功能。同時磐舟的流水線是完全基于云原生架構設計的&#xff0c;在使用時會有一些注意事項。這里首先我們要了解磐舟整體的流水線打包邏輯。 文檔結構說明 一般來說&#xff0c;磐舟推薦單個業務的標準git庫…

反編譯-ApkTool

ApkTool下載地址&#xff1a; Apktool | ApktoolA tool for reverse engineering Android apk fileshttps://apktool.org/ 1、使用 apktool 解包 執行 java -jar apktool_2.4.1.jar d demo.apk -o demo 命令 java -jar apktool_2.4.1.jar d demo.apk -o demo 其中 d 后面是…

Nevron Vision for .NET 2023.1 Crack

Nevron Vision for .NET 適用于桌面和 Web 應用程序的高級數據可視化 Nevron Vision for .NET提供最全面的組件&#xff0c;用于構建面向 Web 和桌面的企業級數據可視化應用程序。 該套件中的組件具有連貫的 2D 和 3D 數據可視化效果&#xff0c;對觀眾產生巨大的視覺沖擊力。我…

基于window10的遠程桌面報錯:要求的函數不受支持 的問題解決方法

基于window10的遠程桌面報錯&#xff1a;要求的函數不受支持 的問題解決方法 設置方法&#xff1a; 一、WINR 在框內輸入gpedit.msc 二、依次打開 計算機配置----管理模板-----系統—憑據分配—加密數據庫修正–改為以啟用—易受攻擊 第一步&#xff1a; 第二步&#xff1a;…

并查集總結

并查集簡介 并查集是一種可以動態維護若干個不重疊的結合&#xff0c;并支持合并與查詢的數據結構 并查集是一種樹狀的數據結構&#xff0c;可以用于維護傳遞關系以及聯通性。 并查集有兩種操作&#xff1a; find&#xff1a;查詢一個元素屬于哪個集合merge:合并兩個集合 模…

爆款文章有訣竅,內容創作者如何能持續產出優質內容

內容營銷人有沒有這么一種共鳴&#xff1a;10 萬 那么多&#xff0c;為什么不能多我一個&#xff1f; 通常&#xff0c;我們把瀏覽量 / 閱讀量高、轉評贊數量高的內容看作爆款&#xff0c;而數據如果達到 10 萬 則是超級爆款。因為&#xff0c;閱讀量高意味著內容得到了大量的曝…

【Linux】使用Makefile自動化編譯項目:簡化開發流程、提高效率

文章目錄 示例一&#xff1a;編譯一個進度條程序示例二&#xff1a;編譯一個簡單的程序gcc的幾個選項結論 當你開始一個新的軟件項目時&#xff0c;編寫一個好的Makefile是非常重要的。Makefile是一個文本文件&#xff0c;用于指定如何構建和編譯項目。它定義了目標文件、依賴關…

8年老鳥整理,自動化測試-準備測試數據詳細...

目錄&#xff1a;導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結&#xff08;尾部小驚喜&#xff09; 前言 大部分類型的測試…

基于C#實現Bitmap算法

在所有具有性能優化的數據結構中&#xff0c;我想大家使用最多的就是 hash 表&#xff0c;是的&#xff0c;在具有定位查找上具有 O(1)的常量時間&#xff0c;多么的簡潔優美&#xff0c;但是在特定的場合下&#xff1a; ①&#xff1a;對 10 億個不重復的整數進行排序。 ②&am…

python獲取透明圖

import cv2 import os import numpy as nproot "./test" for file in os.listdir(root):# 讀取圖片image cv2.imread(os.path.join(root, file), cv2.IMREAD_UNCHANGED)new np.zeros((image.shape[0], image.shape[1], image.shape[2]), np.uint8)# 檢查圖片是否為…