SQL结构设计概念
一文搞懂 SQL 增删改查从入门到实战再也不怕写 DML如果你刚接触数据库那INSERT、SELECT、UPDATE、DELETE这几个词几乎就是你每天打交道的 “吃饭家伙”。它们合称CRUD对应 Create增、Read查、Update改、Delete删是 SQL 里最基础也最核心的操作。这篇文章就用最通俗的方式带你系统梳理增删改查的语法、注意事项和实战场景看完就能上手写一、先铺垫什么是 DMLSQL 分为很多种语句类型其中DMLData Manipulation Language数据操作语言就是专门用来操作表中数据的核心就是我们说的增删改查INSERT新增数据CreateSELECT查询数据ReadUPDATE修改数据UpdateDELETE删除数据Delete我们下面所有示例都基于一张常见的user用户表结构如下sqlCREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT 用户ID自增主键, name VARCHAR(50) NOT NULL COMMENT 用户名, age INT COMMENT 年龄, phone VARCHAR(20) UNIQUE COMMENT 手机号 );二、INSERT给表 “加数据”INSERT用来向表中插入新数据也是你操作数据库的第一步。1. 基础语法sql-- 语法格式 INSERT INTO 表名(字段1, 字段2, 字段3...) VALUES (值1, 值2, 值3...);2. 实战示例① 插入单条数据如果主键设置了AUTO_INCREMENT自增插入时可以不用写主键字段数据库会自动生成。sql-- 插入1条用户数据 INSERT INTO user(name, age, phone) VALUES (赵四, 20, 18912345678);执行后数据库会返回Affected rows: 1表示成功插入 1 条数据。② 批量插入多条数据一条 SQL 就能插入多条比多次执行单条语句效率高很多。sql-- 一次插入3条数据 INSERT INTO user(name, age, phone) VALUES (钱五, 21, 11112345678), (孙六, 22, 19212345678), (周七, 23, 19812345678);3. 关键注意事项字符串、日期类型的值必须用单引号包裹比如赵四数值类型不用。非空约束NOT NULL的字段必须赋值否则会报错。唯一约束UNIQUE的字段不能插入重复值否则会触发唯一冲突。三、SELECT从表 “读数据”SELECT是 SQL 中最常用的语句用来从表中查询数据也是面试和开发中的高频考点。1. 基础语法sql-- 语法格式 SELECT 字段1, 字段2... FROM 表名 [WHERE 条件] [ORDER BY 排序字段] [LIMIT 条数];2. 实战示例① 查询所有数据全表扫描慎用sql-- 查询user表所有字段、所有数据 SELECT * FROM user;⚠️ 注意生产环境中尽量不要用SELECT *一是效率低二是容易泄露不必要的字段信息。② 查询指定字段sql-- 只查询用户名和手机号 SELECT name, phone FROM user;③ 带条件查询WHERE 子句sql-- 查询年龄大于20岁的用户 SELECT * FROM user WHERE age 20; -- 查询姓名为“赵四”的用户 SELECT * FROM user WHERE name 赵四; -- 多条件查询年龄20岁且手机号为18912345678的用户 SELECT * FROM user WHERE age 20 AND phone 18912345678;④ 排序与分页sql-- 按年龄升序排序从小到大 SELECT * FROM user ORDER BY age ASC; -- 按年龄降序排序从大到小只取前3条 SELECT * FROM user ORDER BY age DESC LIMIT 3;四、UPDATE修改表中 “已有的数据”UPDATE用来修改表中已存在的数据也是最容易出事故的 SQL 之一。1. 基础语法sql-- 语法格式 UPDATE 表名 SET 字段1新值1, 字段2新值2... WHERE 条件;2. 实战示例① 按主键条件修改最安全的写法sql-- 修改id22的用户姓名为“小黑”年龄改为88 UPDATE user SET name 小黑, age 88 WHERE id 22;② 按普通字段条件修改sql-- 修改姓名为“张三”的用户姓名改为“小白”年龄改为88 UPDATE user SET name 小白, age 88 WHERE name 张三;3. 致命注意事项一定要加 WHERE如果不加WHERE条件UPDATE会修改表中所有数据这就是常说的 “全表更新事故”sql-- 危险会把user表中所有用户的name改成“小白”age改成88 UPDATE user SET name 小白, age 88;⚠️ 生产环境中执行UPDATE前一定要先用SELECT验证条件确认无误再执行。五、DELETE删除表中 “无用数据”DELETE用来删除表中的数据和UPDATE一样也是高危操作。1. 基础语法sql-- 语法格式 DELETE FROM 表名 WHERE 条件;2. 实战示例① 按条件删除指定数据sql-- 删除id32的用户数据 DELETE FROM user WHERE id 32;② 删除表中所有数据两种方式对比方式 1DELETE FROM 表名sql-- 危险会删除user表中所有数据自增主键不会重置 DELETE FROM user;方式 2TRUNCATE TABLE 表名sql-- 清空整个user表自增主键会重置效率比DELETE高 TRUNCATE TABLE user;3. 关键区别DELETE vs TRUNCATE表格特性DELETETRUNCATE作用删除指定 / 所有数据清空全表数据自增主键不会重置会重置事务支持支持事务可回滚不支持事务无法回滚效率逐行删除效率低直接重建表效率高⚠️ 注意生产环境中删除数据优先用 “软删除”加is_deleted标志位不要直接物理删除避免数据误删无法恢复。六、CRUD 实战小案例用户管理场景我们用上面的user表模拟一个完整的用户管理流程sql-- 1. 新增用户 INSERT INTO user(name, age, phone) VALUES (小明, 18, 13800138000); -- 2. 查询用户 SELECT * FROM user WHERE name 小明; -- 3. 修改用户年龄 UPDATE user SET age 19 WHERE name 小明; -- 4. 删除用户软删除 UPDATE user SET is_deleted 1 WHERE name 小明;七、新手必看CRUD 避坑指南永远不要省略 WHERE 条件UPDATE和DELETE不加WHERE就是生产事故的导火索。字符串 / 日期必须加单引号否则会报语法错误。批量操作要控制数量一次插入 / 修改 / 删除上万条数据可能会锁表影响业务。优先用主键条件操作主键有索引查询效率高且不会误操作多条数据。重要操作前先备份修改或删除数据前先用SELECT确认数据必要时备份数据。八、写在最后增删改查是数据库的基础也是开发的基本功。很多新手觉得 SQL 难其实就是没搞懂这些基础操作的细节和坑。把INSERT、SELECT、UPDATE、DELETE这四个语句吃透再结合索引、事务等进阶知识你就能轻松应对大部分业务场景了。