表的內連線和外連結(左連線和右連線)
阿新 • • 發佈:2018-12-28
表的內連線
內連線是利用where子句對兩種表形成的笛卡爾積進行篩選。
select 欄位 from 表1 inner join 表2 on 連線條件 and 其他條件;
inner可以省略
and可以換成where
例:顯示SMITH的名字和部門名稱
emp表:
dept表:
select ename,dname from emp,dept where emp.deptno=dept.deptno and ename ='SMITH';
select ename,dname from emp inner join dept on emp.deptno=dept. deptno and ename ='SMITH';
select ename,dname from emp inner join dept on emp.deptno=dept.deptno where ename ='SMITH';
select ename,dname from emp join dept on emp.deptno=dept.deptno where ename ='SMITH';
外連線
左連線
左連線是把左邊的表資料全部顯示,而右邊表資料會進行篩選。
當左邊表和右邊表沒有匹配時,也會顯示左邊表的資料
select 欄位名 from 表名1 left join 表名2 on 連線條件
首先建兩張表person和hobby,對應的是個人喜歡的東西
mysql> create table person(
-> id int,
-> name varchar(11),
-> sex varchar(3));
mysql> create table hobby(
-> id int,
-> favour varchar(10));
給person插入資料
mysql> insert into person values(1,'pick' ,'男'),(2,'sopha','女'),(3,'alice','女');
給hobby插入資料
mysql> insert into hobby values(1,'vollable'),(2,'run'),(24,'swing');
查詢所有人的愛好,如果這個人沒有愛好,也要將他個人資訊顯示出來:
//利用左連線
mysql> select * from person left join hobby on person.id=hobby.id;
右連線
將右邊表資訊全部顯示出來,左邊表資料會進行篩選
select 欄位 from 表名1 right join 表名2 on 連線條件;
查詢有愛好的人資訊:
mysql> select * from person right join hobby on person.id=hobby.id;