#查詢姓名 部門名 地點
select emp.ename ,dept.dname,dept.loc
from emp,dept
where emp.deptno=emp.deptno
#簡化select ename ,dname,loc,emp.deptno
from emp,dept
where emp.deptno=dept.deptno
#注意:多表查詢是不同列名可以省略表名,多個表的相同列必須指定 表名.列名
#優化:表別名:一旦起錶別名,就必須用別名來代替原來的表名
select ename ,dname,loc,e.deptno
from emp e,dept d
where e.deptno=d.deptno
#等值連線
查詢工作地點在new york的員工編號,姓名,部門編號,工作地點
select empno,ename,e.deptno,loc
from emp e,dept d
where e.deptno=d.deptno and loc=『new york』
#不等值連線
查詢每個員工的姓名,工資,工資等級
select ename,sal,grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal
#練習1.查詢每個員工的編號,姓名,工資,工資等級,所在工作城市,
按照工資等級進行公升序排序。
select empno,ename,sal,grade,loc
from emp e,salgrade s,dept d
where e.deptno=d.deptno and e.sal between s.losal and s.hisal
order by s.grade
#自身連線
select worker.ename 員工名,manager.ename 直接領導名
from emp worker, emp manager
where worker.mgr = manager.empno;
#外連線:左外、右外
select worker.ename 員工名,manager.ename 直接領導名
from emp worker
left join emp manager
on worker.mgr = manager.empno;
#練習查詢所有工作在new york和chicago的員工姓名,員工編號,以及他們的經理姓名,
經理編號
select w.ename 『員工名』 ,w.empno 『員工編號』, m.ename 『經理名』, m.empno 『經理編號』
from emp w,emp m,dept
where w.mgr=m.empno and w.deptno=dept.deptno
and loc in(『new york』,『chicago』)
#查詢員工姓名 部門名
select ename ,dname
from emp,dept
where emp.deptno=dept.deptno
等價於select ename ,dname
from emp join dept
on emp.deptno=dept.deptno
#外連線:左右表記錄不匹配時,以左表還是右表資訊為準?
#左外連線(顯示左邊表的符合條件的記錄)
查詢所有雇員姓名,部門編號,部門名稱,包括沒有部門的員工也要顯示出來
select ename ,e.deptno,dname
from emp e left join dept
on e.deptno=dept.deptno
#右外連線(顯示右邊表的符合條件的記錄)
查詢所有雇員姓名,部門編號,部門名稱,包括沒有員工的部門也要顯示出來
select ename ,dept.deptno,dname
from dept left join emp e
on e.deptno=dept.deptno
等價於select ename ,dept.deptno,dname
from emp e right join dept
on e.deptno=dept.deptno
1.建立乙個員工表和部門表的交叉連線。
select e.,d.
from emp e cross join dept d
2.使用自然連線,顯示入職日期在80年5月1日之後的員工姓名,部門名稱,入職日期
select ename,dname,hiredate
from emp natural join dept
等價於select ename,dname,hiredate
from emp ,dept
where emp.deptno=dept.deptno
3.使用using子句,顯示工作在chicago的員工姓名,部門名稱,工作地點
select ename,dname,loc
from emp join dept using(deptno)
where loc=『chicago』
4.使用on子句,顯示工作在chicago的員工姓名,部門名稱,工作地點,薪資等級
select ename,dname,loc,grade
from emp join dept
on emp.deptno=dept.deptno
join salgrade
on emp.sal between losal and hisal
where loc=『chicago』
等價於select ename,dname,loc,grade
from emp , dept,salgrade
where emp.deptno=dept.deptno and
emp.sal between losal and hisal and
loc=『chicago』
5.使用左連線,查詢每個員工的姓名,經理姓名,沒有經理的king也要顯示出來。
select w.ename , m.ename
from emp w left join emp m
on w.mgr=m.empno
6.使用右連線,查詢每個員工的姓名,經理姓名,沒有經理的king也要顯示出來。
select w.ename , m.ename
from emp m right join emp w
on w.mgr=m.empno
1.顯示員工smith的姓名,部門名稱,直接上級名稱
select w.ename 『員工名』 ,dname 『部門名』,m.ename 『經理名』
from emp w,dept d,emp m
where w.deptno=d.deptno and w.mgr=m.empno and w.ename=『smith』
2.顯示員工姓名,部門名稱,工資,工資級別,要求工資級別大於4級。
select ename,dname,sal,grade
from emp e,dept d,salgrade s
where e.deptno=d.deptno and e.sal between s.losal and s.hisal
and s.grade>4
3.顯示員工king和ford管理的員工姓名及其經理姓名。
select w.ename 『員工名』 ,m.ename 『經理名』
from emp w,emp m
where w.mgr=m.empno and m.ename in(『king』,『ford』)
4.顯示員工姓名,參加工作時間,經理名,參加工作時間,要求參加時間比經理早。
select w.ename 『員工名』 ,w.hiredate 『員工入職時間』,
m.ename 『經理名』 ,m.hiredate 『經理入職時間』
from emp w, emp m
where w.mgr=m.empno and w.hiredate mysql 連線查詢 多表查詢 連線就是指兩個或2個以上的表 資料來源 連線起來成為乙個資料來源 實際上,兩個表的完全的連線是這樣的乙個過程 左邊的表的每一行,跟右邊的表的每一行,兩兩互相 橫向對接 後所得到的所有資料行的結果。注意 連線之後,並非形成了乙個新的資料表,而只是一種 記憶體形態 fro... 二 內連線 join 或 inner join sql語句 select from student inner join course on student.id course.id 執行結果 inner join 是比較運算子,只返回符合條件的行。此時相當於 select from student... join是關係型資料庫系統的重要操作之一,sql server中包含的常用join 內聯接 外聯接和交叉聯接等1.1.1 摘要 join是關係型資料庫系統的重要操作之一,sql server中包含的常用join 內聯接 外聯接和交叉聯.實際的專案,存在多張表的關聯關係。不可能在一張表裡面就能檢索出所...MySQL 連線查詢(多表查詢)
mysql多表連線查詢過程 mysql多表連線查詢
mysql多表連線查詢舉例 mysql