(第4講)oracle的查詢select

(1)查看錶結構:desc stu;

(2)查詢所有列: select * from stu;

(3)查詢指定列: select ename,sal,job from stu;

(4)取消重複行: select distinct deptno,job from stu;

注意:

(1)set timing on;//打開時間記錄,

(2)oracle中的select語句大小寫不區分,但是內容是區分的,比如說

select deptno,job,sal from emp where ename='SMITH';

比如說ename='smith',是查不出來的;但是select JoB是可以的

(5)使用算數表達式: select sal*13,ename from emp;

結果是:
 
    SAL*13 ENAME
---------- ----------
     10400 SMITH
     20800 ALLEN
     16250 WARD
     38675 JONES
     16250 MARTIN
     37050 BLAKE
     31850 CLARK
     39000 SCOTT
     65000 KING
     19500 TURNER
     14300 ADAMS
     12350 JAMES
     39000 FORD
     16900 MILLER

(6)使用列的別名:像上邊的表的列名: SAL*13很不好看,我們設置一下

select sal*13 "年工資",ename from emp;

結果是:


       年工資 ENAME
---------- ----------
     10400 SMITH
     20800 ALLEN
     16250 WARD
     38675 JONES
     16250 MARTIN
     37050 BLAKE
     31850 CLARK
     39000 SCOTT
     65000 KING
     19500 TURNER
     14300 ADAMS
     12350 JAMES
     39000 FORD
     16900 MILLER

(7)如何處理null值:nvl函數

select sal*13+nvl(comm,0)*13  "年工資",ename,comm from emp;

select sal*13+comm*13  "年工資",ename from emp;//這樣會出現值爲空的
 
       年工資 ENAME
---------- ----------
           SMITH
     24700 ALLEN
     22750 WARD
           JONES
     34450 MARTIN
           BLAKE
           CLARK
           SCOTT
           KING
     19500 TURNER
           ADAMS
           JAMES
           FORD
           MILLER



select sal*13+nvl(comm,0)*13  "年工資",ename,comm from emp;

  年工資 ENAME           COMM
---------- ---------- ---------
     10400 SMITH      
     24700 ALLEN         300.00
     22750 WARD          500.00
     38675 JONES      
     34450 MARTIN       1400.00
     37050 BLAKE      
     31850 CLARK      
     39000 SCOTT      
     65000 KING       
     19500 TURNER          0.00
     14300 ADAMS      
     12350 JAMES      
     39000 FORD       
     16900 MILLER     
 

(8)連接字符串:||

select ename || 'is a'||job from emp;

(9)使用where子句:

顯示工資高於3000的員工:select ename,sal from emp where sal>3000;

顯示 1982年1月1日之後入職的員工:select HIREDATE,ename from emp where HIREDATE>'1-1月-1982';

顯示工資在2000到2500之間的員工: select ename,sal from emp where sal<=2500 and sal>=2000;

(10)like操作符

%:表示任意0到多個字符

— :表示任意單個字符

顯示首字母爲S的員工姓名和工資:select ename,sal from emp where ename like 'S%';

顯示第三個字符爲大寫O的員工對的姓名和工資: select ename,sal from emp where ename like '__O%';

(11)在where條件中使用in

顯示empno爲123和234和456....的員工信息:select * from emp where empno in(123,234,345);

(12)使用is null的操作符

顯示沒有上級的僱員的信息: select * from emp where MGR is null;

只能這樣寫,不能寫mgr='';

(13)使用邏輯操作符號: and  ,or

查詢工資高於500 或是崗位爲manager的僱員,並且他們的姓名首字母爲大寫的J:

 select * from emp where (sal>500 or job='manager') and ename like 'J%';

(14)使用order by(asc/desc)

按照工資從低到高的順序:select * from emp order by sal (asc);

按照工資從高到底的順序:select * from emp order by sal desc;

部門號升序而僱員工資降序 : select * from emp order by deptno asc ,sal desc;

部門號升序、入職時間降序:

(15)使用列的別名排序:必須用雙引號

對員工的年薪進行排序:  select ename,(sal+nvl(comm,0))*12 as "年薪" from emp order by "年薪";

                                       select ename,(sal+nvl(comm,0))*12  "年薪" from emp order by "年薪";

(16)分頁查詢



發佈了84 篇原創文章 · 獲贊 21 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章