Oracle SQL select練習語句

yarking207發表於2013-01-11

Oracle SQL語句大全
1.desc(描述) emp    描述emp這張表
2.desc    dept       部門表
3.desc salgrade      薪水等級
4.select *from table 查詢表中的元素
5.dual     是系統中的一張空表
6.select *from dual
7.select sysdate from dual 取出系統時間
8.select ename,sal*12 "annul sal"(取的別名) from emp; 查詢使用者姓名和使用者的年薪
9.任何含有空值的數學表示式的值都是空值
select ename,sal*12+comm from emp;
10.select ename||sal from emp 其中的||相當於將sal全部轉化為字串
11.表示字串的方法 select ename ||'ajjf' from emp;
12.如果其中有一個單引號就用2個單引號來代替他 select ename||'sakj' 'lds'from emp;
13.select distinct deptno from emp     (去除部門欄位中重複的部分,關鍵字distinct)
14.select distinct deptno,job from emp;(去除這2個欄位中重複的組合)
15.select *from dept where deptno=10;     取出條件(取出部門編號為10的記錄)
16.select * from emp where ename='CLIRK'; 取出部門中姓名為clirk的記錄(注意取出過程中ename用單引號隔開)
17.select ename,sal from emp where sal>1500; 取出部門中薪水大於1500的人的姓名
18.select ename,sal,deptno from emp where deptno<> 10 取出部門中的部門號不等於10的
19.select ename,sal,deptno from emp where ename>'CBA' 取出部門中員工名字大於CBA的員工(實際比較的是ACIIS碼)
20.select ename,sal from emp where sal between 800 and 1500    select ename,sal from emp where sal>=800 and sal<=1500;   (取出800和1500之間的數)
21.select ename,sal,comm from emp where comm is null (選出其中的空值)   
   select enmae,sal,comm from emp where comm is not null(選出其中的非空值)
22.select ename,sal,comm from emp where sal in (800,1500,2000);取出這3者之中的   
   select ename,sal,comm from emp where ename in('simth');
23.select ename,sal,hiredate from emp where hiredata>'3-04月-81';符合條件的日期
24.select ename,sal,from emp where sal>1000 or deptno=10;       找出工資薪水大於1000或者部門號等於10的員工
25.select ename,sal from emp where sal not in(500,1000);        查詢薪水不在500到1000的員工姓名和月薪
26.select ename,sal from emp where ename like '%ALL%';   
   select ename,sal from emp where ename like '_%A%'; 查詢姓名中含有ALL的客戶資訊,一個橫線代表一個萬用字元
27.select ename,sal from emp where ename like '_%$%%' escape '$'; 自己指定轉易字元
28.select * from dept order by deptno
對錶中元素按部門號排序   
  select *from dept order by deptno desc 預設為升序,可以用desc按降序
