sql中的內聯和外聯(簡單用法)


有兩張表:user和department

User表:

CREATE TABLE `user` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(30) DEFAULT NULL,
   `age` int(11) DEFAULT NULL,
   `birthday` date DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) 

INSERT INTO USER VALUE(NAME,age,birthday) VALUES("張三",20,"2018-10-31");

表內數據如下:

  

部門表:

CREATE TABLE `department` (
   `id` bigint(11) NOT NULL,
   `name` varchar(10) NOT NULL,
   `descr` varchar(50) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) 

INSERT INTO department (id,NAME,descr) VALUES(1,"開發部","開發高級產品");

表內數據如下:

  

一、正常兩表聯合查詢的sql語句:

SELECT u.id,u.name,u.age,d.name,d.descr FROM USER u,department d WHERE u.id=d.id

查詢結果

 

 (或者:SELECT * FROM USER u,department d WHERE u.id=d.id)

 

二、左聯查詢sql語句:

SELECT * FROM USER u LEFT JOIN department d ON u.id=d.id

查詢結果:

 

根據查詢結果可以看出:左聯查詢把前面表(user)全部查出,右表只查出部分,左表有的右表沒有就為空

 

三、右聯查詢sql語句:

SELECT * FROM USER u RIGHT JOIN department d ON u.id=d.id

查詢結果:

 

根據結果可以看出:右聯查詢把后面表(department)全部查出,左表只查出部分,右表有的左表沒有就為空

 

四、內聯查詢sql語句:

SELECT * FROM USER u INNER JOIN department d ON u.id=d.id

 

其結果與SELECT * FROM USER u,department d WHERE u.id=d.id查詢結果一樣,查出兩表中滿足條件的記錄(是兩張表同時滿足哦)

 

還可以使用where或and帶條件查詢。

SELECT * FROM USER u INNER JOIN department d ON u.id=d.id AND u.age=20

查詢結果:

 

SELECT * FROM USER u LEFT JOIN department d ON u.id=d.id WHERE u.name LIKE '%王%'

 

SELECT * FROM USER u RIGHT JOIN department d ON u.id=d.id AND u.age=20

查詢結果:

 

 

根據以上可以看出:

1、使用外聯查詢時,添加and查詢條件,不影響內外聯查詢的性質,只是查詢的結果滿足查詢條件,添加where查詢條件時,只能查到滿足條件的記錄(結果與內聯查詢一樣)。

2、內聯查詢時,添加and或where條件時,查詢結果都一樣,只與查詢條件有關

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM