1合併結果集,使用關鍵字union和union all,其區別是union會去掉合併中重複的部分而union all不會去掉重複的列。使用這個關鍵字的要求結果姐的列和型別必須相同。
定義兩個表如下所示:a和b,兩個表分別有乙個整型的id和乙個字串的name。
1.1使用union all
1.2使用union
2內連線
2.1這個是帶有方言的方式,在oracle可能不適合
select * from emp,dept where emp.deptno=dept.deptno;
2.2這個是最標準的內連線的書寫方式,建議用這個
select * from emp e inner join dept d on e.deptno=d.deptno;
2.3 natural join不需要on他自動根據兩個表相同的字段自動匹配
select * from emp natural join dept d ;
3外鏈結
外鏈結分為左外連線,和右外連線。mysql不支援全外連線。
3.1左外連線,是指以左表為主,當兩個表進行連線的時候,右邊的表的值沒有時,會以左邊的表為主,即會把左邊所有的值都列出來,右表沒有的補null。
3.2右外連線和左外連線相反,他是以右表為主,當兩個表進行連線的時候,左邊的表沒有值的時候,會以右表為準,即會把右表所有的值都列出來,左表沒有的補null。
3.3全外連線,mysql不支援全外連線,但是可以通過將左外連線和右外連線結合起來,即union,即可得到全外連線。
4子查詢
可以通過檢視select關鍵字的個數來作為判斷
4.1. 出現的位置:
where後作為條件存在(一般是多行單列)
from後作為表存在(多行多列)
4.2. 條件
單行單列:select * from 表1 別名1 where 列1 [=、>、=、<=、!=] (select 列 from 表2 別名2 where 條件)
多行單列:select * from 表1 別名1 where 列1 [in, all, any] (select 列 from 表2 別名2 where 條件)
單行多列:select * from 表1 別名1 where (列1,列2) in (select 列1, 列2 from 表2 別名2 where 條件)
多行多列:select * from 表1 別名1 , (select ....) 別名2 where 條件
5mysql的關鍵字查詢的順序
MySql之多表查詢
select e.empname,d.deptname from emp e,dept d where e.deptno d.deptno select e.empname d.deptname from emp e inner join dept d on e.deptno d.deptno se...
MySQL之多表查詢
準備資料 user info表 create table user info id int 2 primary key,user name varchar 12 unique,password varchar 15 not null,real name varchar 8 not null,age ...
MySQL之多表查詢
現在有兩個表,分別為department表和employee表,他們之間是沒有外來鍵關係的。兩個表分別有以下資料。我們可以通過笛卡爾積得到乙個新的虛擬的表。我們得到這個表之後,就可以用這錶取我們想要的資料。比如拿到技術部門的員工名字 其實鍊錶查詢和笛卡爾積差不多,只是笛卡爾積的鍊錶和查詢放在了一起,...