最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 查詢過濾之WHERE 子句與運算符實戰(zhàn)技巧

 更新時間:2025年09月05日 11:32:25   作者:cyforkk  
本文將系統(tǒng)講解WHERE子句的用法及常用運算符(算術(shù)、比較)的規(guī)則與實戰(zhàn)技巧,幫你掌握數(shù)據(jù)篩選的精髓,本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

MySQL 查詢過濾:WHERE 子句與運算符全解析

在 MySQL 中,WHERE子句是數(shù)據(jù)過濾的核心工具,通過搭配不同運算符,能精準篩選出符合條件的記錄。本文將系統(tǒng)講解WHERE子句的用法及常用運算符(算術(shù)、比較)的規(guī)則與實戰(zhàn)技巧,幫你掌握數(shù)據(jù)篩選的精髓。

一、WHERE 子句基礎(chǔ):定位核心數(shù)據(jù)

WHERE子句的作用是從表中篩選出滿足指定條件的行,其位置固定在FROM子句之后,是 SQL 查詢中實現(xiàn) “精準提取” 的關(guān)鍵。

1. 基本語法結(jié)構(gòu)

SELECT 字段1, 字段2, ...
FROM 表名
WHERE 過濾條件;  -- 條件由運算符連接字段或值組成

2. 核心作用

  • 減少返回結(jié)果量,提升查詢效率;
  • 聚焦目標數(shù)據(jù),避免無關(guān)信息干擾。

3. 示例

-- 查詢薪資大于5000的員工姓名和薪資
SELECT last_name, salary
FROM employees
WHERE salary > 5000;

二、算術(shù)運算符:數(shù)值計算的基礎(chǔ)工具

算術(shù)運算符用于對數(shù)值型字段或表達式進行計算,常見包括+(加)、-(減)、*(乘)、/(除)、%(取模),主要用于WHERE子句中的條件計算。

1. 核心規(guī)則與示例

運算符作用規(guī)則與注意事項示例(基于employees表)
+加法僅做數(shù)值加法,字符串會嘗試轉(zhuǎn)為數(shù)值(失敗則按 0 計算),與 Java 的字符串拼接不同WHERE salary + 1000 > 6000(薪資 + 1000 后大于 6000)
-減法整數(shù)減整數(shù)結(jié)果為整數(shù),整數(shù)減浮點數(shù)結(jié)果為浮點數(shù)WHERE salary - bonus > 4000
*乘法結(jié)果類型隨操作數(shù)變化(整數(shù) × 浮點數(shù) = 浮點數(shù))WHERE salary * 1.2 > 8000(薪資漲 20% 后大于 8000)
/除法結(jié)果始終為浮點數(shù),除以 0 返回NULLWHERE salary / 12 > 500(月薪 / 12 后大于 500)
%取模(余數(shù))返回除法余數(shù),符號與被除數(shù)一致WHERE employee_id % 2 = 0(員工 ID 為偶數(shù))

2. 關(guān)鍵說明

  • 優(yōu)先級:*、/、% 高于 +、-,可通過括號()調(diào)整順序;
  • 字符串參與運算時,MySQL 會自動嘗試轉(zhuǎn)換為數(shù)值(如’123’→123,'abc’→0)。

三、比較運算符:條件判斷的核心武器

比較運算符用于判斷值或表達式的關(guān)系,返回結(jié)果為1(真)、0(假)或NULL(未知),是WHERE子句中最常用的條件構(gòu)建工具。

1. 基礎(chǔ)比較運算符(=、<=>、<>/!=)

運算符作用規(guī)則與注意事項示例
=等于不能判斷NULL(NULL = NULL返回NULL);字符串按 ANSI 編碼比較,數(shù)字按數(shù)值比較WHERE department_id = 30(部門 ID 等于 30)
<=>安全等于可判斷NULL(NULL <=> NULL返回 1),其他與=一致WHERE commission_pct <=> NULL(傭金率為 NULL)
<>/!=不等于不能判斷NULL(任意操作數(shù)為NULL則返回NULL)WHERE salary != 5000(薪資不等于 5000)

2. NULL 相關(guān)運算符(IS NULL、IS NOT NULL)

專門用于判斷NULL值(=無法勝任):

-- 查詢沒有上級的員工(manager_id為NULL)
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL;  -- 等價于 ISNULL(manager_id)
-- 查詢有上級的員工
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NOT NULL;

3. 范圍與集合運算符(BETWEEN AND、IN、NOT IN)

  • BETWEEN AND:判斷值是否在指定區(qū)間(閉區(qū)間,包含邊界)
-- 查詢薪資在5000-8000之間的員工(包含5000和8000)
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 5000 AND 8000;
  • IN / NOT IN:判斷值是否在指定集合中
-- 查詢部門ID為30、50、70的員工
SELECT last_name, department_id
FROM employees
WHERE department_id IN (30, 50, 70);
-- 查詢部門ID不在30、50、70的員工
SELECT last_name, department_id
FROM employees
WHERE department_id NOT IN (30, 50, 70);

注意:集合中包含NULL時,IN/NOT IN返回NULL。

4. 極值運算符(LEAST、GREATEST)

  • LEAST(值1, 值2, …):返回參數(shù)中的最小值
  • GREATEST(值1, 值2, …):返回參數(shù)中的最大值
-- 查詢薪資、獎金、補貼中的最小值大于2000的員工
SELECT last_name, salary, bonus, subsidy
FROM employees
WHERE LEAST(salary, bonus, subsidy) > 2000;
-- 查詢?nèi)齻€業(yè)績指標中的最大值大于90的員工
SELECT last_name, kpi1, kpi2, kpi3
FROM employees
WHERE GREATEST(kpi1, kpi2, kpi3) > 90;

