基本查詢:
復(fù)制代碼 代碼如下:
--查詢所有員工的信息
select * from emp;
--設(shè)置行寬
set linesize 120;
--設(shè)置列寬為四個(gè)數(shù)字的寬度
col empno for 9999;
--設(shè)置列寬,a表示字符串共八位長(zhǎng)度
col ename for a8
--設(shè)置pageSize每頁顯示30條記錄
set pagesize 30;
--sql中支持算數(shù)表達(dá)式,注意:如果一個(gè)表達(dá)式中含有空值,則整個(gè)表達(dá)式為空
select empno,ename,sal,sal*12,comm,sal*12+comm from emp;
--使用濾空函數(shù)如果comm為空將以0代替
select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0) from emp;
--使用別名的三種方式,別名中有無雙引號(hào)的區(qū)別:帶雙引號(hào)的可以包含空格和特殊字符,不帶雙引號(hào)的則不能
select empno as "員工編號(hào)",ename "姓名",sal 月薪,comm,sal*12+nvl(comm,0)年收入 from emp;
--關(guān)于disctinct,相同記錄只取一次
select distinct deptno from emp;
--當(dāng)disctinct跟多個(gè)值時(shí),當(dāng)deptno和job均一樣時(shí),才認(rèn)為是相同記錄
select distinct deptno,job from emp;
--連接符的使用
select ename ||'的薪水是'||sal from emp;
注意:
SQL 語言大小寫不敏感。
SQL 可以寫在一行或者多行
關(guān)鍵字不能被縮寫也不能分行
各子句一般要分行寫。
使用縮進(jìn)提高語句的可讀性。
過濾和排序
復(fù)制代碼 代碼如下:
--查詢系統(tǒng)參數(shù)
select * from v$nls_parameters;
--修改日期格式
alter session set NLS_DATE_FORMAT='yyyy-mm-dd';
--隱士方式轉(zhuǎn)換日期,會(huì)影響性能
select * from emp where hiredate='1981-11-17';
--顯示方式轉(zhuǎn)換日期
select * from emp where hiredate=to_date('1981-11-17','yyyy-mm-dd');
--比較運(yùn)算符,查詢工資大于1000,小于2000的員工,between and含邊界
select * from emp where sal>=1000 and sal=2000;
select * from emp where sal between 1000 and 2000;
--in: 在集合中,查詢10號(hào)部門和20號(hào)部門的員工
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%';
--查詢名字有四個(gè)字的員工,要求四個(gè)下劃線
select * from emp where ename like '____';
--查詢姓名中含義下劃線的員工,_下劃線為特殊字符需要轉(zhuǎn)義,escape 聲明轉(zhuǎn)義
select * from emp where ename like '%\_%' escape '\';
--查詢獎(jiǎng)金不為空的員工
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后面可以跟序號(hào)
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
排序的規(guī)則 :
可以按照select語句中的列名排序
可以按照別名列名排序
可以按照select語句中的列名的順序值排序
如果要按照多列進(jìn)行排序,則規(guī)則是先按照第一列排序,如果相同,則按照第二列排序;以此類推