您好!欢迎访问家园网-www.jy.wang!

家园网

MySQL的增删改查四种语句的WHERE子句使用

网络 作者:本站 点击:

SQL语句中WHERE子句的运算符使用情况

以下是完整汇总表,包含所有SQL语句中WHERE子句的运算符使用情况:

WHERE子句比较运算符分类表

类别

运算符

说明

示例

注意事项

基础比较

=

等于

WHERE id = 100

NULL需用IS NULL


<>/!=

不等于

WHERE status <> 0



>

大于

WHERE age > 18



<

小于

WHERE score < 60



>=

大于等于

WHERE price >= 100



<=

小于等于

WHERE date <= '2025-08-10'


特殊比较

<=>

NULL安全等于

WHERE col <=> NULL

可比较NULL值


IS NULL

是NULL值

WHERE phone IS NULL



IS NOT NULL

非NULL值

WHERE email IS NOT NULL



IS TRUE

布尔真值

WHERE flag IS TRUE



IS FALSE

布尔假值

WHERE active IS FALSE


范围比较

BETWEEN

区间包含

WHERE age BETWEEN 20 AND 30

闭区间


NOT BETWEEN

区间排除

WHERE id NOT BETWEEN 100 AND 200



IN

值列表匹配

WHERE dept IN (1,3,5)



NOT IN

值列表排除

WHERE status NOT IN (0,9)


字符串处理

LIKE

模式匹配

WHERE name LIKE '张%'

%匹配任意字符


NOT LIKE

反向匹配

WHERE email NOT LIKE '%@test.com'



REGEXP

正则匹配

WHERE title REGEXP '^[A-Z]'



SOUNDS LIKE

发音相似

WHERE name SOUNDS LIKE 'John'

仅英文

JSON处理

->

JSON路径提取

WHERE json_col->'$.name'

返回带引号值


->>

JSON裸值提取

WHERE json_col->>'$.age' > 20


空间数据

MBRContains()

几何包含

WHERE MBRContains(polygon, point)



ST_Within()

精确空间包含

WHERE ST_Within(point, polygon)


子查询

EXISTS

存在性判断

WHERE EXISTS (subquery)



ANY/SOME

任意满足

WHERE salary > ANY (subquery)



ALL

全部满足

WHERE score >= ALL (subquery)


位运算

&

按位与

WHERE flags & 1 = 1



`

`

按位或

`WHERE permissions

全文检索

MATCH() AGAINST()

全文搜索

WHERE MATCH(content) AGAINST('keyword')

需建全文索引


MySQL的增删改查四种语句的WHERE子句运算符适用性对照表

语句类型WHERE子句位置运算符可用性说明典型应用场景示例
SELECT直接使用⭐️ 所有运算符均可使用SELECT * FROM users WHERE age > 18 AND name LIKE '张%'
DELETE直接使用⭐️ 所有运算符均可使用DELETE FROM logs WHERE create_time < '2025-01-01'
UPDATE直接使用⭐️ 所有运算符均可使用UPDATE products SET stock=0 WHERE status='discontinued'
标准INSERT❌ 无WHERE子句➖ 不适用INSERT INTO users VALUES (1, '张三')
INSERT...SELECT嵌套SELECT语句中使用⭐️ 所有运算符可在嵌套SELECT的WHERE中使用INSERT INTO vip_users SELECT * FROM users WHERE score >= 90

跨语句通用运算符示例

-- 1. 比较运算符通用示例
UPDATE employees SET salary=8000 WHERE dept_id = 10;
DELETE FROM temp_data WHERE timestamp <= NOW() - INTERVAL 7 DAY;
-- 2. 范围运算符通用示例
SELECT * FROM orders WHERE amount BETWEEN 100 AND 500;
DELETE FROM sessions WHERE last_activity NOT BETWEEN '2025-08-01' AND '2025-08-10';
-- 3. 空值判断通用示例
UPDATE contacts SET flag=1 WHERE mobile IS NOT NULL;
SELECT * FROM applications WHERE attachment_url IS NULL;
-- 4. 模式匹配通用示例
DELETE FROM spam_messages WHERE content LIKE '%广告%';
UPDATE products SET category='other' WHERE name NOT LIKE 'A-%';
-- 5. 子查询通用示例
UPDATE inventory 
SET restock_flag=1 
WHERE item_id IN (SELECT item_id FROM sales WHERE qty > 100);
DELETE FROM user_devices 
WHERE user_id = ANY (SELECT id FROM users WHERE banned=1);

注意事项

  1. 性能影响‌:DELETE/UPDATE中的WHERE条件应特别关注索引使用情况

  2. 安全风险‌:生产环境执行DELETE/UPDATE前建议先用SELECT验证条件

  3. 事务控制‌:修改语句建议在事务中执行(BEGIN...COMMIT)

  4. 语法差异‌:部分高级运算符(如JSON操作符)需MySQL 5.7+版本支持

所有WHERE子句运算符在SELECT/DELETE/UPDATE和INSERT...SELECT中的行为完全一致,这是SQL标准的核心特性之一。



标签: