oracle入門之對錶資料查詢(一)

來源:互聯網
上載者:User

標籤:情況   基本   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入門之對錶資料查詢(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.