mysql之左連接與右連接.docx_第1頁
mysql之左連接與右連接.docx_第2頁
mysql之左連接與右連接.docx_第3頁
mysql之左連接與右連接.docx_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Mysql 的左連接與右連接區(qū)別1.SQL LEFT JOIN 關鍵字LEFT JOIN 關鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。2.SQL RIGHT JOIN 關鍵字RIGHT JOIN 關鍵字會右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中沒有匹配的行。3.在Mysql中的DevDB中創(chuàng)建兩個表Create Table departmentCREATE TABLE department (ID int(11) NOT NULL AUTO_INCREMENT,CODE varchar(100) DEFAULT NULL,NAME varchar(200) DEFAULT NULL,PRIMARY KEY (ID) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 Create Table jobCREATE TABLE job (id int(11) NOT NULL AUTO_INCREMENT,FirstName varchar(32) DEFAULT NULL,LastName varchar(32) DEFAULT NULL,LoginName varchar(32) DEFAULT NULL,dep_id int(11) DEFAULT NULL,PRIMARY KEY (id) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf84.在department表和Job表中插入數(shù)據(jù)?12345insert into department (ID, CODE, NAME) values(1,Java R&D,Java R&D);insert into department (ID, CODE, NAME) values(2,Mysql R&D,Mysql R&D);insert into department (ID, CODE, NAME) values(3,Interface R&D,Interface R&D);insert into department (ID, CODE, NAME) values(4,Android R&D,Android R&D);insert into department (ID, CODE, NAME) values(5,IOS R&D,IOS R&D);?12345insert into Job (id, FirstName, LastName, LoginName, dep_id) values(1,Peter,Qiu,Qiu,1);insert into Job (id, FirstName, LastName, LoginName, dep_id) values(2,Tom,Lee,Lee,2);insert into Job (id, FirstName, LastName, LoginName, dep_id) values(3,Garfield,Wang,Wang,3);insert into Job (id, FirstName, LastName, LoginName, dep_id) values(4,哆啦A夢,Jone,Jone,NULL);insert into Job (id, FirstName, LastName, LoginName, dep_id) values(5,Westlife,西城男孩,Westlife,8);department表數(shù)據(jù)IDCODENAME1Java R&DJava R&D2Mysql R&DMysql R&D3Interface R&DInterface R&D4Android R&DAndroid R&D5IOS R&DIOS R&DJob表數(shù)據(jù)idFirstNameLastNameLoginNamedep_id1PeterQiuQiu12TomLeeLee23GarfieldWangWang34哆啦A夢JoneJone(NULL)5Westlife西城男孩Westlife85.以Job表進行左連接(left join)?123/*以Job表進行左連接,此時數(shù)據(jù)主要以Job表為主,關聯(lián)department表,如果Job的dep_id為null或者在department表中無對應的Id匹配對應的字段自動填充null*/SELECT * FROM Job table_name1 LEFT JOIN department table_name2 ON table_name1.dep_id= table_name2.ID;查出來的數(shù)據(jù)idFirstNameLastNameLoginNamedep_idIDCODENAME1PeterQiuQiu11Java R&DJava R&D2TomLeeLee22Mysql R&DMysql R&D3GarfieldWangWang33Interface R&DInterface R&D4哆啦A夢JoneJone(NULL)(NULL)(NULL)(NULL)5Westlife西城男孩Westlife8(NULL)(NULL)(NULL)6.以Job表進行右連接(right join)?123/*以Job表進行右連接,此時數(shù)據(jù)主要以department表為主,關聯(lián)Job表,如果Job的dep_id為null或者在department表中無對應的Id匹配對應的字段自動填充null*/SELECT * FROM Job table_name1 RIGHT JOIN department table_name2 ON table_name1.dep_id= table_name2.ID;查出來的數(shù)據(jù)idFirstNameLastNameLoginNamedep_idIDCODENAME1PeterQiuQiu11Java R&DJava R&D2TomLeeLee22Mysql R&DMysql R&D3GarfieldWangWang33Interface R&DInterface R&D(NULL)(NULL)(NULL)(NULL)(NULL)4Android R&DAndroid R&D(NULL)(NULL)(NULL)(NULL)(NULL)5IOS R&DIOS R&D腳本如下: drop table table1; CREATE TABLE andrew.table1 ( name VARCHAR(32) NOT NULL, city VARCHAR(32) NOT NULL ) ENGINE = MyISAM; insert into TABLE1(name, city) values (Person A, BJ); insert into TABLE1(name, city) values (Person B, BJ); insert into TABLE1(name, city) values (Person C, SH); insert into TABLE1(name, city) values (Person D, SZ); commit; drop table table2; CREATE TABLE andrew.table2 ( name VARCHAR(32) NOT NULL, city VARCHAR(32) NOT NULL ) ENGINE = MyISAM; insert into TABLE2(name, city) values (Person W, BJ); insert into TABLE2(name, city) values (Person X, SH); insert into TABLE2(name, city) values (Person Y, SH); insert into TABLE2(name, city) values (Person Z, NJ); commit; 1. 外連接 左連接結果 table1居左,故謂之左連接。這種情況下,以table1為主,即table1中的所有記錄均會被列出。有一下三種情況: a. 對于table1中的每一條記錄對應的城市如果在table2中也恰好存在而且剛好只有一條,那么就會在 返回的結果中形成一條新的記錄。如上面Person A和Person B對應的情況。 b. 對于table1中的每一條記錄對應的城市如果在table2中也恰好存在而且有N條,那么就會在返回的結果中形成N條新的記錄。如上面的Person C對應的情況。 c. 對于table1中的每一條記錄對應的城市如果在table2中不存在,那么就會在返回的結果中形成一條 條新的記錄,且該記錄的右邊全部NULL。如上面的Person D對應的情況。 不符合上面三條規(guī)則的記錄不會被列出。 2. 外連接 右連接結果 table2居右,故謂之右連接。這種情況下,以table2為主,即table2中的所有記錄均會被列出。有一下三種情況: a. 對于table2中的每一條記錄對應的城市如果在table1中也恰好存在而且剛好只有一條,那么就會在 返回的結果中形成一條新的記錄。如上面Person X和Person Y對應的情況。 b. 對于table2中的每一條記錄對應的城市如果在table1中也恰好存在而且有N條,那么就會在返回的結果中形成N條新的記錄。如上面的Person W對應的情況。 c. 對于table2中的每一條記錄對應的城市如果在table1中不存在,那么就會在返回的結果中形成一條 條新的記錄,且該記錄的左邊全部NULL。如上面的Person Z對應的情況。 不符合上面三條規(guī)則的記錄不會被列出。 3. 內連接 內連接的數(shù)據(jù)記錄中,不會存在字段為NULL的情況。可以簡單地認為,內鏈接的結果就是在左連接或者右連接的結果中剔除存在字段為NULL的記錄后所得到的結果。甚至可以認為,如果兩個表中僅分別剩下內連接運算后所得的數(shù)據(jù)記錄,如table1中只有Person A、Person B和Person C,table2中只有Person W、Person X和Person Y

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論