數據庫基礎—內連接與外連接

引用:https://www.cnblogs.com/skyxia/p/9927288.html

兩張表: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條件時,查詢結果都一樣,只與查詢條件有關

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章