Oracle基本查詢過濾排序實例
作者:傅榮康
Oracle的基本查詢是什么樣子的呢?又有什么注意事項呢?過濾和排序是如何進行的呢?規則是什么呢?本文中以實例形式為您一一展現。
基本查詢:
- --查詢所有員工的信息
- select * from emp;
- --設置行寬
- set linesize 120;
- --設置列寬為四個數字的寬度
- col empno for 9999;
- --設置列寬,a表示字符串共八位長度
- col ename for a8
- --設置pageSize每頁顯示30條記錄
- set pagesize 30;
- --sql中支持算數表達式,注意:如果一個表達式中含有空值,則整個表達式為空
- select empno,ename,sal,sal*12,comm,sal*12+comm from emp;
- --使用濾空函數如果comm為空將以0代替
- select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp;
- --使用別名的三種方式,別名中有***引號的區別:帶雙引號的可以包含空格和特殊字符,不帶雙引號的則不能
- select empno as "員工編號",ename "姓名",sal 月薪,comm,sal*12+nvl(comm,0)年收入 from emp;
- --關于disctinct,相同記錄只取一次
- select distinct deptno from emp;
- --當disctinct跟多個值時,當deptno和job均一樣時,才認為是相同記錄
- select distinct deptno,job from emp;
- --連接符的使用
- select ename ||'的薪水是'||sal from emp;
注意:
- SQL 語言大小寫不敏感。
- SQL 可以寫在一行或者多行
- 關鍵字不能被縮寫也不能分行
- 各子句一般要分行寫。
- 使用縮進提高語句的可讀性。
過濾和排序
- --查詢系統參數
- select * from v$nls_parameters;
- --修改日期格式
- alter session set NLS_DATE_FORMAT='yyyy-mm-dd';
- --隱士方式轉換日期,會影響性能
- select * from emp where hiredate='1981-11-17';
- --顯示方式轉換日期
- select * from emp where hiredate=to_date('1981-11-17','yyyy-mm-dd');
- --比較運算符,查詢工資大于1000,小于2000的員工,between and含邊界
- select * from emp where sal>=1000 and sal<=2000;
- select * from emp where sal between 1000 and 2000;
- --in: 在集合中,查詢10號部門和20號部門的員工
- select * from emp where deptno=10 or deptno=20;
- select * from emp where deptno in (10,20);
- --模糊查詢:查詢名字以S打頭的員工
- select * from emp where ename like 'S%';
- --查詢名字有四個字的員工,要求四個下劃線
- select * from emp where ename like '____';
- --查詢姓名中含義下劃線的員工,_下劃線為特殊字符需要轉義,escape 聲明轉義
- select * from emp where ename like '%\_%' escape '\';
- --查詢獎金不為空的員工
- select * from emp where comm is not null;
- --查詢員工信息,按照月薪排序
- select * from emp order by sal;
- --a命令:追加命令,將上邊改為降序排序
- a desc
- --查詢員工信息,按照年薪排序
- select empno,ename,sal,sal*12 from emp order by sal*12;
- --order by后面可以跟別名
- select empno,ename,sal,sal*12 年薪 from emp order by 年薪;
- --order by后面可以跟序號
- select empno,ename,sal,sal*12 from emp order by 4;
- --order by作用于多列,先按照***列排序;然后按照第二列排
- select * from emp order by deptno,sal;
- --order by作用于多列,降序需要每列均有desc
- select * from emp order by deptno desc,sal desc
- --將空值排到***
- select * from emp order by comm desc nulls last;
- --屏蔽/開啟反饋信息
- set feedback off/set feedback on
排序的規則 :
- 可以按照select語句中的列名排序
- 可以按照別名列名排序
- 可以按照select語句中的列名的順序值排序
- 如果要按照多列進行排序,則規則是先按照***列排序,如果相同,則按照第二列排序;以此類推
原文鏈接:http://blog.csdn.net/furongkang/article/details/6861074
【編輯推薦】
責任編輯:艾婧
來源:
傅榮康專欄