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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Mysql 的左連接與右連接區(qū)別1.SQL LEFT JOIN 關(guān)鍵字LEFT JOIN 關(guān)鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。2.SQL RIGHT JOIN 關(guān)鍵字RIGHT JOIN 關(guān)鍵字會右表 (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表進(jìn)行左連接(left join)?123/*以Job表進(jìn)行左連接,此時數(shù)據(jù)主要以Job表為主,關(guān)聯(lián)department表,如果Job的dep_id為null或者在department表中無對應(yīng)的Id匹配對應(yīng)的字段自動填充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表進(jìn)行右連接(right join)?123/*以Job表進(jìn)行右連接,此時數(shù)據(jù)主要以department表為主,關(guān)聯(lián)Job表,如果Job的dep_id為null或者在department表中無對應(yīng)的Id匹配對應(yīng)的字段自動填充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. 外連接 左連接結(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. 外連接 右連接結(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. 內(nèi)連接 內(nèi)連接的數(shù)據(jù)記錄中,不會存在字段為NULL的情況。可以簡單地認(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

溫馨提示

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

評論

0/150

提交評論