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