一天學會MySQL(三)

2021-10-05 11:35:35 字數 3105 閱讀 2637

內連線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 很簡單吧...