利用連接條件將多個表關聯起來,這就是表連接(JOIN),透過表連接可以獲取多個表之間的資料
表格連線語法:
SELECT 表格名稱1.欄位名稱, 表格名稱2.欄位名稱FROM 表1, 表2 WHERE 條件
#表連接的幾種方式:
內連接: join 或inner join
自連接: 同一張表內的連接
外部連接:
左外連接, left join
右外連接, right join
全外連接, full join
資料(table1):
#內連接
內連接是從結果表中刪除與其他被連接表中沒有匹配的所有行. (交集)
格式:
)SELECT A .c1, B.c2 FROM A JOIN B ON A.c3 = B.c3
範例:<?php $conn = mysqli_connect("localhost", "root","admin","study"); if ($conn) { echo "数据库链接成功\n"; } else { echo mysqli_connect_error(); } # SQL语句 $SQL = "SELECT table1.name, table1.age, table2.class FROM table1 JOIN table2 ON table1.name = table2.name"; # 执行 $result = mysqli_query($conn, $SQL); # 查看是否执行成功 if ($result) { echo "SQL 语句执行成功!\n"; }else { echo mysqli_error($conn); } # 调试输出 while ($line = mysqli_fetch_assoc($result)) { print_r($line); } # 关闭连接 mysqli_close($conn); ?>
輸出結果:
#資料庫鏈接成功
SQL 語句執行成功!
Array
(
[name] =>楊富貴
[age] => 18
[class] => 數學課
)
Array
(
[name] => 楊美麗
[age] => 19[class] => 語言課
[name] => 楊建國
[age] => 20[class] => 英文課
)#左連接
包含做表的全部行(不管右表是否存在與之匹配的行), 以及右表中全部匹配的行.
格式:
)#SELECT A.c1, B.c2 FROM A LEFT JOIN B ON A.c3 = B.c3
範例:<?php $conn = mysqli_connect("localhost", "root","admin","study"); if ($conn) { echo "数据库链接成功\n"; } else { echo mysqli_connect_error(); } # SQL语句 $SQL = "SELECT table1.name, table1.age, table2.class FROM table1 LEFT JOIN table2 ON table1.name = table2.name"; # 执行 $result = mysqli_query($conn, $SQL); # 查看是否执行成功 if ($result) { echo "SQL 语句执行成功!\n"; }else { echo mysqli_error($conn); } # 调试输出 while ($line = mysqli_fetch_assoc($result)) { print_r($line); } # 关闭连接 mysqli_close($conn); ?>
輸出結果:
資料庫連結成功
SQL 語句執行成功!
Array
(
[name] =>楊富貴
[age] => 18
[class] = > 數學課
)
Array
(
[name] => 楊美麗
[age] => 19
[class] => 語言課
)
Array
(
[name] => 楊建國
[age] => 20[class] => 英文課
[name] => 楊鐵柱
[age] => 21[class] =>
)右邊連接
包含右表的全部行(不管左表是否存在與之匹配的行), 以及左表中全部匹配的行.
格式:
)SELECT A .c1, B.c2 FROM A RIGHT JOIN B ON A.c3 = B.c3
範例:<?php $conn = mysqli_connect("localhost", "root","admin","study"); if ($conn) { echo "数据库链接成功\n"; } else { echo mysqli_connect_error(); } # SQL语句 $SQL = "SELECT table1.name, table1.age, table2.class FROM table1 RIGHT JOIN table2 ON table1.name = table2.name"; # 执行 $result = mysqli_query($conn, $SQL); # 查看是否执行成功 if ($result) { echo "SQL 语句执行成功!\n"; }else { echo mysqli_error($conn); } # 调试输出 while ($line = mysqli_fetch_assoc($result)) { print_r($line); } # 关闭连接 mysqli_close($conn); ?>
輸出結果:
#資料庫連結成功
SQL 語句執行成功!
Array
(
[name] =>楊富貴
[age] => 18
[class] => 數學課
)
Array
(
[name] => 楊美麗
[age] => 19
[class] => 語言課
)
Array
(
[name] => 楊建國
[age] => 20[class] => 英文課
[name] =>
[age] =>[class] => 歷史課
)包含左右兩個表的全部行(不管在另一個表中是否存在與之匹配的行).
全連線
格式:
SELECT A.c1, B.c2 FROM A LEFT JOIN B ON A.c3 = B.c3UNION)###Array###(###[name] =>###[age] =>###[class] => 歷史課###)######SELECT A.c1, B.c2 FROM A RIGHT JOIN B ON A.c3 = B.c3
範例:<?php $conn = mysqli_connect("localhost", "root","admin","study"); if ($conn) { echo "数据库链接成功\n"; } else { echo mysqli_connect_error(); } # SQL语句 $SQL = "SELECT table1.name, table1.age, table2.class FROM table1 LEFT JOIN table2 ON table1.name = table2.name UNION SELECT table1.name, table1.age, table2.class FROM table1 RIGHT JOIN table2 ON table1.name = table2.name"; # 执行 $result = mysqli_query($conn, $SQL); # 查看是否执行成功 if ($result) { echo "SQL 语句执行成功!\n"; }else { echo mysqli_error($conn); } # 调试输出 while ($line = mysqli_fetch_assoc($result)) { print_r($line); } # 关闭连接 mysqli_close($conn); ?>
輸出結果:
資料庫連結成功
SQL 語句執行成功!
Array
(
[name] =>楊富貴
[age] => 18
[class] => 數學課
)
Array
(
[name] => 楊美麗
[age] = > 19
[class] => 語言課
)
Array
(
[name] =>楊建國
[age] => 20
[ class] => 英語課
)
Array
(
[name] => 楊鐵柱
[age] => 21[class] =>
以上是MySQL與PHP中的資料表連接怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!