MySQL數據庫基礎知識學習筆記(二)

sql語句實戰--表連接 (多表查詢)

標準SQL語句格式有以下4種:

ü 表內連接

Select col1,col2...from tab1,tab2 where tab1.col3=tab2.col3;

 Col1 列名  tab1表名  where tab1.col3=tab2.col3 連接條件

ü 表外連接(分兩種)

左連接

Select col1,col2... from tab1 left join tab2 on tab1.col3=tab2.col3;

右連接

Select col1,col2... from tab1 right join tab2 on tab1.col3=tab2.col3;

ü 子查詢

Select *from tab1 where col[in]|[=](select *from tab2 where col ...);


實戰場景:新建兩個表,並插入規定的數據,利用這兩個表,練習表的連接(內,左,右,子)                                    


1) 新建表A

Create table A

(id smallint(5) unsigned auto_increment,

Name varchar(50) not null,

Primary key (id)

) engine=innodb default charset=utf8;

Desc  A;

執行結果:

 image.png

可見有idname兩個字段。

 

2) 新建表B

Create table B

(id smallint(5) unsigned auto_increment,

Address  varchar(50) not null,

A_id smallint(5) unsigned,

Primary key (id)

) engine=innodb default charset=utf8;

Desc  B;

 

解釋:A_id表示和A關聯的ID


執行結果:

 image.png

可見有idaddressA_id三個字段

 

3) A表裏插數據:

Insert  into  A(name)

Values(''),(''),('');

 

執行結果:

 image.png


4) B表裏插數據:

Insert  into  B(address,A_id)

Values('北京',1),('上海',3),('天津',10);

執行結果:

image.png 

 

5) 執行內連接語句(首推此語句)

Select A.name, B.address from A,B where A.id = B.A_id;

解釋:查找A表裏的name字段和B表裏的address字段,條件是A表裏的id字段和B表裏的A_id字段做連接。

 

執行結果:

image.png

 

6) 執行左連接語句

Select A.name, B.address from A left join B on A.id = B.A_id;

解釋:左連接是以左側的列爲主,右側的列去匹配左側的,如果匹配不上,則爲空;

執行結果:

image.png 

從結果可以看出,右側的第三行address沒有匹配上,所以爲空。


7) 執行右連接語句

Select A.name, B.address from A right join B on A.id = B.A_id;

解釋:右連接是以右側的列爲主,左側的列去匹配右側的,如果匹配不上,則爲空;

執行結果:

 image.png

從結果可以看出,左側的第三行name沒有匹配上,所以爲空。

 

8) 子查詢語句

Select * from A where id in (select A_id from B where address = 北京);

解釋:括號裏的意思是從B表裏找address是北京的對應的A_id

然後再和A表的id去匹配。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章