自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL左連接、右連接和內(nèi)連接詳解

數(shù)據(jù)庫 MySQL
本文向您簡單介紹MySQL的ySQL左連接、右連接和內(nèi)連接,并對具體的操作情況給出簡單示例。

以MySql為例。在MySQL數(shù)據(jù)庫中建立兩張數(shù)據(jù)表,并分別插入一些數(shù)據(jù)。

示例腳本如下:

  1.  drop table table1;   
  2.   CREATE TABLE `andrew`.`table1`   
  3.   (   
  4.   `nameVARCHAR(32) NOT NULL,   
  5.   `city` VARCHAR(32) NOT NULL   
  6.   )   
  7.   ENGINE = MyISAM;   
  8.   insert into TABLE1(name, city) values ('Person A''BJ');   
  9.   insert into TABLE1(name, city) values ('Person B''BJ');   
  10.   insert into TABLE1(name, city) values ('Person C''SH');   
  11.   insert into TABLE1(name, city) values ('Person D''SZ');   
  12.   commit;   
  13.   drop table table2;   
  14.   CREATE TABLE `andrew`.`table2`   
  15.   (   
  16.   `nameVARCHAR(32) NOT NULL,   
  17.   `city` VARCHAR(32) NOT NULL   
  18.   )   
  19.   ENGINE = MyISAM;   
  20.   insert into TABLE2(name, city) values ('Person W''BJ');   
  21.   insert into TABLE2(name, city) values ('Person X''SH');   
  22.   insert into TABLE2(name, city) values ('Person Y''SH');   
  23.   insert into TABLE2(name, city) values ('Person Z''NJ');   
  24.   commit

1. MySQL外連接 – 左連接結(jié)果

table1居左,故謂之左連接。這種情況下,以table1為主,即table1中的所有記錄均會被列出。有一下三種情況:

a. 對于table1中的每一條記錄對應(yīng)的城市如果在table2中也恰好存在而且剛好只有一條,那么就會在

返回的結(jié)果中形成一條新的記錄。如上面Person A和Person B對應(yīng)的情況。

b. 對于table1中的每一條記錄對應(yīng)的城市如果在table2中也恰好存在而且有N條,那么就會在返回的結(jié)果中形成N條新的記錄。如上面的Person C對應(yīng)的情況。

c. 對于table1中的每一條記錄對應(yīng)的城市如果在table2中不存在,那么就會在返回的結(jié)果中形成一條

條新的記錄,且該記錄的右邊全部NULL。如上面的Person D對應(yīng)的情況。

不符合上面三條規(guī)則的記錄不會被列出。

2. MySQL外連接 – 右連接結(jié)果

table2居右,故謂之右連接。這種情況下,以table2為主,即table2中的所有記錄均會被列出。有一下三種情況:

a. 對于table2中的每一條記錄對應(yīng)的城市如果在table1中也恰好存在而且剛好只有一條,那么就會在

返回的結(jié)果中形成一條新的記錄。如上面Person X和Person Y對應(yīng)的情況。

b. 對于table2中的每一條記錄對應(yīng)的城市如果在table1中也恰好存在而且有N條,那么就會在返回的結(jié)果中形成N條新的記錄。如上面的Person W對應(yīng)的情況。

c. 對于table2中的每一條記錄對應(yīng)的城市如果在table1中不存在,那么就會在返回的結(jié)果中形成一條

條新的記錄,且該記錄的左邊全部NULL。如上面的Person Z對應(yīng)的情況。

不符合上面三條規(guī)則的記錄不會被列出。

3. MySQL內(nèi)連接

MySQL內(nèi)連接的數(shù)據(jù)記錄中,不會存在字段為NULL的情況??梢院唵蔚卣J(rèn)為,內(nèi)鏈接的結(jié)果就是在左連接或者右連接的結(jié)果中剔除存在字段為NULL的記錄后所得到的結(jié)果。甚至可以認(rèn)為,如果兩個表中僅分別剩下內(nèi)連接運算后所得的數(shù)據(jù)記錄,如table1中只有Person A、Person B和Person C,table2中只有Person W、Person X和Person Y,那么這兩個表的之間的左連接和右連接的返回的結(jié)果是一樣的。

注意:select * from table1 a inner join table2 b on a.city = b.city 和select * from table1 a join table2 b on a.city = b.city 的效果是一樣的,即如果join的左邊沒有諸如left、right或者inner這樣的關(guān)鍵字時,缺省的是內(nèi)連接。另外,MySQL不支持full join。

 

【編輯推薦】

  1. MySQL數(shù)據(jù)庫性能優(yōu)化的關(guān)鍵參數(shù)
  2. MySQL將采用新的開發(fā)和發(fā)布模式
  3. MySQL中隱藏空間問題淺析
  4. 如何在NetBeans中連接MySQL數(shù)據(jù)庫
  5. MySQL索引分類和各自用途
責(zé)任編輯:佚名 來源: IT專家網(wǎng)
相關(guān)推薦

2015-08-21 13:50:49

Oracle連接

2010-09-17 16:17:13

SQL內(nèi)連接

2011-03-28 14:04:10

SQL左連接右連接

2010-11-08 15:47:01

SQL Server外

2010-11-11 13:51:36

SQL Server內(nèi)

2010-11-23 10:34:04

MySQL左連接查詢

2010-11-04 15:56:13

DB2內(nèi)連接查詢

2011-06-24 10:54:34

Qt Mysql

2010-04-20 08:53:42

Oracle左連接

2010-08-26 11:48:30

DB2外連接交叉連接

2017-08-31 14:57:53

數(shù)據(jù)庫MySQLJOIN

2009-09-24 15:53:00

Hibernate J

2018-06-06 11:01:25

HTTP長連接短連接

2021-03-24 09:06:01

MySQL長連接短連接

2011-06-01 13:54:10

MySQL

2010-05-10 15:48:37

Unix連接

2010-08-24 09:29:37

內(nèi)連接全連接

2010-09-26 14:12:35

SQL內(nèi)連接

2011-07-04 17:18:23

Qt SQLite 數(shù)據(jù)庫

2009-11-26 08:52:04

XManager連接O
點贊
收藏

51CTO技術(shù)棧公眾號