SQL語言基礎(SELECT語句)

老w愛db發表於2022-11-18

  透過SQL 語句,程式設計師或資料庫管理員可以做如下的主要工作:

1 )建立資料庫的表格,包括設定表格所可以使用之空間。

2 )改變資料庫系統環境設定。

3 )針對某個資料庫或表格,授予使用者存取許可權。

4 )對資料庫表格建立索引值。

5 )修改資料庫表格結構(新建、刪除或是修改表格欄位)。

6 )對資料庫進行資料的新建。

7 )對資料庫進行資料的刪除。

8 )對資料庫進行資料的修改。

9 )對資料庫進行資料的查詢。

SQL 語言分類:


1-1 基本sql語句

SELECT  *|{[DISTINCT] column|expression [alias],...}
FROM  table;

Ø   SELECT 標識選擇哪些列

Ø   * 選擇全部列

Ø   DISTINCT 過濾重複值

Ø   column|expression 選擇的列名或表示式

Ø   alias 表的別名

Ø   FROM 標識從哪個表中選擇

Ø   table 取資料的表名

1-1-1  選擇全部列

SELECT * FROM   departments;

使用”* ”選擇表中的全部列。

在實際工作中,儘量避免使用select * … 因為ORACLE 在解析的過程中, 會將’* ’依次轉換成所有的列名, 這個工作是透過查詢資料字典完成的, 將耗費更多的時間。

1-1-2  選擇特定的列

SELECT department_id, location_id FROM   departments;

1-2 算數運算子

SELECT last_name, salary, salary + 300 FROM   employees;

1-2-1 運算子優先順序

 

Ø   乘除的優先順序高於加減。

Ø   同一優先順序運算子從左向右執行。

Ø   括號內的運算先執行。

SELECT last_name, salary, 12*salary+100 FROM   employees;

1-2-2 使用括號

SELECT last_name, salary, 12*(salary+100) FROM   employees;

1-2-3 定義空值

Ø   空值是無效的,未指定的,未知的或不可預知的值。

Ø   空值不是空格或者0

Ø   各種型別的列都可以包含空值

Ø   NOT NULL PRIMARY KEY 約束列不允許空值


SELECT last_name, job_id, salary, commission_pct FROM   employees;

1-3 列的別名

Ø   重新命名一個列。

Ø   便於計算。

Ø   緊跟列名,也可以在列名和別名之間加入關鍵字‘AS ’,以便在別名中包含空格或特殊的字元並區分大小寫。

SELECT last_name AS name, commission_pct comm FROM   employees;

1-4 連線符

Ø   把列與列,列與字元連線在一起。

Ø   || ’表示。

Ø   可以用來‘合成’列。

SELECT  last_name||job_id AS "Employees" FROM   employees;

1-5 字串

Ø   字串可以是 SELECT 列表中的一個字元, 數字, 日期。

Ø   日期和字元只能在單引號中出現。

Ø   每當返回一行時,字串被輸出一次。

SELECT last_name  ||' is a '||job_id
       AS "Employee Details"
FROM   employees;

1-6 重複行

SELECT department_id FROM   employees;

使用關鍵字‘DISTINCT ’過濾掉多餘的重複記錄

SELECT DISTINCT department_id
FROM   employees;

1-7 過濾

SELECT  *|{[DISTINCT] column|expression [alias],...}
FROM  table
[WHERE  condition(s)];

WHERE 子句緊隨 FROM 子句

1-7-1 WHERE子句

SELECT employee_id, last_name, job_id, department_id
FROM   employees
WHERE  department_id = 90 ;

1-7-2 比較運算

SELECT last_name, salary
FROM   employees
WHERE  salary <= 3000;

1-7-3 其他比較運算

BETWEEN:

使用 BETWEEN 運算來顯示在一個區間內的值

SELECT last_name, salary
FROM   employees
WHERE  salary BETWEEN 2500 AND 3500;

IN:

使用 IN 運算顯示列表中的值

SELECT employee_id, last_name, salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);

LIKE:

使用 LIKE 運算選擇類似的值

選擇條件可以包含字元或數字:

% 代表一個或多個字元。

_ 代表一個字元。

% ’和‘- ’可以同時使用。

可用ESCAPE 識別符號查詢% _

SELECT  first_name
FROM   employees
WHERE  first_name LIKE 'S%';

NULL:

使用 NULL 判斷空值

null 不等於0 ,空格

任意兩個null 不相等

SELECT last_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;

1-7-4 邏輯運算

AND:

AND 要求和的關係為真

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >=10000
AND    job_id LIKE '%MAN%';


OR:

OR 要求或關係為真。

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%';

NOT:

SELECT last_name, job_id
FROM   employees
WHERE  job_id
       NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');

1-7-5 優先順序

1-8 排序

使用 ORDER BY 子句排序

ASC: 升序

DESC: 降序

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

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date ;

規則:

預設按升序排序,可用DESC 說明降序排序

可用表示式或別名排序

NULL 值的顯示:升序在最後;降序在首位

可用位置(列序號)排序

ORDER BY 列表的順序是排序的順序

可用未出現在SELECT 列表中的列排序

1-8-1 降序排序

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date DESC ;

1-8-2 按別名排序

SELECT employee_id, last_name, salary*12 annsal
FROM   employees
ORDER BY annsal;

1-8-3 多個列排序

SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;

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

相關文章