前言
在日常数据库操作中,掌握增删查改是每个开发者必备的技能。下面我将通过实例解析SQL的核心操作要点,帮你避开常见陷阱。
一、新增数据(INSERT)
- 单行插入:明确指定字段和值
INSERT INTO 表名(字段1, 字段2) VALUES (值1, 值2);
- 多行插入:批量操作高效写入
INSERT INTO 表名(字段1, 字段2) VALUES(值1, 值2),(值3, 值4),(值5, 值6);
字段与值必须严格对应
二、查询数据(SELECT)
1. 基础查询
类型 | 语法实例 | 说明 |
---|---|---|
全列查询 | SELECT * FROM 表 | 返回全表结果 |
指定列 | SELECT 列1, 列2 FROM 表 | 查找特定字段 |
表达式 | SELECT (价格 * 0.8) FROM 商品 | 实时计算字段 |
去重 | SELECT DISTINCT 部门 FROM 员工 | 剔除重复值 |
2. 别名使用与限制
SELECT 字段1 AS 别名1, 字段2 AS 别名2 FROM 表;
- 别名仅当前SELECT有效(临时标签)
- 不可跨SELECT语句使用(每个查询独立)
- WHERE条件中禁止使用别名(SQL执行顺序:WHERE > SELECT别名)
3. 排序控制(ORDER BY)
-- 默认升序(ASC可省略)
SELECT * FROM 成绩表 ORDER BY 分数;-- 显式降序
SELECT * FROM 商品表 ORDER BY 价格 DESC;
4. 条件查询(WHERE)
基础结构:
SELECT * FROM 表名 WHERE 条件表达式;
完整运算符体系
运算符类型 | 语法实例 | 说明 |
---|---|---|
比较运算符 | =, >, <, >=, <=, != | 基本数值/字符比较 |
范围查询 | BETWEEN 值1 AND 值2 | 闭区间范围匹配 |
枚举查询 | IN(值1, 值2, ...) | 多值匹配 |
空值判断 | IS NULL / IS NOT NULL | 空值检测 |
模糊匹配 | LIKE '模式' | 通配符搜索 |
逻辑组合 | AND, OR, NOT | 条件组合与取反 |
① 比较运算符:
数值/字符串/日期均可比较
-- 字符串比较(按字典序)
SELECT * FROM 学生 WHERE 姓名 > '李四';
② BETWEEN AND:
闭区间匹配(含边界)
-- 等价于 价格>=50 AND 价格<=100
SELECT * FROM 商品 WHERE 价格 BETWEEN 50 AND 100;
③ IN 运算符:
多值匹配
-- 查找特定学院学生
SELECT * FROM 学生 WHERE 学院 IN ('计算机', '电子工程');
④ NULL 判断:
必须用 IS
-- 错误写法:WHERE 电话 = NULL (永远返回空)
SELECT * FROM 用户 WHERE 电话 IS NULL;
⑤ 模糊查询(LIKE):
-- % 匹配任意数量字符(包括0个)
WHERE 姓名 LIKE '张%' -- 找所有姓张的人-- _ 匹配单个字符
WHERE 学号 LIKE '2023_01' -- 找2023级01班的学生
⑥ 逻辑组合:
运算符优先级陷阱
-- 错误写法(AND优先级高于OR):
WHERE 部门 = '销售' OR 部门 = '技术' AND 工资 > 10000-- 正确写法(用括号明确逻辑):
WHERE (部门 = '销售' OR 部门 = '技术') AND 工资 > 10000
5. 分页查询(LIMIT/OFFSET)
SELECT * FROM 订单表
LIMIT 10 OFFSET 20; -- 跳过前20条,取10条数据
OFFSET
:跳过的记录数(偏移量)LIMIT
:返回的记录数OFFSET类似于翻书跳过的页数;LIMIT类似于本页显示的行数
三、修改数据(UPDATE)
UPDATE 商品表
SET 价格=价格*1.1, 库存=库存-1 -- 修改多个字段
WHERE 分类='电子产品'; -- 必须有WHERE条件!
注意:无WHERE条件将导致更新全表数据!
四、删除数据(DELETE)
DELETE FROM 用户表
WHERE 最后登录时间 < '2020-01-01'; -- 删除不活跃用户
注意:无WHERE条件将导致整个表被清空!