尚硅谷mysql | DQL語言-進(jìn)階2:條件查詢

語法:
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í)-------------------

  1. 查詢員工號為176的員工的姓名和部門號和年薪
SELECT
    LAST_name,
    `department_id`,
    salary * 12 * (1+IFNULL(`commission_pct`,0)) AS 年薪
FROM
    employees
WHERE
    `employee_id` = 176;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容