数据库里那些常用的SQL语句,平时操作中经常会用到的一些技巧和方法
- 问答
- 2026-01-25 07:12:30
- 6
基础查询与操作
-
查询数据
SELECT * FROM 表名 WHERE 条件;—— 查全部数据
SELECT 列1,列2 FROM 表名 ORDER BY 列1 DESC;—— 选特定列并倒序排列
SELECT DISTINCT 列名 FROM 表名;—— 去重查询 -
插入数据
INSERT INTO 表名 (列1,列2) VALUES (值1,值2);—— 插入单条
INSERT INTO 表名 SELECT ... FROM 另一表;—— 从其他表导入数据 -
更新与删除
UPDATE 表名 SET 列1=新值 WHERE 条件;—— 更新指定行
DELETE FROM 表名 WHERE 条件;—— 删除数据(注意加条件避免全表删除)
关联查询技巧
-
多表关联
- 内连接:
SELECT * FROM 表A INNER JOIN 表B ON A.id=B.id;—— 只返回匹配的行 - 左连接:
SELECT * FROM 表A LEFT JOIN 表B ON A.id=B.id;—— 保留左表全部数据 - 实际案例:查询订单时连带用户信息,常用左连接避免丢失订单数据
- 内连接:
-
联合查询
SELECT 列 FROM 表A UNION SELECT 列 FROM 表B;—— 合并结果并去重
数据统计与分组
-
聚合函数
COUNT()统计行数,SUM()求和,AVG()求平均值,MAX()/MIN()找最值
示例:SELECT COUNT(*) FROM 订单表 WHERE 日期>'2023-01-01'; -
分组筛选
GROUP BY分组后,用HAVING过滤分组结果(与WHERE区别:WHERE在分组前过滤)
示例:SELECT 部门,AVG(工资) FROM 员工表 GROUP BY 部门 HAVING AVG(工资)>5000;
子查询与条件优化
-
子查询应用
- 在WHERE中:
SELECT 姓名 FROM 员工 WHERE 部门ID IN (SELECT ID FROM 部门 WHERE 名称='销售'); - 在SELECT中:
SELECT 订单号,(SELECT 姓名 FROM 客户 WHERE ID=订单.客户ID) AS 客户名 FROM 订单;
- 在WHERE中:
-
条件简化技巧

- 用
BETWEEN替代范围:WHERE 年龄 BETWEEN 20 AND 30 - 用
IN替代多个OR:WHERE 城市 IN ('北京','上海') - 模糊查询:
WHERE 姓名 LIKE '张%'(%代表任意字符)
- 用
日期处理
- 常用函数
NOW()获取当前时间DATE_FORMAT(日期列,'%Y-%m-%d')格式化日期DATEDIFF(日期1,日期2)计算日期差
示例:SELECT * FROM 日志 WHERE DATE(创建时间)='2023-10-01';
分页查询
LIMIT 实现分页(MySQL用法):
SELECT * FROM 产品表 ORDER BY 价格 DESC LIMIT 10 OFFSET 20; —— 跳过20条取10条(即第3页)
数据操作注意事项
-
事务处理
重要操作加事务保证数据安全:BEGIN; UPDATE 账户 SET 余额=余额-100 WHERE 用户ID=1; UPDATE 账户 SET 余额=余额+100 WHERE 用户ID=2; COMMIT;
出错时可用
ROLLBACK回滚 -
性能优化点

- 查询时尽量不用
SELECT *,只取需要的列 - 频繁查询的列建立索引(但注意索引会降低写入速度)
- 避免在WHERE中对字段进行函数计算(如
WHERE YEAR(日期)=2023会导致索引失效)
- 查询时尽量不用
实用小技巧
-
快速备份表
CREATE TABLE 新表名 AS SELECT * FROM 原表; -
数据去重保留一条
使用窗口函数(如MySQL的ROW_NUMBER())或分组后删除重复项 -
处理空值
COALESCE(列名, 默认值)将NULL转为默认值 -
条件判断
CASE WHEN 条件 THEN 结果1 ELSE 结果2 END实现类似编程中的if-else逻辑
这些语句和技巧覆盖了日常80%的数据库操作场景,实际使用时需结合具体数据库类型调整语法细节(如SQL Server的分页用TOP,Oracle用ROWNUM),重点注意操作前备份数据,尤其执行UPDATE或DELETE时先写SELECT确认条件范围。
(综合参考:《SQL必知必会》第5版、MySQL 8.0官方手册、Stack Overflow常见问题整理)
本文由称怜于2026-01-25发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://yhxb.haoid.cn/wenda/85581.html
