使用SQL SELECT語句檢索資料

brj880719發表於2017-09-20

一、官檔

Book → SQL Language Reference → 19 SQL Statements: SAVEPOINT to UPDATE → SELECT

二、基礎語法

  1.  SELECT {[distinct]列名,列名,…}|*
  2.    FROM 表名
  3.  [WHERE 條件]
  4.  [GROUP BY 分組列名] 
  5. [HAVING 聚合函式]
  6.  [ORDER BY 排序列名 ASC|DESC]

三、符號

1、單引號('):在Oracle中,應該只使用單引號將文字和字元和日期括起來,不能使用引號(包括單雙引號)將數字括起來。 

2、雙引號("):在Oracle中,單雙引號含義不同。雙引號被用來將包含特定字元或者空格的列別名括起來。雙引號還被用來將文字放入日期格式。

3、撇號('):在Oracle中,撇號也可以寫成彼此相鄰的兩個單引號。為了在供應商名字中間查詢所有帶撇號的供應商名字,可以這樣編寫程式碼: 
select * from l_suppliers where supplier_name like '%''%' 

4、&符號:在Oracle中,&符號常用來指出一個變數。例如,&fox是一個變數,稍微有點不同的一種&& fox。每當&fox出現在Oracle指令碼中時,都會要求您為它提供一個值。而使用&&fox,您只需要在& &fox第一次出現時為它提供變數值。如果想將&符號作為普通的符號使用,則應該關閉這個特性。要想關閉這個特性,可以執行以下的命令: set define off ,這是一個SQLplus命令,不是一個SQL命令。SQLplus設定了SQL在Oracle中執行的環境。 

5、雙豎線(||):Oracle使用雙豎線表示字串連線函式。 

6、星號(*):select *意味著選擇所有的列,count(*)意味著計算所有的行,表示萬用字元時,表示0個或任意多個字元。 

7、正斜槓(/):在Oracle中,用來終止SQL語句。更準確的說,是表示了“執行現在位於緩衝區的SQL程式碼”。正斜槓也用作分隔項。 

8、不等於:有多種表達方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)

9、加減乘除:+ - * /

四、別名

  1. SELECT EMPNO AS "員工編號", ENAME AS "員工名稱" FROM EMP;

  2. SELECT EMPNO 員工編號, ENAME 員工名稱 FROM EMP;

  3. SELECT EMPNO "員工編號", ENAME "員工名稱" FROM EMP;

五、去重

  1. --員工分佈在哪些部門 ,列出部門ID
  2. SELECT DISTINCT DEPARTMENT_ID FROM EMPLOYEES

六、DESCRIBE

  1. DESC OWNER.TABLE_NAME;

  2. SELECT COLUMN_NAME,
  3.       DECODE(NULLABLE, 'Y', ' ', 'NOT NULL') NULLABLE,
  4.       DECODE(DATA_TYPE,
  5.               'RAW', DATA_TYPE || '(' || DATA_LENGTH || ')',
  6.               'CHAR', DATA_TYPE || '(' || DATA_LENGTH || ')',
  7.               'VARCHAR', DATA_TYPE || '(' || DATA_LENGTH || ')',
  8.               'VARCHAR2', DATA_TYPE || '(' || DATA_LENGTH || ')',
  9.               'NUMBER', NVL2(DATA_PRECISION,
  10.                             DECODE(DATA_SCALE,
  11.                                     0, DATA_TYPE || '(' || DATA_PRECISION || ')',
  12.                                     DATA_TYPE || '(' || DATA_PRECISION || ',' || DATA_SCALE || ')'),
  13.                             DATA_TYPE),
  14.               DATA_TYPE) DATA_TYPE
  15.   FROM DBA_TAB_COLUMNS
  16. WHERE OWNER = UPPER('&sch')
  17.   AND TABLE_NAME = UPPER('&tab')
  18. ORDER BY COLUMN_ID

七、查詢例子

  1. --*:表示查詢所有列
  2. select * from employees;
  3. --查詢固定列
  4. select DEPARTMENT_NAME, MANAGER_ID
  5. from departments;
  6. --*:在運算子裡表示乘以
  7. select FIRST_NAME 名字,
  8. SALARY * COMMISSION_PCT*12 年度獎金
  9. from employees
  10. where salary > 10000;
  11. --||:拼接字串
  12. --'':表示單引號,在字串裡顯示,用於區分'結束輸出
  13. select last_name || ' ''s salary is : ' || salary aaa
  14. from employees
  15. where salary > 10000;
  16. --多個單引號時使用q'[]',避免多次使用''
  17. select last_name || q'[ 's sa'la'ry' is : ]' || salary aaa
  18. from employees
  19. where salary > 10000;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145210/,如需轉載,請註明出處,否則將追究法律責任。

相關文章