《Mysql應(yīng)用Mysql中的join操作》要點(diǎn):
本文介紹了Mysql應(yīng)用Mysql中的join操作,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
MYSQL學(xué)習(xí)?join的類型
MYSQL學(xué)習(xí)1.? 內(nèi)聯(lián)結(jié):將兩個(gè)表中存在聯(lián)結(jié)關(guān)系的字段符合聯(lián)結(jié)關(guān)系的那些記錄形成記錄集的聯(lián)結(jié).
MYSQL學(xué)習(xí)2.? 外聯(lián)結(jié):分為外左聯(lián)結(jié)和外右聯(lián)結(jié).
MYSQL學(xué)習(xí)案例背景
MYSQL學(xué)習(xí)
create table java (name varchar(255));
insert into java values ('java1'),('java2'),('blue');
create table mysql (name varchar(255));
insert into mysql values ('mysql1'),('mysql2'),('blue');
MYSQL學(xué)習(xí)內(nèi)聯(lián)結(jié)
MYSQL學(xué)習(xí)
select * from java,mysql where java.name=mysql.name;
SELECT * FROM java JOIN mysql ON java.name=mysql.name;
SELECT * FROM java INNER JOIN mysql ON java.name=mysql.name;
SELECT * FROM java CROSS JOIN mysql ON java.name=mysql.name;
SELECT * FROM java STRAIGHT_JOIN mysql ON java.name=mysql.name;
MYSQL學(xué)習(xí)這四個(gè)語(yǔ)句都是內(nèi)聯(lián)結(jié),返回結(jié)果都是
MYSQL學(xué)習(xí)
+------+------+
| name | name |
+------+------+
| blue | blue |
+------+------+
MYSQL學(xué)習(xí)內(nèi)聯(lián)結(jié)的語(yǔ)法如下:
MYSQL學(xué)習(xí)
join_table:
table_reference [INNER | CROSS] JOIN table_factor [join_condition]
| table_reference STRAIGHT_JOIN table_factor
| table_reference STRAIGHT_JOIN table_factor ON condition
MYSQL學(xué)習(xí)外聯(lián)結(jié)
MYSQL學(xué)習(xí)左聯(lián)結(jié)
MYSQL學(xué)習(xí)
SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name;
MYSQL學(xué)習(xí)結(jié)果是
MYSQL學(xué)習(xí)
+-------+------+
| name | name |
+-------+------+
| java1 | NULL |
| java2 | NULL |
| blue | blue |
+-------+------+
MYSQL學(xué)習(xí)所以從上面結(jié)果看出,因?yàn)镴ava表中的java1和java2記錄的name沒(méi)有在MySQL表中有對(duì)應(yīng)name,因此為空,但java 所有的列欄仍有java1和java2記錄,mysql表所有列欄為NULL.而剩下的blue的那條記錄就是java表和mysql表內(nèi)連接的結(jié)果.
MYSQL學(xué)習(xí)如果對(duì)于在LEFT JOIN中的ON或USING部分中的右表沒(méi)有匹配的記錄,則所有列被設(shè)置為NULL的一個(gè)行被用于右表.如果一個(gè)表在其它表中沒(méi)有對(duì)應(yīng)部分,您可以使用這種辦法在這種表中查找記錄:
MYSQL學(xué)習(xí)
SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name WHERE mysql.name IS NULL;
MYSQL學(xué)習(xí)該sql找出在java的人,但是不在mysql里的人,這里明顯是人員'java1'和'java2'符合要求.
MYSQL學(xué)習(xí)右聯(lián)結(jié)
MYSQL學(xué)習(xí)
SELECT * FROM java RIGHT JOIN mysql ON java.name=mysql.name;
MYSQL學(xué)習(xí)返回結(jié)果是
MYSQL學(xué)習(xí)
+------+--------+
| name | name |
+------+--------+
| NULL | mysql1 |
| NULL | mysql2 |
| blue | blue |
+------+--------+
MYSQL學(xué)習(xí)右聯(lián)結(jié)和左聯(lián)接結(jié)果類似,只是這次是mysql表保存所有的結(jié)果集.
MYSQL學(xué)習(xí)外聯(lián)結(jié)的語(yǔ)法
MYSQL學(xué)習(xí)
join_table:| table_reference LEFT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [LEFT [OUTER]] JOIN table_factor
| table_reference RIGHT [OUTER] JOIN table_reference join_condition
| table_reference NATURAL [RIGHT [OUTER]] JOIN table_factor
MYSQL學(xué)習(xí)USING(column_list)子句
MYSQL學(xué)習(xí)用于為一系列的列進(jìn)行命名,這些列必須同時(shí)在兩個(gè)表中存在
MYSQL學(xué)習(xí)
SELECT java.*,mysql.* FROM java LEFT JOIN mysql USING (name);
MYSQL學(xué)習(xí)結(jié)果返回
MYSQL學(xué)習(xí)
+-------+------+
| name | name |
+-------+------+
| java1 | NULL |
| java2 | NULL |
| blue | blue |
+-------+------+
MYSQL學(xué)習(xí)聯(lián)結(jié)的運(yùn)算順序
MYSQL學(xué)習(xí)
SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c);
--相當(dāng)于
SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
MYSQL學(xué)習(xí)括號(hào)對(duì)于join的順序的影響
MYSQL學(xué)習(xí)
SELECT t1.id,t2.id,t3.id FROM t1,t2 LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id;
--實(shí)際上這么執(zhí)行
SELECT t1.id,t2.id,t3.id FROM t1,( t2 LEFT JOIN t3 ON (t3.id=t1.id) ) WHERE t1.id=t2.id;
--應(yīng)該這么寫(xiě)
SELECT t1.id,t2.id,t3.id FROM (t1,t2) LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id;
MYSQL學(xué)習(xí)在這里括號(hào)是相當(dāng)重要的,因此以后在寫(xiě)這樣的查詢的時(shí)候我們不要忘記了多寫(xiě)幾個(gè)括號(hào),至少這樣能避免很多錯(cuò)誤
MYSQL學(xué)習(xí)以上所述是小編給大家介紹的Mysql join操作,希望對(duì)大家有所贊助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的.在此也非常感謝大家對(duì)維易PHP網(wǎng)站的支持!
《Mysql應(yīng)用Mysql中的join操作》是否對(duì)您有啟發(fā),歡迎查看更多與《Mysql應(yīng)用Mysql中的join操作》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/13053.html