以下是對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語句中的列名的順序值排序
如果要按照多列進行排序,則規則是先按照第一列排序,如果相同,則按照第二列排序;以此類推