MySQL中比較運(yùn)算符的具體使用
符號(hào)類型運(yùn)算符
運(yùn)算符 | 名稱 | 作用 | 示例 |
---|---|---|---|
= | 等于運(yùn)算符 | 判斷兩個(gè)值、字符串或表達(dá)式是否相等 | SELECT * FROM users WHERE age = 25 SELECT name FROM products WHERE category = 'Electronics' |
<=> | 安全等于運(yùn)算符 | 安全地判斷兩個(gè)值、字符串或表達(dá)式是否相等(兼容NULL值) | SELECT * FROM employees WHERE salary <=> NULL SELECT * FROM orders WHERE coupon_code <=> 'DISCOUNT' |
<> | 不等于運(yùn)算符 | 判斷兩個(gè)值、字符串或表達(dá)式是否不相等 | SELECT * FROM students WHERE gender <> 'F' SELECT id FROM logs WHERE status <> 200 |
!= | 不等于運(yùn)算符 | 判斷兩個(gè)值、字符串或表達(dá)式是否不相等 | SELECT * FROM inventory WHERE quantity != 0 SELECT email FROM users WHERE deleted_at != NULL |
< | 小于運(yùn)算符 | 判斷前面的值是否小于后面的值 | SELECT * FROM products WHERE price < 100 SELECT * FROM events WHERE start_time < '2023-01-01' |
<= | 小于等于運(yùn)算符 | 判斷前面的值是否小于等于后面的值 | SELECT * FROM members WHERE age <= 18 SELECT * FROM tasks WHERE priority <= 3 |
> | 大于運(yùn)算符 | 判斷前面的值是否大于后面的值 | SELECT * FROM employees WHERE salary > 5000 SELECT * FROM articles WHERE views > 1000 |
>= | 大于等于運(yùn)算符 | 判斷前面的值是否大于等于后面的值 | SELECT * FROM candidates WHERE score >= 60 SELECT * FROM reservations WHERE guests >= 4 |
1. 等于運(yùn)算符=
- 作用:判斷兩個(gè)值、字符串或表達(dá)式是否相等
- 特點(diǎn):
- 嚴(yán)格比較(NULL = NULL 返回NULL)
- 區(qū)分大小寫(取決于數(shù)據(jù)庫配置)
- 示例:
-- 數(shù)值比較 SELECT * FROM employees WHERE salary = 5000; -- 字符串比較 SELECT * FROM products WHERE name = 'Laptop';
2. 安全等于運(yùn)算符<=>
- 作用:安全地判斷兩個(gè)值/字符串/表達(dá)式是否相等(含NULL值)
- 特點(diǎn):
- NULL <=> NULL 返回TRUE
- 其他情況與
=
相同
- 示例:
-- NULL值安全比較 SELECT * FROM customers WHERE phone_number <=> NULL; -- 常規(guī)比較 SELECT * FROM orders WHERE status <=> 'completed';
3. 不等于運(yùn)算符<>或!=
- 作用:判斷兩個(gè)值/字符串/表達(dá)式是否不相等
- 特點(diǎn):
<>
是標(biāo)準(zhǔn)SQL語法!=
是兼容性語法- 兩者功能完全相同
- 示例:
-- 使用<> SELECT * FROM students WHERE grade <> 'F'; -- 使用!= SELECT * FROM inventory WHERE stock_quantity != 0;
4. 小于運(yùn)算符<
- 作用:判斷前面的值是否小于后面的值
- 數(shù)據(jù)類型支持:
- 數(shù)值:
3 < 5
→ TRUE - 字符串:按字典序比較
- 日期:
'2023-01-01' < '2023-02-01'
→ TRUE
- 數(shù)值:
- 示例:
-- 數(shù)值比較 SELECT * FROM products WHERE price < 1000; -- 日期比較 SELECT * FROM events WHERE start_date < CURRENT_DATE;
5. 小于等于運(yùn)算符<=
- 作用:判斷前面的值是否小于或等于后面的值
- 邊界情況:
5 <= 5
→ TRUENULL <= 5
→ NULL
- 示例:
-- 年齡篩選 SELECT * FROM users WHERE age <= 18; -- 庫存檢查 SELECT * FROM warehouse WHERE quantity <= reorder_level;
6. 大于運(yùn)算符>
- 作用:判斷前面的值是否大于后面的值
- 字符串比較規(guī)則:
'Apple' > 'Banana'
→ FALSE(按字符編碼比較)- 大小寫敏感(‘A’ > ‘a’ 結(jié)果取決于排序規(guī)則)
- 示例:
-- 薪資查詢 SELECT name FROM employees WHERE salary > 10000; -- 時(shí)間范圍 SELECT * FROM logs WHERE timestamp > '2023-06-01 00:00:00';
7. 大于等于運(yùn)算符>=
- 作用:判斷前面的值是否大于或等于后面的值
- 特殊注意:
- 對(duì)NULL值的比較總是返回NULL
- 適用于范圍查詢的閉合區(qū)間
- 示例:
-- 分?jǐn)?shù)篩選 SELECT student_id FROM exams WHERE score >= 60; -- 日期范圍 SELECT * FROM reservations WHERE end_date >= '2023-12-31';
8.綜合比較表
運(yùn)算符 | NULL處理 | 適用場(chǎng)景 | 典型用例 |
---|---|---|---|
= | 返回NULL | 精確匹配查詢 | 用戶登錄驗(yàn)證 |
<=> | 返回TRUE | 需要包含NULL值的比較 | 可選字段檢查 |
<>/!= | 返回NULL | 排除特定值的查詢 | 過濾無效記錄 |
< | 返回NULL | 范圍查詢(開區(qū)間) | 查找歷史數(shù)據(jù) |
<= | 返回NULL | 范圍查詢(閉區(qū)間) | 統(tǒng)計(jì)截止某日期的數(shù)據(jù) |
> | 返回NULL | 下限篩選 | 查找高價(jià)值客戶 |
>= | 返回NULL | 下限篩選(含邊界) | 達(dá)標(biāo)數(shù)據(jù)篩選 |
非符號(hào)類型運(yùn)算符
運(yùn)算符 | 名稱 | 作用 | 示例 |
---|---|---|---|
IS NULL | 為空運(yùn)算符 | 判斷值/字符串/表達(dá)式是否為空 | SELECT B FROM table WHERE A IS NULL |
IS NOT NULL | 不為空運(yùn)算符 | 判斷值/字符串/表達(dá)式是否不為空 | SELECT B FROM table WHERE A IS NOT NULL |
LEAST | 最小值運(yùn)算符 | 在多個(gè)值中返回最小值 | SELECT D FROM table WHERE C = LEAST(A,B) |
GREATEST | 最大值運(yùn)算符 | 在多個(gè)值中返回最大值 | SELECT D FROM table WHERE C = GREATEST(A,B) |
BETWEEN | 區(qū)間運(yùn)算符 | 判斷值是否在兩個(gè)值之間 | SELECT D FROM table WHERE C BETWEEN A AND B |
IN | 屬于運(yùn)算符 | 判斷值是否為列表中的任意一個(gè) | SELECT D FROM table WHERE C IN (A,B) |
NOT IN | 不屬于運(yùn)算符 | 判斷值是否不在列表中 | SELECT D FROM table WHERE C NOT IN (A,B) |
LIKE | 模糊匹配運(yùn)算符 | 判斷值是否符合模糊匹配規(guī)則 | SELECT C FROM table WHERE A LIKE B |
REGEXP/RLIKE | 正則表達(dá)式運(yùn)算符 | 判斷值是否符合正則表達(dá)式 | SELECT C FROM table WHERE A REGEXP B |
一、空值判斷運(yùn)算符
1.IS NULL
- 功能:判斷值/字符串/表達(dá)式是否為空
- 語法:
WHERE column IS NULL
- 特點(diǎn):
- 唯一正確的NULL值判斷方式(
= NULL
是錯(cuò)誤語法) - 適用于所有數(shù)據(jù)類型
- 唯一正確的NULL值判斷方式(
- 示例:
-- 查找未填寫電話號(hào)碼的用戶 SELECT * FROM users WHERE phone IS NULL;
2.IS NOT NULL
- 功能:判斷值/字符串/表達(dá)式是否不為空
- 語法:
WHERE column IS NOT NULL
- 應(yīng)用場(chǎng)景:
- 數(shù)據(jù)完整性檢查
- 有效記錄篩選
- 示例:
-- 查找已激活的用戶(email不為空) SELECT * FROM accounts WHERE email IS NOT NULL;
二、極值運(yùn)算符
3.LEAST
- 功能:返回參數(shù)列表中的最小值
- 特點(diǎn):
- 支持2個(gè)及以上參數(shù)
- 可比較數(shù)值/字符串/日期等類型
- 示例:
-- 獲取最早日期 SELECT LEAST('2023-01-01', '2022-12-31', '2023-05-15');
4.GREATEST
- 功能:返回參數(shù)列表中的最大值
- 典型應(yīng)用:
- 價(jià)格上限控制
- 有效期計(jì)算
- 示例:
-- 計(jì)算最終價(jià)格(不超過建議零售價(jià)) SELECT product_id, LEAST(price, msrp) AS final_price FROM products;
三、范圍運(yùn)算符
5.BETWEEN
- 功能:判斷值是否在指定范圍內(nèi)(閉區(qū)間)
- 等效寫法:
WHERE x >= a AND x <= b
- 注意事項(xiàng):
- 總是先寫小值再寫大值
- 日期范圍查詢時(shí)包含邊界
- 示例:
-- 查詢2023年Q2訂單 SELECT * FROM orders WHERE order_date BETWEEN '2023-04-01' AND '2023-06-30';
四、集合運(yùn)算符
6.IN
- 功能:判斷值是否在指定列表中
- 性能建議:
- 列表項(xiàng)超過100時(shí)考慮臨時(shí)表
- 支持子查詢
- 示例:
-- 查找特定品類商品 SELECT * FROM products WHERE category_id IN (1, 3, 5);
7.NOT IN
- 功能:判斷值是否不在指定列表中
- NULL值陷阱:
- 當(dāng)列表包含NULL時(shí),所有比較返回NULL
- 建議配合
IS NOT NULL
使用
- 示例:
-- 排除測(cè)試賬戶 SELECT * FROM users WHERE user_id NOT IN (999, 1000);
五、模式匹配運(yùn)算符
8.LIKE
- 通配符:
符號(hào) 功能 %
匹配任意數(shù)量字符 _
匹配單個(gè)字符 - 大小寫敏感:取決于數(shù)據(jù)庫配置
- 示例:
-- 查找J開頭的姓名 SELECT * FROM employees WHERE name LIKE 'J%';
9.REGEXP/RLIKE
- 功能:正則表達(dá)式匹配(兩者完全等效)
- 常用模式:
^
:字符串開始$
:字符串結(jié)束[0-9]
:數(shù)字字符
- 示例:
-- 驗(yàn)證郵箱格式 SELECT * FROM contacts WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';
六、特殊說明
10.ISNULL(MySQL特有)
- 注意:與
IS NULL
功能相同,但非SQL標(biāo)準(zhǔn) - 建議:優(yōu)先使用標(biāo)準(zhǔn)語法
IS NULL
到此這篇關(guān)于MySQL中比較運(yùn)算符的具體使用的文章就介紹到這了,更多相關(guān)MySQL 比較運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql更新一個(gè)表里的字段等于另一個(gè)表某字段的值實(shí)例
下面小編就為大家?guī)硪黄猰ysql更新一個(gè)表里的字段等于另一個(gè)表某字段的值實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03如何解決局域網(wǎng)內(nèi)mysql數(shù)據(jù)庫連接慢
通過內(nèi)網(wǎng)連另外一臺(tái)機(jī)器的mysql服務(wù), 確發(fā)現(xiàn)速度N慢! 等了大約幾十秒才等到提示輸入密碼。非常急人,有沒有辦法可以解決局域網(wǎng)內(nèi)mysql數(shù)據(jù)庫連接慢呢?下面小編帶領(lǐng)大家來解決此問題,感興趣的朋友一起看看吧2015-09-09詳細(xì)解讀分布式鎖原理及三種實(shí)現(xiàn)方式
這篇文章從三種基于不同形式的分布式鎖的實(shí)現(xiàn),數(shù)據(jù)庫、緩存和zookeeper,內(nèi)容比較詳細(xì),具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10mysql8.0.11安裝配置方法圖文教程 MySQL8.0新密碼認(rèn)證方式
這篇文章主要為大家詳細(xì)介紹了mysql8.0.11安裝配置方法圖文教程,以及MySQL8.0新密碼認(rèn)證方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11window環(huán)境下使用VScode連接虛擬機(jī)MySQL方法
這篇文章主要介紹了window環(huán)境下使用VScode連接虛擬機(jī)MySQL方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04