mysql條件查詢 條件表達式查詢 邏輯表達式查詢 (and or not)模糊查詢(like in between and is null) (二)

進階2:條件查詢

/*

語法:
	select 
		查詢列表
	from
		表名
	where
		篩選條件;

分類:
一、按條件表達式篩選

簡單條件運算符:> < = != <> >= <=  其中的<> 表示不等於的意思

二、按邏輯表達式篩選
邏輯運算符:
作用:用於連接條件表達式
	&& || !
	and or not
	
&&和and:兩個條件都爲true,結果爲true,反之爲false
||或or: 只要有一個條件爲true,結果爲true,反之爲false
!或not: 如果連接的條件本身爲false,結果爲true,反之爲false

三、模糊查詢
	like
	between and
	in
	is null

*/

一、按條件表達式篩選

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

SELECT 
	*
FROM
	employees
WHERE
	salary>12000;

案例2:查詢部門編號不等於90號的員工名和部門編號

SELECT 
	last_name,
	department_id
FROM
	employees
WHERE
	department_id<>90;

二、按邏輯表達式篩選

案例1:查詢工資z在10000到20000之間的員工名、工資以及獎金

SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>=10000 AND salary<=20000;

案例2:查詢部門編號不是在90到110之間,或者工資高於15000的員工信息

SELECT
	*
FROM
	employees
WHERE
	NOT(department_id>=90 AND  department_id<=110) OR salary>15000;

三、模糊查詢

/*
like

	
	
between and
in
is null|is not null

*/
#1.like
/*

特點:
①一般和通配符搭配使用
通配符:
% 任意多個字符,包含0個字符
_ 任意單個字符

*、

案例1:查詢員工名中包含字符a的員工信息

select 
	*
from
	employees
where
	last_name like '%a%';#abc

案例2:查詢員工名中第三個字符爲e,第五個字符爲a的員工名和工資

select
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__n_l%';

案例3:查詢員工名中第二個字符爲_的員工名

其中的特殊字符 用escape來表示
    SELECT
    	last_name
    FROM
    	employees
    WHERE
    	last_name LIKE '_$_%' ESCAPE '$';

2.between and

/*

①使用between(min) and(max) 可以提高語句的簡潔度 ②包含臨界值 ③兩個臨界值不要調換順序 */

案例1:查詢員工編號在100到120之間的員工信息

SELECT
	*
FROM
	employees
WHERE
	employee_id >= 120 AND employee_id<=100;

#----------------------

SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 120 AND 100;

3.in

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

*/

案例:查詢員工的工種編號是 IT_PROG、AD_VP、AD_PRES中的一個員工名和工種編號

SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';


#------------------

SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

4、is null

/ =或<>不能用於判斷null值 is null或is not null 可以判斷null值 /

案例1:查詢沒有獎金的員工名和獎金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

案例1:查詢有獎金的員工名和獎金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

----------以下爲×

SELECT
	last_name,
	commission_pct
FROM
	employees

WHERE 
	salary IS 12000;

安全等於 <=>

案例1:查詢沒有獎金的員工名和獎金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=>NULL;

案例2:查詢工資爲12000的員工信息

SELECT
	last_name,
	salary
FROM
	employees

WHERE 
	salary <=> 12000;

is null pk <=>

IS NULL:僅僅可以判斷NULL值,可讀性較高,建議使用 <=> :既可以判斷NULL值,又可以判斷普通的數值,可讀性較低

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章