#查詢姓名 部門名 地點
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 連線查詢(多表查詢)
mysql 連線查詢 多表查詢 連線就是指兩個或2個以上的表 資料來源 連線起來成為乙個資料來源 實際上,兩個表的完全的連線是這樣的乙個過程 左邊的表的每一行,跟右邊的表的每一行,兩兩互相 橫向對接 後所得到的所有資料行的結果。注意 連線之後,並非形成了乙個新的資料表,而只是一種 記憶體形態 fro...
mysql多表連線查詢過程 mysql多表連線查詢
二 內連線 join 或 inner join sql語句 select from student inner join course on student.id course.id 執行結果 inner join 是比較運算子,只返回符合條件的行。此時相當於 select from student...
mysql多表連線查詢舉例 mysql
join是關係型資料庫系統的重要操作之一,sql server中包含的常用join 內聯接 外聯接和交叉聯接等1.1.1 摘要 join是關係型資料庫系統的重要操作之一,sql server中包含的常用join 內聯接 外聯接和交叉聯.實際的專案,存在多張表的關聯關係。不可能在一張表裡面就能檢索出所...