MySQL數(shù)據(jù)庫(kù):第三章:條件查詢
回退至Mysql數(shù)據(jù)庫(kù)理論與實(shí)戰(zhàn)
#進(jìn)階2:條件查詢
語法:
select 查詢列表-----③
from 表名 ----①
where 條件表達(dá)式;-----②
條件表達(dá)式的寫法:
情況一:關(guān)系表達(dá)式
sql中的關(guān)系運(yùn)算符:> < >= <= = <> !=
情況二:邏輯表達(dá)式
sql中的邏輯運(yùn)算符:
and、 or、 not【官方標(biāo)準(zhǔn)】
&& || !
情況三:模糊查詢 ★
like、between and、in、is null
#一、按關(guān)系表達(dá)式進(jìn)行查詢
#案例1 :查詢工資>8000的員工信息
SELECT * FROM employees WHERE salary>8000;
#案例2:查詢工種號(hào)不是’IT_PROG‘的員工姓名、工種號(hào)和工資
#方式一
SELECT last_name,job_id,salary
FROM employees
WHERE job_id <> 'IT_PROG';
#方式二
SELECT last_name,job_id,salary
FROM employees
WHERE NOT(job_id = 'IT_PROG');
#二、按邏輯表達(dá)式進(jìn)行查詢
#案例1:查詢工資不在5000——12000的,并且部門編號(hào)>90的員工信息
#方式一
SELECT *
FROM employees
WHERE NOT(salary>=5000 AND salary<=12000) AND department_id>90;
#方式二
SELECT *
FROM employees
WHERE salary<5000 OR salary>12000 AND department_id>90;
#三、模糊查詢
#1、like
功能:一般和通配符搭配,進(jìn)行模糊查詢
通配符:
%任意多個(gè)字符,包含0個(gè)
_任意單個(gè)字符
#案例1:查詢員工姓名中包含字符a的員工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
#案例2:查詢員工姓名中首字符為e的員工信息
SELECT * FROM employees WHERE last_name LIKE 'e%';
#案例3:查詢員工姓名中首字符為ernst的員工信息
SELECT * FROM employees WHERE last_name LIKE 'ernst%';
#案例4:查詢員工姓名中第三個(gè)字符為c,并且第五個(gè)字符為h的員工信息
SELECT * FROM employees WHERE last_name LIKE '__c_h%';
#案例5:查詢員工姓名中第二個(gè)字符為_的員工信息
#轉(zhuǎn)義的使用方式一:使用\
SELECT * FROM employees WHERE last_name LIKE '_\_%';
#轉(zhuǎn)義的使用方式二:使用escapse
SELECT * FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
#案例6:查詢員工編號(hào)為2開頭的員工信息
SELECT * FROM employees WHERE employee_id LIKE '2%';
#2、between and
功能:判斷某個(gè)字段的值是否在xx區(qū)間
用法:
between xx and xx
not between xx and xx
特點(diǎn):
①和使用邏輯表達(dá)式的效果是等價(jià)的,但語法更加簡(jiǎn)潔
②包含兩個(gè)臨界值
③兩個(gè)臨界值的順序不能調(diào)換
#案例1:查詢工資在10000 到20000之間的員工信息
#方式一
SELECT * FROM employees WHERE salary>=10000 AND salary<=20000;
#方式二
SELECT * FROM employees WHERE salary BETWEEN 20000 AND 10000;
#案例2:查詢年薪在100000 到200000之間的員工的姓名和年薪
SELECT last_name,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE salary*12*(1+IFNULL(commission_pct,0)) BETWEEN 100000 AND 200000;
#案例3:查詢年薪不在100000 到200000之間的員工的姓名和年薪
#方式一:
SELECT last_name,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE NOT(salary*12*(1+IFNULL(commission_pct,0)) BETWEEN 100000 AND 200000);
#方式二:
SELECT last_name,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE salary*12*(1+IFNULL(commission_pct,0)) NOT BETWEEN 100000 AND 200000;
#3、in
功能:判斷某個(gè)字段的值是否屬于指定列表中的一個(gè)元素
用法:
in(常量值1,常量值2,。。。)
not in(常量值1,常量值2,。。。)
#案例1:查詢員工的部門編號(hào)是30或50或60或90的員工信息
#方式一:使用邏輯表達(dá)式
SELECT * FROM employees WHERE department_id = 30 OR department_id = 50 OR department_id = 60 OR department_id = 90;
#方式二:使用in
SELECT * FROM employees WHERE department_id IN(30,50,60,90);
#案例2:查詢工種不是 it_prog、clerk、st_fan的員工姓名、工種、部門編號(hào)
SELECT last_name,job_id,department_id
FROM employees
WHERE job_id NOT IN('IT_PROG','CLERK','ST_FAN');
#4、is null
功能:判斷某個(gè)字段是否為空
用法:
is null
is not null
#案例1:查詢沒有獎(jiǎng)金的員工信息
SELECT * FROM employees WHERE commission_pct IS NULL;
#案例2:查詢有獎(jiǎng)金的員工信息
SELECT * FROM employees WHERE commission_pct IS NOT NULL;
USE myemployees;
#1. 查詢工資大于 12000 的員工姓名和工資
SELECT last_name,salary
FROM employees
WHERE salary>12000;
#2. 查詢員工號(hào)為 176 的員工的姓名和部門號(hào)和年薪
SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE employee_id = 176;
#3. 選擇工資不在 5000 到 12000 的員工的姓名和工資
SELECT last_name,salary
FROM employees
WHERE salary NOT BETWEEN 5000 AND 12000;
#4. 選擇在 20 或 50 號(hào)部門工作的員工姓名和部門號(hào)
SELECT last_name,department_id
FROM employees
WHERE department_id IN(20,50);
#5. 選擇公司中沒有管理者的員工姓名及 job_id
SELECT last_name,job_id
FROM employees
WHERE manager_id IS NULL;
#6. 選擇公司中有獎(jiǎng)金的員工姓名,工資和獎(jiǎng)金級(jí)別
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
#7. 選擇員工姓名的第三個(gè)字母是 a 的員工姓名
SELECT last_name FROM employees WHERE last_name LIKE '__a%';
#8. 選擇姓名中有字母 a 和 e 的員工姓名
#方式一
SELECT last_name FROM employees WHERE last_name LIKE '%a%e%' OR last_name LIKE '%e%a%';
#方式二
SELECT last_name FROM employees WHERE last_name LIKE '%a%' AND last_name LIKE '%e%';
#9. 顯示出表 employees 表中 first_name 以 'e'結(jié)尾的員工信息
SELECT * FROM employees WHERE first_name LIKE '%e';
#10. 顯示出表 employees 部門編號(hào)在 80-100 之間 的姓名、職位
SELECT last_name,job_id FROM employees WHERE department_id BETWEEN 80 AND 100;
#11. 顯示出表 employees 的 manager_id 是 100,101,110 的員工姓名、職位
SELECT last_name,job_id FROM employees WHERE manager_id IN(100,101,110);