在使用數據庫查詢(xún)語(yǔ)句時(shí),單表的查詢(xún)有時(shí)候不能滿(mǎn)足項目的業(yè)務(wù)需求;在項目開(kāi)發(fā)過(guò)程中,有很多需求都是要涉及到多表的連接查詢(xún)。
連接查詢(xún):也可以叫跨表查詢(xún),需要關(guān)聯(lián)多個(gè)表進(jìn)行查詢(xún)。
以下通過(guò)兩表實(shí)例來(lái)詳細介紹連接的使用方式。
department表:
建表語(yǔ)句:
DROP TABLE IF EXISTS `department`;CREATE TABLE `department` ( `id` int(11) NOT AUTO_INCREMENT, `deptName` varchar(30) DEFAULT , `address` varchar(40) DEFAULT , PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;表數據:
INSERT INTO `department`VALUES ('1', '研發(fā)部(RD)', '2層');INSERT INTO `department`VALUES ('2', '人事部(HR)', '3層');INSERT INTO `department`VALUES ('3', '市場(chǎng)部(MK)', '4層');INSERT INTO `department`VALUES ('4', '后勤部(MIS)', '5層');INSERT INTO `department`VALUES ('5', '財務(wù)部(FD)', '6層');
employee表:
建表語(yǔ)句:
DROP TABLE IF EXISTS `employee`;CREATE TABLE `employee` ( `id` int(11) NOT AUTO_INCREMENT, `name` varchar(20) DEFAULT , `dep_id` int(11) DEFAULT , `age` int(11) DEFAULT , `salary` decimal(10,2) DEFAULT , `cus_id` int(11) DEFAULT , PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8;表數據:
INSERT INTO `employee`VALUES ('1', '魯班', '1', '10', '1000.00', '1');INSERT INTO `employee`VALUES ('2', '后裔', '1', '20', '2000.00', '1');INSERT INTO `employee`VALUES ('3', '孫尚香', '1', '20', '2500.00', '1');INSERT INTO `employee`VALUES ('4', '凱', '4', '20', '3000.00', '1');INSERT INTO `employee`VALUES ('5', '典韋', '4', '40', '3500.00', '2');INSERT INTO `employee`VALUES ('6', '貂蟬', '6', '20', '5000.00', '1');INSERT INTO `employee`VALUES ('7', '孫臏', '6', '50', '5000.00', '1');INSERT INTO `employee`VALUES ('8', '蔡文姬', '30', '35', '4000.00', '1');
下面進(jìn)入正題!
01 內連接
圖示:
作用:查詢(xún)兩張表的共有部分
語(yǔ)句:
Select <select_list> from tableA AInner join tableB Bon A.Key = B.Key原表數據:
示例:
SELECT * from employee eINNER JOIN department don e.depart_id = d.id;
查詢(xún)結果數據:
02 左連接
圖示:

作用:把左邊表的內容全部查出,右邊表只查出滿(mǎn)足條件的記錄
語(yǔ)句:
Select <select_list> from tableA ALeft Join tableB Bon A.Key = B.Key原表數據:

示例:
SELECT * from employee eLEFT JOIN department don e.depart_id = d.id;
查詢(xún)結果數據:

03 右連接
圖示:

作用:把右邊表的內容全部查出,左邊表只查出滿(mǎn)足條件的記錄
語(yǔ)句:
Select <select_list> from tableA ALeft Join tableB Bon A.Key = B.Key原表數據:

示例:
SELECT * from employee eRIGHT JOIN department don e.depart_id = d.id;
查詢(xún)結果數據:

04 查詢(xún)左表獨有數據
圖示:

作用:查詢(xún)A的獨有數據
語(yǔ)句:
Select <select_list> from tableA ALeft Join tableB Bon A.Key = B.Key where B.key IS 原表數據:

示例:
SELECT * from employee eLEFT JOIN department don e.depart_id = d.id WHERE d.id IS ;
查詢(xún)結果數據:

05 查詢(xún)右表獨有數據
圖示:

作用:查詢(xún)B的獨有數據
語(yǔ)句:
Select <select_list> from tableA ARight Join tableB Bon A.Key = B.Key where A.key IS 原表數據:

示例:
SELECT * from employee eRIGHT JOIN department don e.depart_id = d.id WHERE e.id IS ;
查詢(xún)結果數據:

06 全連接
圖示:

作用:查詢(xún)兩個(gè)表的全部信息
語(yǔ)句:
Select <select_list> from tableA A Full Outter Join tableB B on A.Key = B.Key注:Mysql默認不支持此種寫(xiě)法;Oracle支持,在Mysql中可以使用UNION來(lái)實(shí)現相應操作。
原表數據:

示例:
SELECT * from employee eLEFT JOIN department don e.depart_id = d.idUNIONSELECT * from employee eRIGHT JOIN department don e.depart_id = d.id
查詢(xún)結果數據:

07 查詢(xún)左右表各自的獨有的數據
圖示:

作用:查詢(xún)A和B各自的獨有的數據
語(yǔ)句:
Select <select_list> from tableA A Full Outter Join tableB B on A.Key = B.Key where A.key = or B.key=原表數據:

示例:
SELECT * from employee eLEFT JOIN department don e.depart_id = d.id WHERE d.id isUNIONSELECT * from employee eRIGHT JOIN department don e.depart_id = d.idWHERE e.depart_id is
查詢(xún)結果數據:

End.
聯(lián)系客服