oracle心得1--oracle簡介@基本sql語句@條件查詢@排序資料理論與案例

y_keven發表於2013-04-04

1. Oracle 簡介

Oracle是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻譯的第一個單詞Oracle公司是全球最大的資訊管理軟體及服務供應商,成立於1977年,總部位於美國加州 Redwood shore;Oracle公司因其複雜的關聯式資料庫產品而聞名。Oracle的關聯式資料庫是世界第一個支援SQL語言的資料庫

2. Oracle 資料庫和 Oracle 例項

Oracle 伺服器由兩大部分組成, Oracle 資料庫和 Oracle 例項。

Oracle 資料庫: 位於硬碟上實際存放資料的檔案, 這些檔案組織在一起, 成為一個邏輯整體, 即為 Oracle 資料庫. 因此在 Oracle 看來, “資料庫” 是指硬碟上檔案的邏輯集合, 必須要與記憶體裡例項合作, 才能對外提供資料管理服務.

Oracle 例項: 位於實體記憶體裡的資料結構. 它由一個共享的記憶體池和多個後臺程式所組成, 共享的記憶體池可以被所有程式訪問. 使用者如果要存取資料庫(也就是硬碟上的檔案) 裡的資料, 必須通過例項才能實現, 不能直接讀取硬碟上的檔案.

區別: 例項可以運算元據庫; 在任何時刻一個例項只能與一個資料庫關聯; 大多數情況下, 一個資料庫上只有一個例項對其進行操作.

3. 注意

SQL 語言大小寫不敏感;但where或having條件引號中的單詞大小寫敏感;SQL 可以寫在一行或者多行關鍵字不能被縮寫也不能分行各子句一般要分行寫。使用縮排提高語句的可讀性。

乘除的優先順序高於加減;同一優先順序運算子從左向右執行。括號內的運算先執行 括號決定一切!

空值是無效的,未指定的,未知的或不可預知的值;空值不是空格或者0

4. 案例知識點分析

列的別名:

重新命名一個列,便於計算。緊跟列名,也可以在列名和別名之間加入關鍵字‘AS’,別名使用雙引號,以便在別名中包含空格或特殊的字元並區分大小寫。

連線符:

把列與列,列與字元連線在一起。用 ‘||’表示。可以用來‘合成’列。

  例子:

select deptno||dname from dept;

 

DEPTNO||DNAME                                                            

------------------------------------------------------                  

10ACCOUNTING                                                             

20RESEARCH                                                               

30SALES                                                                  

40OPERATIONS

 

字串和日期:

字串可以是 SELECT 列表中的一個字元,數字,日期。日期和字元只能在單引號中出現。每當返回一行時,字串被輸出一次。字元和日期要包含在單引號中。

字元大小寫敏感,日期格式敏感。預設的日期格式是 DD-MON-RR。

行的去重複:

     預設情況下,查詢會返回全部行,包括重複行。在 SELECT 子句中使用關鍵字 ‘DISTINCT’ 刪除重複行。

例子:select distinct(job) from emp;

5. SQL 和 SQL*Plus

使用SQL*Plus可以:

描述表結構;編輯 SQL 語句;執行 SQL語句。 將 SQL 儲存在檔案中並將SQL語句執行結果儲存在檔案中。在儲存的檔案中執行語句。將文字檔案裝入 SQL*Plus編輯視窗。

6其它比較運算

使用 LIKE 運算選擇類似的值;

選擇條件可以包含字元或數字:% 代表零個或多個字元(任意個字元);_ 代表一個字元;‘%’和‘-’可以同時使用;可以使用 ESCAPE 識別符號 選擇‘%’和 ‘_’ 符號;迴避特殊符號的:使用轉義符。例如:將[%]轉為[\%]、[_]轉為[\_],然後再加上[ESCAPE ‘\’] 即可;使用 IS (NOT) NULL 判斷空值。

例子:

select * from emp where sal between 1000 and 2000;

 

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO       

---------- ---------- --------- ----- -------------- ----- ------ ------ 

7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30 

7521 WARD       SALESMAN   7698 22-2月 -81      1250    500     30 

7654 MARTIN     SALESMAN   7698 28-9月 -81      1250   1400     30 

7844 TURNER     SALESMAN   7698 08-9月 -81      1500      0     30 

7876 ADAMS      CLERK      7788 23-5月 -87      1100            20 

7934 MILLER     CLERK      7782 23-1月 -82      1300            10 

                           

 

select * from emp where sal in(1250,1600);

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO  

---------- ---------- --------- ----- -------------- ----- ------ ------ 

7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30 

7521 WARD       SALESMAN   7698 22-2月 -81      1250    500     30 

7654 MARTIN     SALESMAN   7698 28-9月 -81      1250   1400     30 

 

 

select * from emp where comm is null;

 

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO       

---------- ---------- --------- ----- -------------- ----- ------ ------ 

7369 SMITH      CLERK      7902 17-12月-80       800            20 

7566 JONES      MANAGER    7839 02-4月 -81      2975            20 

7698 BLAKE      MANAGER    7839 01-5月 -81      2850            30 

                           

 

select * from emp where comm is not null;

 

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO       

---------- ---------- --------- ----- -------------- ----- ------ ------ 

7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30 

7521 WARD       SALESMAN   7698 22-2月 -81      1250    500     30 

   

 

select * from emp where ename like 'A%';

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO  

---------- ---------- --------- ----- -------------- ----- ------ ------ 

7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30 

7876 ADAMS      CLERK      7788 23-5月 -87      1100            20 

 

 

select * from emp where ename like '_L%';

EMPNO ENAME      JOB         MGR HIREDATE         SAL   COMM DEPTNO  

---------- ---------- --------- ----- -------------- ----- ------ ------ 

7499 ALLEN      SALESMAN   7698 20-2月 -81      1600    300     30 

7698 BLAKE      MANAGER    7839 01-5月 -81      2850            30 

7782 CLARK      MANAGER    7839 09-6月 -81      2450            10 

 

 

select job_id from jobs where job_id like 'ST\_%' escape '\';

JOB_ID

----------

ST_CLERK

ST_MAN


 

7. 優先順序

可以使用括號改變優先順序順序

8. ORDER BY子句

使用 ORDER BY 子句排序

ASC(ascend): 升序

DESC(descend): 降序

ORDER BY 子句在SELECT語句的結尾。

可以使用不在SELECT 列表中的列排序

例子:

 

select empno,d.deptno,ename,dname,sal from emp e,dept d where e.deptno=d.deptno order by sal asc,d.deptno desc;

 

     EMPNO DEPTNO ENAME      DNAME            SAL                                                   

---------- ------ ---------- -------------- -----                                                   

      7369     20 SMITH      RESEARCH         800                                                   

      7900     30 JAMES      SALES            950                                                   

      7876     20 ADAMS      RESEARCH        1100                                                   

      7521     30 WARD       SALES           1250                                                   

      7654     30 MARTIN     SALES           1250                                                   

      7934     10 MILLER     ACCOUNTING      1300                                                   

      7844     30 TURNER     SALES           1500                                                   

      7499     30 ALLEN      SALES           1600                                                   

      7782     10 CLARK      ACCOUNTING      2450                                                   

      7698     30 BLAKE      SALES           2850                                                   

      7566     20 JONES      RESEARCH        2975                                                   

 

     EMPNO DEPTNO ENAME      DNAME            SAL                                                   

---------- ------ ---------- -------------- -----                                                   

      7788     20 SCOTT      RESEARCH        3000                                                   

      7902     20 FORD       RESEARCH        3000                                                   

      7839     10 KING       ACCOUNTING      5000     


 

相關文章