有兩張表:user和department User表: CREATE TABLE `user` ( INSERT INTO USER VALUE(NAME,age,birthday) VALUES("張三",20,"2018-10-31"); 表內數據如下: 部門表: CREATE TABLE `department` ( 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條件時,查詢結果都一樣,只與查詢條件有關
|