select條件查詢的格式如下:
SELECT
查詢列表
FROM
表名
WHERE
篩選條件;
1
2
3
4
5
6
根據篩選條件可以分為以下幾類:
按照條件按表達式進行篩選
常用條件運算符如下:> 、<、=、!=、<>、<=、>=
按照邏輯表達式進行篩選
邏輯運算符的主要作用:用於連接條件表達式
& 、 || 、! 、and、or、not
模糊查詢
like、between and 、in、is null
like通常和通配符搭配使用:
①:%:代表任意多個字符
②:_:代表任意單個字符
舉個栗子:
/**查詢員工工資大於10000的員工信息**/
SELECT * FROM employees WHERE salary > 1000;
/**查詢部門標號不等於90號的員工名和部門編號 **/
SELECT name,department_id FROM employees WHERE department_id <> 90;
/**查詢工資在1000-2000之間的員工名,工資 **/
SELECT name,salary FROM employees WHERE salary >= 1000 and salary <=2000;
/**查詢部門編號不再20-40之間或者工資高於15000員工信息 **/
SELECT * FROM employees WHERE department_id < 20
1
2
3
4
5
6
7
8
like:
/**查詢員工名中包含a的員工信息**/
SELECT * FROM employeess WHERE last_name like '%a%';
/**查詢員工名中第三個字符為n,第五個字符為m的員工信息 **/
SELECT * FROM employees WHERE last_name like '__n_m%';
/**查詢員工名中第二個字符_的員工信息**/
/**方法一:使用轉義字符"\"**/
SELECT * FROM employees WHERE last_name like '_\_%';
/**方法二:自定義轉義字符**/
SELECT * FROM employees WHERE last_name like '_$_%' ESCAPE '$';
1
2
3
4
5
6
7
8
9
between and 、in
/**查詢員工工資在1000-2000之間的員工信息(包含臨界值)**/
SELECT * FROM employees WHERE salary BETWEEN 1000 AND 2000;
/**查詢員工工種編號為IT_PROG、AD_VP、AD_PRES中的一個員工名和工種編號**/
/**方法一:**/
SELECT job_id,last_name FROM employees
WHERE job_id ='IT_PROG' OR
job_id ='AD_VP' OR
job_id ='AD_PRES' ;
/**方法二:**/
SELECT job_id,last_name FROM employeess
WHERE job_id in ('IT_PROG','AD_VP','AD_PRES');
1
2
3
4
5
6
7
8
9
10
11
in關鍵字的特點:
判斷某字段的值是否屬於in列表項中的某一項
in列表中的值都是統一類型或者相互兼容(即可以相互轉換)
is null
/**查詢員工沒有獎金的員工名和獎金率**/
SELECT last_name,commission_pct
FROM employeess
WHERE commission_pct IS NULL;
/**查詢員工有獎金的員工名和獎金率**/
SELECT last_name,commission_pct
FROM employeess
WHERE commission_pct IS NOT NULL;
1
2
3
4
5
6
7
8
安全等於 <=>
/**查詢員工工資等於10000的員工信息**/
SELECT * FROM employees WHERE salary <=> 1000;
/**查詢員工沒有獎金的員工名和獎金率**/
SELECT last_name,commission_pct
FROM employeess (http://www.my516.com)
WHERE commission_pct <=> NULL;
1
2
3
4
5
6
正常數值的判斷 null判斷 可讀性
安全等於 <=> 可以判斷 可以判斷 低
is null 不可以判斷 可以判斷 高
/**查詢員工號為124的員工名和部門號以及年薪**/
SELECT
last_name,
department_id,
slary*12(1+IFNULL(comission_pct,0)) AS 年薪
FROM employees
WHERE department_id = 124;
/**查詢employeess表中都涉及到了哪些部門編號**/
SELECT DISTINCT department_id FROM employees ;
1
2
3
4
5
6
7
8
9
思考題:
/**語句1:**/
SELECT * FROM employees;
/**語句2:**/
SELECT * FROM emplooyees
WHERE comission_pct LIKE '%%' AND last_name LIKE'%%';
/**語句3:**/
SELECT * FROM emplooyees
WHERE comission_pct LIKE '%%' OR last_name LIKE'%%';
1
2
3
4
5
6
7
8
問題1:語句1和語句2查詢結果是否相同?
> 不相同,如果comission_id為null(即沒有沒有任何字符)是查詢不出來的;
> 當comission_id不可能為null時,兩者的查詢結果是相同的
1
2
問題2:語句1和語句3查詢結果是否相同
> 相同,因為last_name不可能為null值,此時即使comission_id為null也會被查詢出來。
---------------------