目錄
一、數據庫測試表
首先這里給出需要使用到的數據庫表:
鏈接:https://pan.baidu.com/s/17woahG6lupK9FYb3vFNJAg
提取碼:gbb4
里面是一個.sql文件,直接運行即可得到如下幾個測試表:

二、基礎查詢
1. 獲得需要的記錄的特定字段
語法:SELECT后加上需要的結果映射到的字段,若為*則為選取所有字段。
#單個字段查詢
SELECT last_name
FROM employees;
#多個字段
SELECT last_name, salary, email
FROM employees;
#所有字段
SELECT *
FROM employees;
2. 查詢常量值
#查詢常量值
SELECT 100;
SELECT "john";
3. 查詢表達式
例:
SELECT 100%98;
4. 查詢函數
例:
SELECT VERSION();
5. 起別名
為查詢結果的列起一個新的名字,語法:
SELECT 表中的列名 AS 自己起的新名字
FROM 表名;
或者省略AS:
SELECT 表中的列名 自己起的新名字
FROM 表名;
例:
SELECT last_name AS 姓, first_name AS 名
FROM employees;
SELECT last_name 姓, first_name 名
FROM employees;
6. 去重
SELECT DISTINCT 字段名
FROM 表名;
實際過程:
- 查詢到對應的記錄
- 映射到對應的字段
- 最終結果去重
例:
SELECT DISTINCT department_id
FROM employees;
7. CONCAT函數的簡單使用
SELECT CONCAT( last_name, first_name ) AS 姓名
FROM employees;
實際過程:
- 到表中沒有這個字段,然后為所有的記錄添加這個新字段,內容為last_name字段和first_name字段的鏈接
- 查出相應的記錄
- 將所有記錄映射到姓名字段中
運行結果:
三、過濾數據
主要語法:
SELECT 查詢列表
FROM 表名
WHERE 條件;
大綱
- 按條件表達式篩選:
- 簡單條件運算符:
> < = != <> >= <=
- 簡單條件運算符:
- 邏輯表達式:
&& || !AND OR NOT
- 模糊查詢:
LIKE- 一般和通配符搭配使用
- 通配符:
%任意多個字符,包含0個字符_任意單個字符
BETWEEN AND- 簡潔
- 閉區間
- 不可調換順序
IN- 簡潔
IN列表的值類型必須統一或兼容
IS NULL- 可用
IS NULL和IS NOT NULL來判斷是否為空
- 可用
1. 按條件表達式篩選
查詢工資>12000的員工信息:
SELECT *
FROM employees
WHERE salary > 12000;
查詢部門編號不等於90號的員工名和部門編號
SELECT last_name, department_id
FROM employees
WHERE department_id <> 90
ORDER BY department_id; #排序
2. 使用邏輯表達式
查詢工資在10000~20000之間的員工的員工名,工資及獎金
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary>=10000 AND salary<=20000;
部門編號不在90到110之間,或者工資高於15000的員工信息:
SELECT *
FROM employees
WHERE department_id<90
OR department_id>110
OR salary>15000
或
SELECT *
FROM employees
WHERE NOT(department_id>=90 AND department_id<=110)
OR salary>15000
3. 模糊查詢
LIKE
員工名中包含字符a的員工信息:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';

員工名中第三個字符為n,第五個字符為t的員工名和工資:
SELECT last_name, salary
FROM employees
WHERE last_name LIKE '__n_t%';

員工名中第二個字符為_的員工名:
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';# 轉義
BETWEEN AND
員工編號在100到120之間的員工信息
SELECT *
FROM employees
WHERE employee_id >= 100 AND employee_id <= 120;
#================使用BETWEEN AND================
SELECT *
FROM employees
WHERE employee_id BETWEEN 100 AND 120;
IN
查詢員工的工種編號是IT_PROG、AD_VP、AD_PRES中的一個的員工名和工種編號
SELECT last_name, job_id
FROM employees
WHERE job_id IN ('IT_PROG','AD_VP','AD_PRES');
IS NULL
查詢沒有獎金的員工名和獎金律
SELECT last_name, commission_pct
FROM employees
WHERE commission_pct IS NULL;
查詢有獎金的員工名和獎金律
SELECT last_name, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
安全等於 <=>
SELECT last_name, commission_pct
FROM employees
WHERE commission_pct <=> NULL;
