-- 更新语法UPDATE 表名 SET 字段1= 值1, 字段2= 值2[WHERE 条件];-- 更新单个字段UPDATE customer SET age =29WHERE cust_id =1;-- 更新多个字段UPDATE customer SET age =26, email ='new_email@example.com'WHERE cust_id =2;-- 条件更新UPDATE customer SET vip_level =1WHERE age >=30;-- 注意:没有WHERE条件会更新整张表!
3.3.3 数据删除
-- 删除语法DELETEFROM 表名 [WHERE 条件];-- 删除指定记录DELETEFROM customer WHERE cust_id =3;-- 条件删除DELETEFROM customer WHERE age <20;-- 清空表数据(危险操作!)DELETEFROM customer;/*
注意事项:
1. DELETE语句必须有条件,否则会删除所有数据
2. 删除操作不可逆,执行前务必确认
3. 要删除特定字段值,应使用UPDATE设置为NULL
*/
-- 1. 查询指定字段SELECT product_name, unit_price, quantity FROM sales;-- 2. 查询所有字段SELECT*FROM sales;-- 3. 字段别名SELECT product_name AS'商品名称',unit_price AS'单价',quantity AS'数量'FROM sales;-- 简写别名SELECT product_name '商品名称',unit_price '单价'FROM sales;-- 4. 去除重复记录SELECTDISTINCT region FROM sales;SELECTDISTINCT product_name FROM sales;
3.4.3 条件查询
比较运算符参考表:
运算符
描述
示例
注意事项
=
等于
age = 25
精确匹配
<> 或 !=
不等于
gender <> '男'
两种写法等效
>
大于
salary > 5000
-
>=
大于等于
age >= 18
-
<
小于
score < 60
-
<=
小于等于
price <= 100
-
BETWEEN...AND
范围匹配
age BETWEEN 20 AND 30
包含边界值
IN(...)
多值匹配
region IN ('北京','上海')
相当于多个OR
LIKE
模糊匹配
name LIKE '张%'
%匹配任意字符,_匹配单个字符
IS NULL
空值判断
email IS NULL
不能用 = NULL
IS NOT NULL
非空判断
phone IS NOT NULL
不能用 != NULL
逻辑运算符参考表:
运算符
描述
示例
优先级
AND 或 &&
逻辑与
age > 18 AND gender = '男'
高
OR 或 `
`
逻辑或
city = '北京' OR city = '上海'
中
NOT 或 !
逻辑非
NOT deleted = 1
最高
()
括号
(age < 18 OR age > 60) AND vip = 1
最高
-- 比较运算符SELECT*FROM sales WHERE quantity >5;SELECT*FROM sales WHERE unit_price <=3000;SELECT*FROM sales WHERE total_amount =11998.00;SELECT*FROM sales WHERE region !='北京';-- 范围查询SELECT*FROM sales WHERE quantity BETWEEN3AND8;SELECT*FROM sales WHERE unit_price BETWEEN1000AND5000;-- IN查询SELECT*FROM sales WHERE region IN('北京','上海');SELECT*FROM sales WHERE product_id IN(101,103,105);-- 模糊查询SELECT*FROM sales WHERE product_name LIKE'%电脑%';SELECT*FROM sales WHERE product_name LIKE'智能%';SELECT*FROM sales WHERE product_name LIKE'_脑%';-- NULL值判断SELECT*FROM sales WHERE region ISNOTNULL;-- 逻辑运算符SELECT*FROM sales WHERE quantity >3AND unit_price <4000;SELECT*FROM sales WHERE region ='北京'OR region ='上海';SELECT*FROM sales WHERENOT region ='广州';
-- 1. 查询单价在3000-6000之间的商品销售记录SELECT*FROM sales
WHERE unit_price BETWEEN3000AND6000;-- 2. 查询北京或上海地区,销量超过2件的商品SELECT*FROM sales
WHERE region IN('北京','上海')AND quantity >2;-- 3. 统计各地区的平均销售额SELECT region,AVG(total_amount)AS avg_sales
FROM sales
GROUPBY region;-- 4. 查询销售金额最高的前3笔订单SELECT*FROM sales
ORDERBY total_amount DESCLIMIT3;-- 5. 按商品分类统计,只显示总销量超过5件的商品SELECT product_name,SUM(quantity)AS total_quantity
FROM sales
GROUPBY product_name
HAVING total_quantity >5ORDERBY total_quantity DESC;
3.4.9 SQL执行顺序
顺序
子句
描述
是否必须
1
FROM
指定数据来源表
是
2
WHERE
行级过滤条件
否
3
GROUP BY
分组字段
否
4
HAVING
组级过滤条件
否
5
SELECT
选择输出字段
是
6
ORDER BY
结果排序
否
7
LIMIT
结果分页
否
-- SQL语句的实际执行顺序:FROM → WHERE → GROUPBY → HAVING → SELECT → ORDERBY → LIMIT-- 验证示例SELECT region AS sales_region,COUNT(*)AS order_count
FROM sales
WHERE total_amount >5000GROUPBY region
HAVING order_count >=2ORDERBY order_count DESCLIMIT5;