感冒有點嚴重,最近又有考試要準備,學習狀態有點差,只看了一點連線查詢的內容。
前面學習的都是對一張表中的內容進行查詢,當我們查詢的內容涉及到多張表時,就要用到連線查詢了。
首先,如果查詢了多張表但是沒有設定有效的連線條件,會導致多張表所有行實現完全連線,也就是笛卡爾乘積現象。
最後顯示的表的行數會是各表行數的乘積,包含了各表的全部內容。
對於sql92和sql99,連線查詢有所不同。
在sql92中,連線查詢只有等值連線、非等值連線和自連線,支援一部分外連線(用於oracle、sqlserver,mysql不支援)。
在sql99中則分為內連線、外連線和交叉連線,其中內連線包括了等值連線、非等值連線和自連線,外連線分為左外連線、右外連線,還有全外連線(mysql中不支援)。
sql92中連線查詢的表名都放在from後面,連線條件都放在where後面,
sql99中表名通過from (inner、outer、cross)join等進行連線,連線條件則放在on後面。
在內連線中,表的順序不影響查詢結果,內連線的結果是多表的交集。
外連線中:
①查詢的結果=主表中所有的行,如果從表和它匹配的將顯示匹配行,如果從表沒有匹配的則顯示null。
②left join 左邊的就是主表,right join 右邊的就是主表,
full join 兩邊都是主表;
③一般用於查詢除了交集部分的剩餘的不匹配的行(通過where篩選主鍵為null或不為null)。
連線查詢效果總結:
mysql連線查詢例項 MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...
mysql連線查詢例項 MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...
mysql連線查詢on MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...