語法:
select
查詢列表
from
表名
where
篩選條件;
分類:
一、按條件表達(dá)式篩選
條件運(yùn)算符:> < = <> <= >=
二、按邏輯表達(dá)式篩選
邏輯運(yùn)算符:用于連接條件表達(dá)式
&& || !
and or not
三、模糊查詢
like
between and
in
is null
USE myemployees
1.按條件表達(dá)式篩選
案例1:查詢工資>12000的員工信息
SELECT
*
FROM
employees
WHERE
salary>12000;
案例2:查詢部門編號不等于90的員工名和部門編號
SELECT
last_name,`department_id`
FROM
employees
WHERE
`department_id` <> 90;
2.按邏輯表達(dá)式篩選
案例1:查詢工資在10000到20000之間的員工名、工資以及獎金
SELECT
last_name,salary,commission_pct
FROM
employees
WHERE
salary <=20000
AND
salary>=10000;
案例2:查詢部門編號不是在90到110之間,或者工資高于15000的員工信息
SELECT
*
FROM
employees
WHERE
NOT (`department_id` >= 90 AND `department_id` <= 110)
OR salary >= 150000
3.模糊查詢
like
特點(diǎn):
一般和通配符搭配使用:
通配符:
% 任意多個字符(包含0個字符)
_ 任意單個字符
\ 轉(zhuǎn)義符
between and
in
is null is not null
1.like
也可以模糊查詢數(shù)字
案例1.查詢員工名中包含字符a的員工信息
SELECT
*
FROM
`employees`
WHERE
`last_name` LIKE '%a%';
案例2:查詢員工名中第三個字符為e,第五個字符為a的員工名和工資
SELECT
last_name,
salary
FROM
employees
WHERE
last_name LIKE '__n_l%';
案例3:查詢員工名中第二個字符為_的員工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_$_%' ESCAPE '$';#escape 定義轉(zhuǎn)義符號
2.between and
使用between and 可以提高代碼簡潔度
包含左右臨界值
左右臨界值不可以顛倒順序
實(shí)例1:查詢員工編號在100到120之間的員工信息
SELECT
*
FROM
employees
WHERE
employee_id >= 100 AND employee_id <= 120;
#---------------------------------------------
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120;
3.in
含義:判斷某字段的值是否屬于in列表中的一項(xiàng)
特點(diǎn):
使用in提高語句簡潔度
in列表的值類型必須一致或兼容
不支持通配符
案例:查詢員工的工種編號是 IT_PROG、AD_VP、AD_PRES中的一個員工和工種編號
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id = 'IT_PROG' OR job_id = 'AD_VP' OR job_id = 'AD_PRES');
#------------------------------------------
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN ('IT_PROG','AD_VP','AD_PRES');
4. is null
= 或 <> 不能用于判斷null值
is null 或 is not null 可以判斷null值
案例1:查詢沒有獎金的員工名和獎金率
SELECT
first_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
案例2:查詢有獎金的員工名和獎金率
SELECT
first_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;
#-------以下為錯誤--------
SELECT
first_name,
commission_pct
FROM
employees
WHERE
salary IS 12000;
安全等于 <=>
可讀性較差
案例1:查詢沒有獎金的員工名和獎金率
SELECT
first_name,
commission_pct
FROM
employees
WHERE
commission_pct <=> NULL;
案例2:查詢工資為12000的員工信息
SELECT
last_name,
salary
FROM
employees
WHERE
salary <=> 12000;
--is null vs <=>------------------
/*
‘a(chǎn)’ is null vs ‘a(chǎn)’ <=> null
is null:僅僅可以判斷null,可讀性較高
<=>:既可以判斷null,又可以判斷普通的數(shù)值,可讀性較低
*/
-----------練習(xí)-------------------
- 查詢員工號為176的員工的姓名和部門號和年薪
SELECT
LAST_name,
`department_id`,
salary * 12 * (1+IFNULL(`commission_pct`,0)) AS 年薪
FROM
employees
WHERE
`employee_id` = 176;