內連線查詢:
>select table1.name,table2.name from table1 inner join table2 on table1.name = table2.name;
左連線查詢:
>select table1.name,table2.name from table1 left join table2 on table1.name = table2.name;
右連線查詢:
>select table1.name,table2.name from table1 right join select2 on table1.name = table2.name;
內連線查詢,在on後面的條件不成立的時候,是不返回資料的;
左右連線查詢,在on後面的條件不成立的時候,依然返回資料,值為null,例如上面的查詢語句,table1表中若沒有某個名字與table2表中的名字相同,則還是會返回字段,而left 和 right 就是區分當前查詢的表,那張表為主導,left 的時候,table1表中沒有查到相等的名字時依然將所有行列出,而與之對應的table2的名字則為null;
多張表連線查詢:
select示例:table1.name,table2.name,table3.name
from
table1
inner join
table2
on table1.id = table2.id
join
table3 on table1.id = table3.id
;
select * from 表1最後返回的結果將是兩張表的所有資料的集合union
select * from 表2;
union語句滿足的條件是:每個select語句取出的列數必須相同,列名不一定相同,列名稱使用第一條select語句的列名稱;
union語句,在上述例子中,表1和表2中分別有一行資料完全相同,則會被合併,類似於並集;
union操作
合併,耗時,消耗伺服器資源,造成浪費;
union all 操作
在合併時,不去比較每一行是否一致,則會提公升合併的效能;
testa:
+----+-----+
| id | num |
+----+-----+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
| 5 | 50 |
| 6 | 60 |
+----+-----+
testb:
+----+-----+
| id | num |
+----+-----+
| 1 | 20 |
| 2 | 23 |
| 3 | 234 |
| 4 | 234 |
| 5 | 35 |
| 6 | 45 |
+----+-----+
sql:
select id,sum(num) from
(select * from testa
union
select * from testb
)as tmp
group by id;
內 左 右 全連線查詢
sql中的連線查詢有inner join 內連線 left join 左連線 right join 右連線 full join 全連線 四種方式,它們之間其實並沒有太大區別,僅僅是查詢出來的結果有所不同。例如我們有兩張表 orders表通過外來鍵id p和persons表進行關聯。我們使用inner...
左右內連線
例表a aid adate 1 a1 2 a2 3 a3 表bbid bdate 1 b1 2 b2 4 b4 兩個表a,b相連線,要取出id相同的字段 select from a inner join b on a.aid b.bid這是僅取出匹配的資料.此時的取出的是 1 a1 b1 2 a2 ...
內連線與外連線(左右)的區別
資料庫 內連線與外連線 內連線是獲取兩個表的公共部分c,其中乙個表的id是另外乙個表的連線字段 select from a,b where a.aid b.bnameid與select from a join b on a.aid b.bnameid 的執行結果是一樣的。外連線 分為左連線和右連線 ...