內連線inner join 或者 join
外連線1、左連線 left join 或者 left outer join
2.右連線 right join 或者 right outer join
3.完全外連線 full join 或者 full outer join
create database testjoin;
person表
id,name,
cardid
create table person(
id int,
name varchar(20),
cardid int
);card表
id,name
create table card(
id int,
name varchar(20)
);insert into card values(1,'飯卡');
insert into card values(2,'建行卡');
insert into card values(3,'農行卡');
insert into card values(4,'工商卡');
insert into card values(5,'郵政卡');
insert into person values(1,'張三',1);
insert into person values(2,'李四',3);
insert into person values(3,'王五',6);
--並沒有建立外來鍵
select * from person inner join card on person.cardid=card.id;
+------+------+--------+------+--------+
| id | name | cardid | id | name |
+------+------+--------+------+--------+
| 1 | 張三 | 1 | 1 | 飯卡 |
| 2 | 李四 | 3 | 3 | 農行卡|
+------+------+--------+------+--------+
--內聯查詢,其實就是兩張表中的資料,通過某個字段相對,查詢出相關記錄資料。
select * from person left join card on person.cardid=card.id;
+------+------+--------+------+--------+
| id | name | cardid | id | name |
+------+------+--------+------+--------+
| 1 | 張三 | 1 | 1 | 飯卡 |
| 2 | 李四 | 3 | 3 | 農行卡 |
| 3 | 王五 | 6 | null | null |
+------+------+--------+------+--------+
--左外連線,會把左邊表裡面的所有資料取出來,而右邊表中的資料,如果有相等的,就顯示出來
--如果沒有,就會補 null
select * from person right join card on person.cardid=card.id;
+------+------+--------+------+--------+
| id | name | cardid | id | name |
+------+------+--------+------+--------+
| 1 | 張三 | 1 | 1 | 飯卡 |
| null | null | null | 2 | 建行卡 |
| 2 | 李四 | 3 | 3 | 農行卡 |
| null | null | null | 4 | 工商卡 |
| null | null | null | 5 | 郵政卡 |
+------+------+--------+------+--------+
--右外連線,會把右邊表裡面的所有資料取出來,而左邊表中的資料,如果有相等的,就顯示出來
--如果沒有,就會補 null
select * from person full join card on person.cardid=card.id;
mysql> select * from person full join card on person.cardid=card.id;
error 1054 (42s22): unknown column 'person.cardid' in 'on clause'
報錯是因為mysql可能不支援全外連線
但是要執行的話可以:
select * from person left join card on person.cardid=card.id
union
select * from person right join card on person.cardid=card.id;
+------+------+--------+------+--------+
| id | name | cardid | id | name |
+------+------+--------+------+--------+
| 1 | 張三 | 1 | 1 | 飯卡 |
| 2 | 李四 | 3 | 3 | 農行卡 |
| 3 | 王五 | 6 | null | null |
| null | null | null | 2 | 建行卡 |
| null | null | null | 4 | 工商卡 |
| null | null | null | 5 | 郵政卡 |
+------+------+--------+------+--------+
一天學會MySQL(四)
1nf 資料表中的所有欄位都是不可分割的原子值?create table student2 id int primary key,name varchar 20 address varchar 30 insert into student2 values 1,張三 中國四川 insert into ...
Swift 一天學會,三天寫專案
最近v4.0框架班馬上要開班,很多同學有點焦慮!問為什麼?不會swift,完全沒有接觸過啊!內心換成一批 和諧學習,不急不躁!有我cooci在,你們怕啥!專門為大家寫下這篇部落格,一天快速入門swift,三天寫專案 很快就是週末了,希望你讀完這篇部落格之後這個週末的時間請留給 swift談到語法,我...
一天學會php 下
session的使用 session的作用很多,最多用的就是站點內頁面間變數傳遞。在頁面開始我們要session start 開啟session 然後就可以使用session變數了,比如說要賦值就是 session item item1 要得到值就 是 item1 session item 很簡單吧...