join 按照功能大致分為如下三類:
a inner join b on 條件(內連線,或等值連線):獲取兩個表中字段匹配關係的記錄。
a left join b on條件(左連線):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
a right join b on 條件(右連線): 與 left join 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。
內連線查詢
inner join子句的語法如下:
selectcolumn_list
fromt1
innerjoint2onjoin_condition1
innerjoint3onjoin_condition2
...wherewhere_conditions;
mysql inner join支援使用等於以外的運算子,但是也可以使用大於(>),小於()運算子的其他運算子來形成連線謂詞。
例項:#兩張表的資料如下:
mysql>select*fromgirl;
+-----+--------+
|hid|bname|
+-----+--------+
|3|默默|
|2|羞羞|
|5|海燕|
+-----+--------+
3rowsinset(0.00sec)
mysql>select*fromboy;
+-----+--------+
|hid|bname|
+-----+--------+
|1|lisi|
|2|王五|
|3|趙六|
+-----+--------+
3rowsinset(0.00sec)
#查詢boy表和girl表中hid想同的bname。
mysql>selectboy.hid,boy.bname,girl.hid,girl.bname
->from
->boyinnerjoingirlonboy.hid=girl.hid;
+-----+--------+-----+--------+
|hid|bname|hid|bname|
+-----+--------+-----+--------+
|3|趙六|3|默默|
|2|王五|2|羞羞|
+-----+--------+-----+--------+
2rowsinset(0.01sec)
#查詢boy和girl表中資料,boy.hid=3的行.
mysql>selectboy.hid,boy.bname,girl.hid,girl.bnamefromboyinnerjoingirlonboy.hid=girl.hidwhereboy.hid=3;
+-----+--------+-----+--------+
|hid|bname|hid|bname|
+-----+--------+-----+--------+
|3|趙六|3|默默|
+-----+--------+-----+--------+
1rowinset(0.00sec)
#查詢boy和girl表中資料,」boy.hid=girl.hid=3「的行.
mysql>selectboy.hid,boy.bname,girl.hid,girl.bnamefromboyinnerjoingirlonboy.hid=girl.hidwhereboy.hidandgirl.hid=3;
+-----+--------+-----+--------+
|hid|bname|hid|bname|
+-----+--------+-----+--------+
|3|趙六|3|默默|
+-----+--------+-----+--------+
1rowinset(0.00sec)
注意:在匹配階段 where 子句的條件都不會被使用.僅在匹配階段完成以後,where 子句條件才會被使用。它將從匹配階段產生的資料中檢索過濾.
左連線查詢
mysql left join 與 join 有所不同,mysql left join 會讀取左邊資料表的全部資料,即便右邊表無對應資料.
例項:#以左表所有的資料為準,查詢右表所有的資料,匹配不到以"null"代替。
mysql>selectboy.hid,boy.bname,girl.hid,girl.bnamefromboyleftjoingirlonboy.hid=girl.hid;
+-----+--------+------+--------+
|hid|bname|hid|bname|
+-----+--------+------+--------+
|3|趙六|3|默默|
|2|王五|2|羞羞|
|1|lisi|null|null|
+-----+--------+------+--------+
3rowsinset(0.00sec)
注意:如果 b 表中沒有任何一行資料匹配 on 的條件,將會額外生成一行所有列為 null 的資料。
右連線查詢
mysql right join 會讀取右邊資料表的全部資料,即便左邊邊表無對應資料。
mysql>selectboy.hid,boy.bname,girl.hid,girl.bnamefromboyrightjoingirlonboy.hid=girl.hid;
+------+--------+-----+--------+
|hid|bname|hid|bname|
+------+--------+-----+--------+
|2|王五|2|羞羞|
|3|趙六|3|默默|
|null|null|5|海燕|
+------+--------+-----+--------+
3rowsinset(0.00sec)
三種連線的區別:
mysql連線教程 MySQL 連線
mysql 連線 使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 mysql 命...
mysql連線的使用 mysql連線的使用
表一 myclass myclass 用作左表 表二 me me 用作右表 使用 mysql 的 join 在兩個或多個表中查詢資料 你可以在 select,update 和 delete 語句中使用 mysql 的 join 來聯合多表查詢。join 按照功能大致分為如下三類 inner join...
mysql教程連線 mysql怎麼連線服務
連線mysql可以使用二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例如以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示視窗...