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