最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解MySQL中表的內(nèi)外連接

 更新時(shí)間:2023年06月25日 09:00:48   作者:蔣靈瑜的筆記本  
這篇文章主要為大家介紹了MySQL中表的內(nèi)外連接的相關(guān)知識(shí),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、內(nèi)連接(表1 inner join 表2 on)

內(nèi)連接就是利用where子句對(duì)兩種表形成的笛卡爾積進(jìn)行篩選,之前博客寫的查詢都是內(nèi)連接,也是在開發(fā)過程中使用的最多的連接查詢。

語(yǔ)法:

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

1、顯示SMITH的名字和部門名稱

--兩張數(shù)據(jù)表
mysql> select* from emp;
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| empno  | ename  | job       | mgr  | hiredate            | sal     | comm    | deptno |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| 007369 | SMITH  | CLERK     | 7902 | 1980-12-17 00:00:00 |  800.00 |    NULL |     20 |
| 007499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 00:00:00 | 1600.00 |  300.00 |     30 |
| 007521 | WARD   | SALESMAN  | 7698 | 1981-02-22 00:00:00 | 1250.00 |  500.00 |     30 |
| 007566 | JONES  | MANAGER   | 7839 | 1981-04-02 00:00:00 | 2975.00 |    NULL |     20 |
| 007654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 |     30 |
| 007698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 00:00:00 | 2850.00 |    NULL |     30 |
| 007782 | CLARK  | MANAGER   | 7839 | 1981-06-09 00:00:00 | 2450.00 |    NULL |     10 |
| 007788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 00:00:00 | 3000.00 |    NULL |     20 |
| 007839 | KING   | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 |    NULL |     10 |
| 007844 | TURNER | SALESMAN  | 7698 | 1981-09-08 00:00:00 | 1500.00 |    0.00 |     30 |
| 007876 | ADAMS  | CLERK     | 7788 | 1987-05-23 00:00:00 | 1100.00 |    NULL |     20 |
| 007900 | JAMES  | CLERK     | 7698 | 1981-12-03 00:00:00 |  950.00 |    NULL |     30 |
| 007902 | FORD   | ANALYST   | 7566 | 1981-12-03 00:00:00 | 3000.00 |    NULL |     20 |
| 007934 | MILLER | CLERK     | 7782 | 1982-01-23 00:00:00 | 1300.00 |    NULL |     10 |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
14 rows in set (0.07 sec)
mysql> select* from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+
4 rows in set (0.00 sec)

之前的寫法:

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)

標(biāo)準(zhǔn)的內(nèi)連接的寫法:

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)
mysql> select ename,dname from emp inner join dept on emp.deptno=dept.deptno where ename='SMITH';
+-------+----------+
| ename | dname    |
+-------+----------+
| SMITH | RESEARCH |
+-------+----------+
1 row in set (0.00 sec)

二、外連接

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

1、左外連接(表名1 left join 表名2 on)

如果聯(lián)合查詢,左側(cè)的表完全顯示就是左外連接。

語(yǔ)法:

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

整兩張表:

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

1.1查詢所有學(xué)生的成績(jī),如果這個(gè)學(xué)生沒有成績(jī),也要將學(xué)生的個(gè)人信息顯示出來

學(xué)生表和成績(jī)表的id并不是一一對(duì)應(yīng)的,如果這里用內(nèi)連接,未在兩個(gè)表中出現(xiàn)的id字段將不會(huì)被篩選出來:

mysql> select* from stu inner join exam on stu.id=exam.id;
+------+------+------+-------+
| id   | name | id   | grade |
+------+------+------+-------+
|    1 | jack |    1 |    56 |
|    2 | tom  |    2 |    76 |
+------+------+------+-------+
2 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.00 sec)

2、右外連接(表名1 right join 表名2)

如果聯(lián)合查詢,右側(cè)的表完全顯示我們就說是右外連接。

語(yǔ)法:

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

2.1對(duì)stu表和exam表聯(lián)合查詢,把所有的成績(jī)都顯示出來,即使這個(gè)成績(jī)沒有學(xué)生與它對(duì)應(yīng),也要顯示出來

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

2.2列出部門名稱和這些部門的員工信息,同時(shí)列出沒有員工的部門

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

