mysql如何進行多表查詢


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

 

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

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

1

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

例:

1

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字段信息相同作為條件建立兩表關聯,但在實際開發中不應該這樣使用,最好用主外鍵約束來實現

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

示例:

1

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指定,如

1

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、在表名后直接加表的別名實現

1

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語句或其它查詢語句中,任何可以使用表達式的地方都可以使用子查詢。例:

1

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

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

1

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

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

1

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實現,語法格式如下:

1

2

3

test_expression[NOT] IN{

 subquery

}

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

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

五、多表聯合查詢

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

1

SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten

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

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

六、復雜內連接查詢

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

1

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 語句將兩表連接起來,實現查詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM