天天看點

Mysql資料庫的内連接配接,外連接配接,全連接配接知識點回顧

又要寫一個部落格了,真是讨厭啊,一直靠百度活着,sql還寫錯了,真是醉了讓自己。

資料庫表的連接配接:

一,内連結又叫等值連接配接:就是求兩個表相同的部分;内連接配接:在每個表中找出符合條件的共有記錄。[x inner join y on...]

這裡用網上的資料表做解釋吧:嘿嘿

二,外連接配接:左連接配接,右連接配接和全連接配接。

2,左連接配接的應用執行個體:

根據左表的記錄,在被連接配接的右表中找出符合條件的記錄與之比對,如果找不到與左表比對的,用null表示:

Mysql資料庫的内連接配接,外連接配接,全連接配接知識點回顧

文法格式:

Select * from tableA  left join tableB

On tableA.column1=tableB.column2;

Mysql資料庫的内連接配接,外連接配接,全連接配接知識點回顧

編寫一個 SQL 查詢,滿足條件:無論 person 是否有位址資訊,都需要基于上述兩表提供 person 的以下資訊:

FirstName, LastName, City, State
      

# Write your MySQL query statement below

select a.FirstName, a.LastName, b.City,b.State from

 Person as a left join Address as b

on a.PersonId=b.PersonId

是以分析,以Person表為主,都要有位址資訊。規律,就是以哪個表為主就以何種方式連接配接。

3.右連接配接:根據右表的記錄,在被連接配接的左表中找出符合條件的記錄與之比對,如果找不到比對的,用null填充。[x right [outer] join y on...]

Mysql資料庫的内連接配接,外連接配接,全連接配接知識點回顧

右連接配接語句為

“Select * from tableA

right  join  tableB

On tableA.column1=tableB.column2;

4.全連接配接:傳回符合條件的所有表的記錄,沒有與之比對的,用null表示(結果是左連接配接和右連接配接的并集)

第一種寫法:(full join .. on ..)

三,自連接配接

前面介紹左連接配接、右連接配接都是必須有一張主表,另一張表是可選的,即比對的從表中的行不一定必須存在。

在全連接配接中,兩個表都是從表,在這種情況下,表A和表B的行比對,則會傳回表A中所有的行,即使它在表B中沒有比對的行,表B中所有的行,即使它在表A中沒有比對的行,即傳回表A和表B中所有的行,不論表A或表B中的行在另一張表中是否有比對。

Mysql資料庫的内連接配接,外連接配接,全連接配接知識點回顧

MySQL資料庫中不提供全連接配接,可用left join和right join将兩張表的資料取出,再用union去重。

文法:Select * from tableA  left join tableB

Ontable A.column1 = tableB.column1

Union

Select * from tableA right join tableB

OntableA.column1 = tableB.column1;