1. 程式人生 > >表的內連線和外連結(左連線和右連線)

表的內連線和外連結(左連線和右連線)

表的內連線

內連線是利用where子句對兩種表形成的笛卡爾積進行篩選。

select 欄位 from1 inner join2 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;

在這裡插入圖片描述