29.select ename,sal from emp where sal <>1000 order by sal desc   按照查詢條件來查詢,並排序(asc升序排列)
30.select ename,sal*12 from emp where ename not like '_%A%' and sal>800 order by sal desc
31.select lower(ename) from emp 將ename都轉化為小寫    lower是函式能將字母轉化為小寫
32.select ename from emp where lower(ename) like '_%a%'; 找出ename 中所有的含有a的字元
33.select substr(ename,2,3) form. emp            從第2個字元開始擷取3個字元
34.select chr(65) from dual;          將65轉化為字元
35.select ascii('A') from dual         將ACSII碼轉化為字串
36.select round(23.565)from dual     四捨五入
36.select round(23,4565,2)from dual 四捨五入到第二位
37.select to_char(sal,'$99.999.9999') from emp 按指定格式輸出    select to_char(sal,'L99,999,9999') form. emp L代表本地字元
38.select hiredate from emp    select to_char(hiredate,'YYYY-MM-DD HH:MI:SS) from emp; 時間格式的顯示   
select to_char(sysdate,'YYYY-MM-DD HH:MI:ss) from dual;          十二小時制顯示系統時間   
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS) from dual         二四小時制顯示系統時間
39.select ename,hiredate from emp where hiredate > to_date('2005-2-3 12:32:23','YYYY-MM-DD HH:MI:SS');
40 select sal from emp where sal>to_number('$1,250.00','$9,999.99'); 取出比它大的一切字串(把特定格式的數字轉化成字元)
41 select ename,sal+nvl(comm,0) from emp;     講comm值為空的用0來替換,單行函式(以一條記錄為條件)一條對一條
42.select Max(sal) from emp;    select Min(sal) from emp;    select avg(sal) from emp;    select sum(sal) from emp;   
select count(*) from emp;   檢視錶中一共有多少條記錄   
select count(*) from emp where deptno=10;          查詢部門10一共有多少人;
43.select avg(sal),deptno from emp group by deptno;   按部門號進行分組   
select deptno,job,max(sal) from emp group by job,deptno; 按工作和部門號進行分組;
44.select ename from emp where sal=(select max(sal) from emp); 子查詢,查詢部門中薪水最高的員工姓名
45.group by 注意:出現在select列表中的欄位,如果沒有出現在組函式中必須出現在group by子句中
46.select avg(sal),deptno from emp group by deptno having avg(sal)>2000;    選出部門中平均薪水大於2000的部門,
47.select * from emp where sal>100 group by deptno having ..........order by........    先取資料--過濾資料------分組----對分組限制-------排序
48.select avg(sal) from emp where sal>2000 group by deptno having avg(sal)>1500 order by avg(sal) desc;    查詢部門中平均薪水列印2000的員工並按部門號進行排序,查詢分組後的平均薪水必須大於1500,查詢結果按平均

薪水從低到高排列
49.select ename from emp where sal>(select avg(sal) from emp);    查詢出員工中薪水位於部門平均薪水之上的所有員工
50.
   select ename,sal from emp join  (select deptno,max(sal) max_sal from emp group by deptno) t on (emp.sal =t.max_sal and emp.deptno=t.deptno)
/
  查詢每個部門中薪水最高的
51.select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;           表的自連線   上級的名字
52.select dname,ename from emp cross join dept         交叉連線,笛卡爾 SQL99中的新語法
53.select ename,dname from emp join dept on(emp.deptno=dept.deptno);
54.select ename,dname from emp join dept using(deptno);            查詢emp和dept表中deptno相同的部分。
55.select ename,dname,grade from emp e join dept d on(e.deptno=d.depno)                                        join salgrade s(e.sal between s.losal and s.hisal)   (三表查詢)                                

       where ename not like '_%A%';
56.select e1.ename,e2.ename from emp e1 join emp e2 on(e1.mgr=e2.deptno); 表的自連線
57.select e1.ename,e2.ename from emp e1 left join emp e2 on(e1.mgr=e2.deptno) 左外表連線    select ename,dname from emp e right join dept d on(e.deptno=d.deptno)右外連線    select ename,dname from emp e full

join dept d on(e.deptno=d.deptno)全連線
58.求部門中薪水最高的    select ename,sal from emp join (select max(sal) max_sal, deptno from emp group by deptno) t    on (emp.sal=t.max_sal and emp.deptno=t.deptno);
59.求部門中薪水等級的平均值    select deptno,avg(grade) from(select deptno,ename,grade,from emp join salgrade s on(emp.sal between s.losal and s.hisal))t group by deptno;
60.查詢僱員中哪些是經理人    select ename from emp where empno in(select mgr from emp);
61.select distinct e1.sal from emp e1 join emp e2 on(e1.sal

(e1.sal62.select deptno from (select avg(sal) max_sal deptno from emp group by deptno) where max_sal=(select max(avg_sal) from (select avg(sal) avg_sal deptno from emp group by deptno));           查詢部門中部門薪

水最大的部門號
63.求平均薪水最大的部門的部門編號    select deptno,avg_sal from(select avg(sal) avg_sal,deptno from emp group by

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/220205/viewspace-752508/,如需轉載,請註明出處,否則將追究法律責任。

相關文章