MySQL(七) 表的內連和外連

表的連接分為內連和外連

9.1 內連接

內連接實際上就是利用where子句對兩種表形成的笛卡兒積進行篩選,我們前面學習的查詢都是內連接,也是在開發過程中使用的最多的連接查詢。
語法:

select 字段 from 表1 inner join 表2 on 連接條件 and 其他條件;

備注:前面學習的都是內連接
案例:顯示SMITH的名字和部門名稱

-- 用前面的寫法
mysql> select ename,dname from emp,dept where emp.deptno=dept.deptno and ename='SMITH';
+-------+----------+
| ename | dname    |
+-------+----------+
| SMITH | RESEARCH |
+-------+----------+
1 row in set (0.01 sec)-- 用標準的內連接寫法
mysql> select ename,dname from emp inner join dept on emp.deptno=dept.deptno and ename='SMITH';
+-------+----------+
| ename | dname    |
+-------+----------+
| SMITH | RESEARCH |
+-------+----------+
1 row in set (0.00 sec)

9.2 外連接

外連接分為左外連接和右外連接

9.2.1 左外連接

如果聯合查詢,左側的表完全顯示我們就說是左外連接。
語法:

select 字段名 from 表名1 left join 表名2 on 連接條件

案例:

-- 建兩張表
create table stu (id int, name varchar(30)); -- 學生表
insert into stu values(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');
create table exam (id int, grade int); -- 成績表
insert into exam values(1, 56),(2,76),(11, 8);

查詢所有學生的成績,如果這個學生沒有成績,也要將學生的個人信息顯示出來

mysql> select * from stu;
+------+------+
| id   | name |
+------+------+
|    1 | jack |
|    2 | tom  |
|    3 | kity |
|    4 | nono |
+------+------+
4 rows in set (0.00 sec)mysql> select * from exam;
+------+-------+
| id   | grade |
+------+-------+
|    1 |    56 |
|    2 |    76 |
|   11 |     8 |
+------+-------+
3 rows in set (0.00 sec)mysql> select * from stu left join exam on stu.id=exam.id;
+------+------+------+-------+
| id   | name | id   | grade |
+------+------+------+-------+
|    1 | jack |    1 |    56 |
|    2 | tom  |    2 |    76 |
|    3 | kity | NULL |  NULL |
|    4 | nono | NULL |  NULL |
+------+------+------+-------+
4 rows in set (0.01 sec)

9.2.1 右外連接

如果聯合查詢,右側的表完全顯示我們就說是右外連接。
語法:

select 字段 from 表名1 right join 表名2 on 連接條件;

案例:
對stu表和exam表聯合查詢,把所有的成績都顯示出來,即使這個成績沒有學生與它對應,也要顯示出來

mysql> select * from stu right join exam on stu.id=exam.id;
+------+------+------+-------+
| id   | name | id   | grade |
+------+------+------+-------+
|    1 | jack |    1 |    56 |
|    2 | tom  |    2 |    76 |
| NULL | NULL |   11 |     8 |
+------+------+------+-------+
3 rows in set (0.00 sec)

練習:
列出部門名稱和這些部門的員工信息,同時列出沒有員工的部門

mysql> select d.dname,e.* from emp e right join dept d on d.deptno=e.deptno;
+------------+--------+--------+-----------+------+---------------------+---------+---------+--------+
| dname      | empno  | ename  | job       | mgr  | hiredate            | sal     | comm    | deptno |
+------------+--------+--------+-----------+------+---------------------+---------+---------+--------+
| RESEARCH   | 007369 | SMITH  | CLERK     | 7902 | 1980-12-17 00:00:00 |  800.00 |    NULL |     20 |
| SALES      | 007499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 00:00:00 | 1600.00 |  300.00 |     30 |
| SALES      | 007521 | WARD   | SALESMAN  | 7698 | 1981-02-22 00:00:00 | 1250.00 |  500.00 |     30 |
| RESEARCH   | 007566 | JONES  | MANAGER   | 7839 | 1981-04-02 00:00:00 | 2975.00 |    NULL |     20 |
| SALES      | 007654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 |     30 |
| SALES      | 007698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 00:00:00 | 2850.00 |    NULL |     30 |
| ACCOUNTING | 007782 | CLARK  | MANAGER   | 7839 | 1981-06-09 00:00:00 | 2450.00 |    NULL |     10 |
| RESEARCH   | 007788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 00:00:00 | 3000.00 |    NULL |     20 |
| ACCOUNTING | 007839 | KING   | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 |    NULL |     10 |
| SALES      | 007844 | TURNER | SALESMAN  | 7698 | 1981-09-08 00:00:00 | 1500.00 |    0.00 |     30 |
| RESEARCH   | 007876 | ADAMS  | CLERK     | 7788 | 1987-05-23 00:00:00 | 1100.00 |    NULL |     20 |
| SALES      | 007900 | JAMES  | CLERK     | 7698 | 1981-12-03 00:00:00 |  950.00 |    NULL |     30 |
| RESEARCH   | 007902 | FORD   | ANALYST   | 7566 | 1981-12-03 00:00:00 | 3000.00 |    NULL |     20 |
| ACCOUNTING | 007934 | MILLER | CLERK     | 7782 | 1982-01-23 00:00:00 | 1300.00 |    NULL |     10 |
| OPERATIONS |   NULL | NULL   | NULL      | NULL | NULL                |    NULL |    NULL |   NULL |
+------------+--------+--------+-----------+------+---------------------+---------+---------+--------+
15 rows in set (0.00 sec)```bash
mysql> select d.dname,e.* from dept d left join emp e on d.deptno=e.deptno;
+------------+--------+--------+-----------+------+---------------------+---------+---------+--------+
| dname      | empno  | ename  | job       | mgr  | hiredate            | sal     | comm    | deptno |
+------------+--------+--------+-----------+------+---------------------+---------+---------+--------+
| RESEARCH   | 007369 | SMITH  | CLERK     | 7902 | 1980-12-17 00:00:00 |  800.00 |    NULL |     20 |
| SALES      | 007499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 00:00:00 | 1600.00 |  300.00 |     30 |
| SALES      | 007521 | WARD   | SALESMAN  | 7698 | 1981-02-22 00:00:00 | 1250.00 |  500.00 |     30 |
| RESEARCH   | 007566 | JONES  | MANAGER   | 7839 | 1981-04-02 00:00:00 | 2975.00 |    NULL |     20 |
| SALES      | 007654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 |     30 |
| SALES      | 007698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 00:00:00 | 2850.00 |    NULL |     30 |
| ACCOUNTING | 007782 | CLARK  | MANAGER   | 7839 | 1981-06-09 00:00:00 | 2450.00 |    NULL |     10 |
| RESEARCH   | 007788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 00:00:00 | 3000.00 |    NULL |     20 |
| ACCOUNTING | 007839 | KING   | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 |    NULL |     10 |
| SALES      | 007844 | TURNER | SALESMAN  | 7698 | 1981-09-08 00:00:00 | 1500.00 |    0.00 |     30 |
| RESEARCH   | 007876 | ADAMS  | CLERK     | 7788 | 1987-05-23 00:00:00 | 1100.00 |    NULL |     20 |
| SALES      | 007900 | JAMES  | CLERK     | 7698 | 1981-12-03 00:00:00 |  950.00 |    NULL |     30 |
| RESEARCH   | 007902 | FORD   | ANALYST   | 7566 | 1981-12-03 00:00:00 | 3000.00 |    NULL |     20 |
| ACCOUNTING | 007934 | MILLER | CLERK     | 7782 | 1982-01-23 00:00:00 | 1300.00 |    NULL |     10 |
| OPERATIONS |   NULL | NULL   | NULL      | NULL | NULL                |    NULL |    NULL |   NULL |
+------------+--------+--------+-----------+------+---------------------+---------+---------+--------+
15 rows in set (0.00 sec)

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

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

相關文章

【代碼隨想錄】面試常考類型之動態規劃基礎題目

前言 更詳細的在大佬的代碼隨想錄 (programmercarl.com) 本系列僅是簡潔版筆記,為了之后方便觀看 做題步驟 含義公式初始化順序檢查 確定dp數組以及下標的含義遞推公式dp數組如何初始化遍歷順序打印dp數組(看哪里有問題) 斐波那契數 …

MFC:CFileFind類使用方法介紹

這是一個介紹MFC中CFileFind類的小程序。編寫這個程序使用的編輯軟件是VS2022&#xff0c;基于C空項目。在C空項目下要調用MFC類需要&#xff1a;首先&#xff0c;頭文件要包含<afx.h>&#xff0c;這個頭文件包含了絕大部分使用MFC所需頭文件&#xff1b;其次&#xff0c…

在線改圖片怎么做更簡單?快速修改圖片尺寸的方法

現在一般拍攝出的圖片尺寸都會比較大&#xff0c;想要上傳大網上的一些平臺展示時&#xff0c;經常會受到平臺的限制&#xff0c;無法將圖片正常上傳到平臺&#xff0c;那么如何將圖片尺寸快速調整呢&#xff1f;比較簡單的一種方式&#xff0c;可以通過在線改圖片的工具來實現…

一個開源的個人主頁模板,可以通過 Github Actions 來進行自動構建。

無名の主頁 簡單的小主頁&#xff0c;原來的看夠了&#xff0c;重新弄了一個 主頁的 Logo 字體已經過壓縮&#xff0c;若用本站 Logo 以外的字母會變回默認字體&#xff0c;這里是 完整字體&#xff0c;若無法下載&#xff0c;可將字體目錄下的 Pacifico-Regular-all.ttf 進行替…

Linux程序開發(十一):進程與進程間通信設計之趣味貓咪抓老鼠游戲

Tips&#xff1a;"分享是快樂的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不僅有知識的海洋&#x1f30a;&#xff0c;還有滿滿的正能量加持&#x1f4aa;&#xff0c;快來和我一起分享這份快樂吧&#x1f60a;&#xff01; 喜歡我的博客的話&#xff0c;記得…

他用AI,抄襲了我的AI作品

《大話西游》里面有一句經典臺詞&#xff1a;每個人都有一個媽&#xff0c;但是“你媽就一定是你媽嗎&#xff1f;” 用AI創作的藝術作品&#xff0c;也走進類似的困境&#xff1a;如何證明你用AI生成的作品&#xff0c;就是你的作品&#xff1f; 近日&#xff0c;騰訊科技獨…

Google手機連接wifi后提示“無法連接互聯網“解決方法

1.原因分析 谷歌手機聯網前會先訪問谷歌的服務器:http://clients3.google.com/generate_204來探測網絡是否連通&#xff0c;由于國內網絡防火墻的原因訪問不了&#xff0c;所以就提示"無網絡連接"。 2.解決方法 可以通過adb命令修改驗證網絡是否連通的服務器地址&…

SpringCloudAlibaba:6.3SpringBoot接入RocketMQ

依賴 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 htt…

【C++提高編程-04】----C++之Vector容器實戰

&#x1f3a9; 歡迎來到技術探索的奇幻世界&#x1f468;?&#x1f4bb; &#x1f4dc; 個人主頁&#xff1a;一倫明悅-CSDN博客 ?&#x1f3fb; 作者簡介&#xff1a; C軟件開發、Python機器學習愛好者 &#x1f5e3;? 互動與支持&#xff1a;&#x1f4ac;評論 &…

STM32+CubeMX移植SPI協議驅動W25Q16FLash存儲器

STM32CubeMX移植SPI協議驅動W25Q16FLash存儲器 SPI簡介拓撲結構時鐘相位&#xff08;CPHA&#xff09;和時鐘極性&#xff08; CPOL&#xff09; W25Q16簡介什么是Flash&#xff0c;有什么特點&#xff1f;W25Q16內部塊、扇區、頁的劃分引腳定義通訊方式控制指令原理圖 CubeMX配…

iBarcoder for Mac v3.15.1中文激活版:讓條形碼生成變得如此簡單

在現代社會&#xff0c;條形碼無處不在&#xff0c;從超市商品到物流包裹&#xff0c;都離不開它的身影。iBarcoder for Mac作為一款簡單易用的條形碼生成軟件&#xff0c;讓條形碼的生成變得如此簡單。 iBarcoder for Mac v3.15.1中文激活版下載 無論你是需要為商品添加條形碼…

Scrapy框架簡單介紹及Scrapy項目編寫詳細步驟

引言 Scrapy是一個用Python編寫的開源、功能強大的網絡爬蟲框架&#xff0c;專為網頁抓取和數據提取設計。它允許開發者高效地從網站上抓取所需的數據&#xff0c;并通過一系列可擴展和可配置的組件來處理這些數據。Scrapy框架的核心組成部分包括&#xff1a; Scrapy Engine&…

aws glue配置讀取本地kafka數據源

創建連接時填寫本地私有ip地址&#xff0c;選擇網絡配置 配置任務選擇kafka作為數據源 但是執行任務時日志顯示連接失敗 文檔提到只能用加密通信 如果您希望與 Kafka 數據源建立安全連接&#xff0c;請選擇 Require SSL connection (需要 SSL 連接)&#xff0c;并在 Kafka priv…

python批發模塊的調試之旅:從新手到專家的蛻變

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、調試技巧的重要性 二、批發模塊調試的實戰演練 1. 設置斷點 2. 逐行執行代碼 3. 觀察…

Android+SQLiteOpenHelper實現登錄記住密碼小案例

實現自動登錄&#xff0c;在數據庫中存 注冊的賬號信息 package com.example.databases_text;import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import andro…

運維行業中的堆疊交換機監控與配置管理策略

隨著信息技術的迅猛發展&#xff0c;企業網絡架構日趨復雜&#xff0c;交換機作為網絡基礎設施的核心設備&#xff0c;其穩定性和安全性對于企業業務的運行至關重要。在運維實踐中&#xff0c;堆疊交換機&#xff08;Stacked Switches&#xff09;因其高可靠性、靈活擴展性等特…

SM2258G專用SSD開卡工具(三星閃存),后附工具下載

工具下載&#xff1a; https://download.csdn.net/download/weixin_43097956/89354302

「貪心算法」檸檬水找零

力扣原題鏈接&#xff0c;點擊跳轉。 假設你的手里沒有錢。你要賣檸檬水&#xff0c;每杯5塊錢。每個顧客有可能會給你5塊錢、10塊錢或20塊錢&#xff0c;你要拿手中的錢找零。如何判斷你能否成功找零呢&#xff1f; 如果一上來就有顧客花10塊錢或20塊錢&#xff0c;你手中沒…

python中特殊的靜態方法__new__

一、關于new方法 在Python中&#xff0c;__new__方法是一個特殊的靜態方法&#xff0c;用于實例化對象。通常不需要直接調用__new__方法&#xff0c;Python會自動調用它來分配內存空間并返回一個新對象&#xff08;或者更具體地說&#xff0c;是對象的引用&#xff09;。然而&…

視頻怎么轉換成二維碼圖片?視頻做成二維碼播放的方法

怎樣在電腦上制作可以播放視頻的二維碼呢&#xff1f;很多日常生活中&#xff0c;很多的場景或者物品都會有自己的二維碼&#xff0c;其他人通過掃碼就可以獲取對應的內容。有很多場景下會把視頻轉換二維碼&#xff0c;通過掃碼在手機上查看視頻內容&#xff0c;比如產品介紹、…