mysql如何進行多表查詢

mysql進行多表查詢的方法:1、使用select子句進行查詢;2、使用表的別名進行查詢;3、通過內連接進行查詢;4、通過嵌套進行查詢;5、通過多表聯合進行查詢。

mysql如何進行多表查詢

MySQL如何進行多表查詢?下面本篇文章就來給大家介紹一些MySQL進行多表查詢的方法,希望對你們有所幫助。

(推薦教程:mysql視頻教程

一、使用SELECT子句進行多表查詢

SELECT?字段名?FROM?表1,表2?…?WHERE?表1.字段?=?表2.字段?AND?其它查詢條件

例:

SELECT?a.id,a.name,a.address,a.date,b.math,b.english,b.chinese?FROM?tb_demo065_tel?AS?b,tb_demo065?AS?a?WHERE?a.id=b.id

注:在上面的的代碼中,以兩張表的id字段信息相同作為條件建立兩表關聯,但在實際開發中不應該這樣使用,最好用主外鍵約束來實現

二、使用表的別名進行多表查詢

示例:

SELECT?a.id,a.name,a.address,b.math,b.english,b.chinese?FROM?tb_demo065??a,tb_demo065_tel??b?WHERE?a.id=b.id?AND?b.id='$_POST[textid]'

SQL語言中,可以通過兩種方式為表指定別名:

1、通過關鍵字AS指定,如

SELECT?a.id,a.name,a.address,b.math,b.english,b.chinese?FROM?tb_demo065?AS?a,tb_demo065_tel?AS?b?WHERE?a.id=b.id

2、在表名后直接加表的別名實現

SELECT?a.id,a.name,a.address,b.math,b.english,b.chinese?FROM?tb_demo065??a,tb_demo065_tel??b?WHERE?a.id=b.id

使用表的別名應注意幾下幾點

● (1別名通常是一個縮短了的表名,用于在連接中引用表中的特定列,如果連接中的多個表中有相同的名稱列存在,必須用表名或表的別名限定列名
● 如果定義了表的別名就不能再使用表名

三、簡單嵌套查詢(子查詢、內連接)

子查詢:子查詢是一個SELECT查詢,返回單個值且嵌套在SELECT、INSERT、UPDATE和delete語句或其它查詢語句中,任何可以使用表達式的地方都可以使用子查詢。例:

SELECT?id,name,sex,date?FROM?tb_demo068?WHERE?id?in(SELECT?id?FROM?tb_demo068?WHERE?id='$_POST[test]')

內連接:把查詢結果作為WHERE子句的查詢條件即稱為內連接

SELECT?filedlist?FROM?table1?[INNER]?JOIN?table2?ON?table1.column1?=?table2.column1

其中,filedlist是要顯示的字段,INNER表示表之間的連接方式為內連接,table1.column1=table2.column1用于指明兩表間的連接條件,如:

SELECT?a.name,a.address,a.date,b.chinese,b.math,b.english?FROM?tb_demo065?AS?a?INNER?JOIN?tb_demo065_tel?AS?b?on?a.id=b.id

四、復雜的嵌套查詢

多表之間的嵌套查詢可以通過謂詞IN實現,語法格式如下:

test_expression[NOT]?IN{ ?subquery }

參數說明:test_expression指SQL表達式,subquery包含某結果集的子查詢

多表嵌套查詢的原理:無論是多少張表進行嵌套,表與表之間一定存在某種關聯,通過WHERE子句建立此種關聯實現查詢

五、多表聯合查詢

利用SQL語句中的union,可以將不同表中符合條件的數據信息顯示在同一列中。例:

SELECT?*?FROM?tb_demo074_student?UNION?SELECT?*?FROM?tb_demo074_fasten

使用UNION時應注意以下兩點:

● 在使用UNION運算符組合的語句中,所有選擇列表的表達式數目必須相同,如列名、算術表達式及聚合函數等
● 在每個查詢表中,對應列的數據結構必須一樣。

六、復雜內連接查詢

復雜的內連接查詢是在基本的內連接查詢的基礎上再附加一些查詢條件,如:

SELECT?a.name,a.address,a.date,b.chinese,b.math,b.english?FROM?tb_demo065?AS?a?INNER?JOIN?tb_demo065_tel?AS?b?on?a.id=b.id?WHERE?b.id=(SELECT?id?FROM??tb_demo065?WHERE?tb_demo065.name='$_POST[text]')

總之,實現表與表之間的關聯的本質是兩表之間存在共同的數據項或者相同的數據項,通過WHERE 子句或內連接INNER JOIN … ON 語句將兩表連接起來,實現查詢。

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享