注意:參數(shù)包含NULL時,返回NULL。

5. 模糊匹配(LIKE、REGEXP)

用于字符串的模糊匹配,適合不確定完整值的場景。

(1)LIKE 與通配符
  • %:匹配 0 個或多個任意字符;
  • _:匹配 1 個任意字符;
  • ESCAPE:指定轉(zhuǎn)義符,處理包含%或_的字符串。
-- 1. 查詢姓名以"張"開頭的員工(%匹配后續(xù)任意字符)
SELECT last_name
FROM employees
WHERE last_name LIKE '張%';
-- 2. 查詢姓名第二個字是"小"的員工(_匹配1個字符)
SELECT last_name
FROM employees
WHERE last_name LIKE '_小%';
-- 3. 查詢崗位包含"_IT"的員工(用$轉(zhuǎn)義_)
SELECT job_id
FROM jobs
WHERE job_id LIKE '%$\_IT%' ESCAPE '$';  -- ESCAPE指定$為轉(zhuǎn)義符
(2)REGEXP 與正則匹配

支持更復(fù)雜的字符串模式匹配,常用元字符:

  • ^:匹配開頭;$:匹配結(jié)尾;
  • .:匹配任意單個字符;
  • [abc]:匹配 a、b、c 中的任意一個;[0-9]:匹配任意數(shù)字;
  • *:匹配前面字符 0 次或多次。
-- 1. 查詢郵箱以"a"開頭的員工
SELECT email
FROM employees
WHERE email REGEXP '^a';
-- 2. 查詢姓名包含"李"或"王"的員工
SELECT last_name
FROM employees
WHERE last_name REGEXP '[李王]';
-- 3. 查詢手機號以138開頭且后8位全為數(shù)字的員工
SELECT phone_number
FROM employees
WHERE phone_number REGEXP '^138[0-9]{8}$';

四、核心注意事項

  1. NULL 的特殊性
    • 不能用=/!=判斷NULL,必須用IS NULL/IS NOT NULL或<=>;
    • 任何包含NULL的運算結(jié)果都為NULL。
  1. 字符串與數(shù)值的比較
    • 字符串會自動轉(zhuǎn)為數(shù)值(如’123’ = 123返回 1),轉(zhuǎn)換失敗按 0 處理(如’abc’ = 0返回 1)。
  1. 運算符優(yōu)先級
    • 算術(shù)運算符 > 比較運算符;
    • 不確定時用括號()明確順序(如WHERE (salary + bonus) > 10000)。
  1. 性能建議
    • 避免在WHERE子句中對字段做運算(如WHERE salary*1.2 > 8000),可能導(dǎo)致索引失效;
    • 模糊匹配時,%放在開頭(如LIKE ‘%abc’)會導(dǎo)致索引失效,盡量用LIKE ‘abc%’。

五、總結(jié):運算符使用速查表

類別運算符核心用途關(guān)鍵特點
算術(shù)運算符+、-、*、/、%數(shù)值計算+僅做加法,/結(jié)果為浮點數(shù)
基礎(chǔ)比較=、<=>、<>/!=判斷等于 / 不等于,<=>支持 NULL=不支持 NULL,<=>是安全等于
NULL 判斷IS NULL、IS NOT NULL判斷 NULL 值唯一能可靠判斷 NULL 的方式
范圍集合BETWEEN AND、IN判斷值在區(qū)間 / 集合內(nèi)BETWEEN是閉區(qū)間,IN集合含 NULL 返回 NULL
極值判斷LEAST、GREATEST取多個值中的最小 / 最大值含 NULL 則返回 NULL
模糊匹配LIKE、REGEXP字符串模糊匹配,REGEXP支持正則LIKE用%/_,REGEXP用元字符

掌握這些運算符,能讓你寫出更精準、高效的WHERE子句,輕松應(yīng)對各種數(shù)據(jù)篩選場景。實際使用時,建議結(jié)合具體業(yè)務(wù)需求選擇合適的運算符,并注意避免常見的性能陷阱。

到此這篇關(guān)于MySQL 查詢過濾之WHERE 子句與運算符實戰(zhàn)技巧的文章就介紹到這了,更多相關(guān)mysql where子句與運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

赫章县| 内江市| 济阳县| 汉寿县| 夹江县| 盐津县| 西盟| 如东县| 福贡县| 大荔县| 胶州市| 青冈县| 蒙阴县| 天镇县| 黑龙江省| 唐山市| 崇礼县| 福海县| 黔西| 宣威市| 报价| 奉贤区| 治县。| 霍城县| 论坛| 手游| 定远县| 大方县| 缙云县| 房山区| 东台市| 连南| 伊春市| 滨海县| 阿坝| 吴桥县| 天等县| 仁寿县| 全椒县| 色达县| 如皋市|