MySQL進階2: 條件查詢

# 進階2: 條件查詢

/*

語法
	select
		查詢列表
	from
		表名
	where
		篩選條件;
		
分類:
	一、按條件表達式篩選
	條件運算符:> < = != <>(也是不等) <= >=
	
	二、按邏輯表達式篩選
	邏輯運算符: && || !
			and or not
	
	三、模糊查詢
		like
		between and | not between and 
		in
		is null | is not null
		
*/

# 一、按條件表達式篩選

# 案例1: 查詢工資>12000的員工信息

SELECT
	*
FROM
	employees
WHERE
	salary>12000;
	
# 案例2: 查詢部門編號不等於90號的員工名和部門編號

SELECT
	last_name,
	department_id
FROM
	employees
WHERE
	department_id<>90;
	
# 二、按邏輯表達式篩選
# 案例1:查詢工資在10000到20000之間的員工名、工資以及獎金
SELECT 
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>=10000 AND salary<=20000;
# 案例2: 查詢部門編號不是在90到110之間,或者工資高於15000的員工信息
SELECT
	*
FROM
	employees
WHERE
	department_id>110 OR department_id<90 OR salary>15000;

# 三、模糊查詢
/*
like
特點:
①一般和通配符搭配使用
	通配符:
	%任意多個字符,包含0個字符
	_任意單個字符

between and
①包含臨界值
②使用between and 可以提高語句的簡潔性
③兩個臨界值不能調換順序

in
含義:判斷某字段的值是否屬於in列表中的某一項
特點:
	①使用in提高語句簡潔度
	②in列表的值類型必須一致或者兼容

is null
is not null
=或者<>不能用於判斷null值
只能用is null或者is not null來判斷null值
*/
# 1.like
# 案例1:查詢員工名中包含字符a的員工信息
SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '%a%'; 
	#%爲通配符,字符型的值必須用單引號,不區分大小寫
	
# 案例2: 查詢員工名單中第三個字符爲n,第五個字符爲l的員工名和工資
SELECT
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__n_l%';

#案例3: 查詢員工名中第二個字符爲_的員工名
SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_\_%';
	# \ 爲轉義字符,上式也可寫爲:
	# last_name LIKE '_$_%' ESCAPE ‘$’
	# 用美元符號代表通配符
	
# 2.between and

# 案例1:查詢員工編號在100到120之間的員工信息
SELECT
	*
FROM
	employees
WHERE
	#employee_id>=100 and employee_id<=120;
	employee_id BETWEEN 100 AND 120;
	
# 3.in
# 案例: 查詢員工的工種編號是IT_PROG、AD_VP、AD_PRES中的一個員工名和工種編號
SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN('IT_PROG','AD_VP','AD_PRES');
	
#4.is null
#案例1: 查詢沒有獎金的員工名和獎金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;
	
#案例2: 查詢有獎金的員工名和獎金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;
	
	
#-------------------------
#補充,安全等於
#案例1: 查詢沒有獎金的員工名和獎金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;
	
#案例2: 查詢工資爲12000的員工名和獎金率
SELECT
	last_name,
	salary
FROM
	employees
WHERE
	salary <=> 12000;

# pk一下is null 和<=>
# is null:僅僅可以判斷NULL值,可讀性較高,建議使用
# <=>    :既可以判斷null值,也可以判斷普通數值,但可讀性較低
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章