標籤:情況 基本 ott 結構 family logs mgr 操作符 算數
此文中用到的表是Scott使用者中內建的三張表:
基本select語句
基本文法:
select [distinct] *|{columnl,column2,column3..} from table [where {condition}];
select [是否剔除重複資料] *|{欄位名(列名),欄位名2(列名2),欄位名3(列名3)..} from 表名 [where {條件}];注意事項:
1、select指定查詢哪些列的資料;
2、column指定列名;
3、*代表查詢所有列;
4、from指定查詢哪張表;
5、distinct可選,指顯示結果時,是否剔除重複資料;
6、where條件。
oracle表基本查詢--簡單的查詢語句
查看錶結構
SQL>desc 表名;
查詢所有列
SQL>select * from 表名;
查詢指定列
SQL>select 列1,列2,列3,.. from 表名;
如何取消重複行
SQL>select distinct deptno,job from emp;
查詢SMITH的薪水,工作,所在部門
SQL>select sal,job,deptno from emp where ename=‘SMITH‘;
特別注意:oracle對sql語句不區分大小寫,但對查詢內容區分大小寫。這與sqlserver是有區別的,sqlserver對查詢內容不區分大小寫。
使用算數運算式
顯示每個僱員的年工資
SQL>select ename,sal*13+nvl(comm,0)*13 from emp;
使用列的別名
SQL>select ename "姓名",sal*13+nvl(comm,0)*13 "年度營收" from emp;
SQL>select ename 姓名,sal*13+nvl(comm,0)*13 年度營收 from emp;
SQL>select ename as "姓名",sal*13+nvl(comm,0)*13 as "年度營收" from emp;
特別注意:oracle在使用別名時,可以用雙引號或不使用或使用as來表明別名。但不能使用單引號。sqlserver是可以使用雙引號、單引號。
如何處理null值
使用nvl函數來處理
nvl函數的使用,說明:nvl是oracle提供的函數,是用於處理null值使用的。sqlserver提供的則是isnull函數來處理null值。
SQL>select ename,sal*13+nvl(comm,0)*13 from emp;
nvl(值1,值2) 解釋:nvl值1為null時則取值2,值1不為null時則取值1原值。
如何連接字串(||)
SQL>select ename ||‘年度營收‘||(sal*13+nvl(comm,0)*13) "僱員的年度營收" from emp;
||在查詢的時候,希望把多列內容做為一列內容返回可以使用||串連符。
oracle表基本查詢--簡單的查詢語句
使用where子句
如何顯示工資高於3000的員工
SQL>select ename,sal from emp where sal>3000;
如何尋找1982.1.1後入職的員工
SQL>select ename,hiredate from emp where hiredate>‘1-1月-82‘;
也可以使用to_char函數轉換日期類型後再進行日期比較,如下:
SQL>select ename,hiredate from emp where to_char(hiredate,‘yyyy-mm-dd‘)>‘1982-1-1‘;
字元對比還是有一定出入的。不推薦使用。
如何顯示工資在2000到2500的員工情況
SQL>select * from emp where sal>=2000 and sal<=2500;
SQL>select * from emp where sal between 2000 and 2500;
說明:between是指定區間內取值,如:between 2000 and 2500,取2000至2500內的值,同時包含2000和2500
如何使用like操作符
%:表示任意0到多個字元
_:表示任意單個字元
如何顯示首字元為S的員工姓名和工資
SQL>select ename,sal from emp where ename like ‘S%‘;
如何顯示第三個字元為大寫O的所有員工的姓名和工資
SQL>select ename,sal from emp where ename link ‘__O%‘;
在where條件中使用in
如何顯示empno為123,345,800...的僱員情況
SQL>select * from emp where empno=123 or empno=345 or emp=800;
SQL>select * from emp where empno in(123,345,800);
使用is null的操作符
如何顯示沒有上級的僱員的情況
SQL>select * from emp where mgr is null;
使用邏輯操作符號
查詢工資高於500或是崗位為manager的僱員,同時還要滿足他們的姓名首寫字母為大寫的J
SQL>select * from emp where (sal>500 or job=‘MANAGER‘) and (ename like ‘J%‘);
使用order by子句
如何按照工資的從低到高的順序顯示僱員的資訊
SQL>select * from emp order by sal asc;
注意:asc寫或不寫都是升序排序即從小到大排序,desc則是降序排序從大到小排序。
按照部門號升序而僱員的入職時間降序排列
SQL>select * from emp order by deptno,hiredate desc;
使用列的別名排序
SQL>select ename,sal*12 "年薪" from emp order by "年薪" asc;
別名需要使用“”號圈中。
oracle入門之對錶資料查詢(一)