以上就是詳解MySQL中表的內(nèi)外連接的詳細(xì)內(nèi)容,更多關(guān)于MySQL內(nèi)外連接的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key

    MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key

    MySQL里Create Index 能否創(chuàng)建主鍵 Primary Key
    2009-07-07
  • MySQL?8.0.28?安裝配置圖文教程

    MySQL?8.0.28?安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了MySQL?8.0.28?安裝配置圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • mysql字符集亂碼問題解決方法介紹

    mysql字符集亂碼問題解決方法介紹

    解決亂碼的方法是,在執(zhí)行SQL語(yǔ)句之前,將MySQL以下三個(gè)系統(tǒng)參數(shù)設(shè)置為與服務(wù)器字符集character-set-server相同的字符集
    2012-05-05
  • MySQL表排序規(guī)則不同錯(cuò)誤問題分析

    MySQL表排序規(guī)則不同錯(cuò)誤問題分析

    這篇文章主要介紹了MySQL表排序規(guī)則不同錯(cuò)誤問題分析,小編覺得挺不錯(cuò)的,這里分享給大家,供各位參考。
    2017-10-10
  • MySQL中使用VARCHAR字段進(jìn)行日期篩選的最佳實(shí)踐

    MySQL中使用VARCHAR字段進(jìn)行日期篩選的最佳實(shí)踐

    本文將從VARCHAR存日期的常見格式、正確篩選方法、核心風(fēng)險(xiǎn)與問題、最佳實(shí)踐改造方案、實(shí)戰(zhàn)示例五個(gè)維度出發(fā),全面講解在MySQL中使用VARCHAR字段進(jìn)行日期篩選的知識(shí),幫你避開坑點(diǎn),同時(shí)給出長(zhǎng)期優(yōu)化方向
    2026-03-03
  • Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫(kù)日志的完整步驟

    Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫(kù)日志的完整步驟

    這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫(kù)日志的完整步驟,大家要開啟MySQL數(shù)據(jù)庫(kù)的日志功能,可以按照本文介紹的步驟進(jìn)行操作,需要的朋友可以參考下
    2023-09-09
  • MySQL INSERT INTO SELECT時(shí)自增Id不連續(xù)問題及解決

    MySQL INSERT INTO SELECT時(shí)自增Id不連續(xù)問題及解決

    這篇文章主要介紹了INSERT INTO SELECT時(shí)自增Id不連續(xù)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL之鎖類型解讀

    MySQL之鎖類型解讀

    MySQL鎖類型包括讀鎖(共享鎖)和寫鎖(排他鎖),并介紹了意向鎖、自增鎖、元數(shù)據(jù)鎖、行級(jí)鎖和間隙鎖等概念,悲觀鎖和樂觀鎖是兩種不同的鎖設(shè)計(jì)思想,悲觀鎖在每次操作前加鎖,適用于并發(fā)沖突多的場(chǎng)景;樂觀鎖在更新時(shí)判斷數(shù)據(jù)是否被修改
    2025-02-02
  • MySQL允許root遠(yuǎn)程登錄的方式

    MySQL允許root遠(yuǎn)程登錄的方式

    這篇文章主要介紹了MySQL允許root遠(yuǎn)程登錄的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • MySQL查看和優(yōu)化數(shù)據(jù)庫(kù)實(shí)例詳細(xì)信息的命令

    MySQL查看和優(yōu)化數(shù)據(jù)庫(kù)實(shí)例詳細(xì)信息的命令

    本文詳細(xì)介紹了如何查看?MySQL?數(shù)據(jù)庫(kù)實(shí)例的信息,包括基本信息、配置參數(shù)、運(yùn)行進(jìn)程和性能監(jiān)控等方面,通過多個(gè)代碼示例,讀者可以掌握查看和管理數(shù)據(jù)庫(kù)實(shí)例的具體操作,這些方法和工具對(duì)于數(shù)據(jù)庫(kù)管理和維護(hù)非常重要,可以幫助我們確保數(shù)據(jù)庫(kù)的健康運(yùn)行
    2024-05-05

最新評(píng)論

平邑县| 肥乡县| 汶上县| 青海省| 华宁县| 雷州市| 泰州市| 化州市| 宣城市| 五莲县| 文登市| 汶川县| 兰坪| 河津市| 商水县| 噶尔县| 福海县| 舟曲县| 西安市| 琼结县| 济阳县| 仙居县| 迁西县| 武功县| 金昌市| 马鞍山市| 临泽县| 高淳县| 广宁县| 金川县| 津市市| 洛南县| 东莞市| 云梦县| 合川市| 宣化县| 介休市| 江源县| 扎赉特旗| 凌源市| 侯马市|