多表查詢sql語句 1 --解鎖SCOTT用戶 2 alter user scott account unlock 3 --檢索指定的列 4 select job,ename,empno from emp; 5 --帶有表達是的select子句 6 select sal*(1+0.2),sal fr ...
多表查詢sql語句
1 --解鎖SCOTT用戶
2 alter user scott account unlock
3 --檢索指定的列
4 select job,ename,empno from emp;
5 --帶有表達是的select子句
6 select sal*(1+0.2),sal from emp;
7 --顯示不重覆的記錄
8 select distinct job from emp;
9 --比較篩選 <> =
10 select empno,ename,sal from emp where sal>1000;
11 select empno,ename,JOB from emp;
12 select empno,ename,sal from emp where sal <>all(3000,950,800);
13 --特殊關鍵字篩選
14 --like 模糊查詢
15 select empno,ename,job from emp where JOB like '%S';
16 --IN --varchar
17 select empno,ename,job from emp where job in('PRESIDENT','MANAGER','ANALYST');
18 --NOT IN
19 select empno,ename,job from emp where job not in('PRESIDENT','MANAGER','ANALYST') ;
20 --BETWEEN -numer ,inter
21 select empno,ename,sal from emp where sal between 2000 and 3000;
22 --NOT BETWEEN
23 select empno,ename,sal from emp where sal NOT between 2000 and 3000;
24 --IS NULL/ is not null
25 select * from emp where comm is NOT null;
26 --邏輯篩選
27 --and ,or,not 關係 於 -或 --非
28 select empno,ename,sal from emp where (sal>=2000 and sal<=3000 ;
29 select empno,ename,sal from emp where sal<2000 or sal>3000 ;
30 --分組查詢
31 select deptno,job from emp group by deptno,job order by deptno ;
32 select deptno as 部門編號,avg(sal) as 平均工資 from emp group by deptno;
33 select deptno as 部門編號,avg(sal) as 平均工資 from emp group by deptno having avg(sal)>2000; --group by 子條件 having
34 --排序查詢Order by; desc:逆序 asc預設
35 select deptno,empno,ename from emp order by deptno,EMPNO;
多表查詢sql語句七種示例圖 在創建關係型數據表時,根據資料庫範式的要求,為了降低數據的冗餘,提供數據維護的靈活性 將數據分成多個表進行存儲,實際工作當中,需要多個表的信息,需要將多個表合併顯示
多表查詢sql語句 代碼
1 --內連接
2 select e.empno as 員工編號, e.ename as 員工名稱, d.dname as 部門
3 from emp e inner join dept d on e.deptno=d.deptno;
4
5 --左外連接
6 insert into emp(empno,ename,job) values(9527,'EAST','SALESMAN');
7
8 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e left join dept d
9 on e.deptno=d.deptno;
10 --右外連接
11 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e right join dept d
12 on e.deptno=d.deptno;
13
14 --完全連接
15 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e full join dept d
16 on e.deptno=d.deptno;
17
18 --自然連接(共有的屬性,會去除重覆列)
19 select empno,ename,job,dname from emp natural join dept where sal>2000;
20
21 事務如果不提交,會一直寫入以下表空間;
22 redo(記錄日誌表空間) undo(記錄日誌備份表空間)
23 提交: commit 回滾: rollback
24
25 --右外連接過濾
26 select * from emp e right join dept d on e.deptno=d.deptno
27 where e.deptno is null;
28 --左外連接過濾
29 select * from emp e left join dept d on e.deptno=d.deptno
30 where d.deptno is null;
31 --全外連接過濾
32 select * from emp e full join dept d on e.deptno=d.deptno
33 where d.deptno is null or e.deptno is null;
34
35
36 /*自連接(self join)是SQL語句中經常要用的連接方式,使用自連接可以將自身表的一個鏡像當作另一個表來對待,從而能夠得到一些特殊的數據。
37 在emp中的每一個員工都有自己的mgr(經理),並且每一個經理自身也是公司的員工,自身也有自己的經理。*/
38 select em2.enname 管理者,em1.enname 下屬員工 from emp em1 left join emp em2 on em1.mgr=em2.empno order by em1.mgr;
39
40 /*交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數*/
41 select count(*) from dept cross join emp;
ROWNUM偽列
1 select rownum,empno,ename from emp where deptno=20;
2 --返回emp表中前5個員工消息
3 select rownum seq,empno,ename,sal from emp where rownum<=5;
4
5 --查詢emp表中2條到第5條的數據
6 select rownum seq,empno,ename,sal from emp where rownum>=2 and rownum<=5;
7
8 /*ROWNUM列值會被重置所致,比如在取第1行,where子條件不成立,第1行被丟棄,
9 但是取下一行時,ROWNUM會被重置為1,而不是2, 導致,ROWNUM永遠無法取到正確的值
10 無法返回 任何行數據*/
11 select * from emp;
12 select seq,empno,ename,sal from (select rownum seq,empno,ename,sal from emp)
13 where seq>=2 and seq<=5
外鍵約束的作用 外鍵是該表是另一個表之間聯接的欄位 外鍵必須為另一個表中的主鍵 外鍵的用途是確保數據的完整性。它通常包括以下幾種: 實體完整性,確保每個實體是唯一的(通過主鍵來實施) 1 域完整性,確保屬性值只從一套特定可選的集合里選擇 2 關聯完整性,確保每個外鍵或是NULL(如果允許的話)或含有與相關主鍵值相配的值
有外鍵約束的表CRUD操作
1 增加數據:先插入外表,再插入主表
2 刪除數據:先刪除主表再刪除外表,
3 有對應記錄的值,不能修改當前列;