⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL INSERT 插入数据

学习INSERT · 难度:入门 · +10XP

SQL INSERT 插入数据

往数据库表中添加数据是数据库操作中最基础也最频繁的任务之一。无论是用户注册、订单创建、还是日志记录,都离不开 INSERT 语句。SQL 提供了多种插入数据的方式,从简单的单行插入到高效的批量插入从其他表复制数据,满足不同场景的需求。

INSERT 基本语法

-- 方式一:指定列名插入(推荐)
INSERT INTO 表名(列1, 列2, 列3) VALUES (值1, 值2, 值3);

-- 方式二:按表结构顺序插入所有列 INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);

-- 方式三:一次插入多行 INSERT INTO 表名(列1, 列2) VALUES (值1, 值2), (值3, 值4), (值5, 值6);

完整示例

-- 假设 students 表有 id, name, age, score 列

-- 单行插入(指定所有列) INSERT INTO students(id, name, age, score) VALUES (10, '张亮', 20, 88);

-- 插入部分列(未指定列用默认值或NULL) INSERT INTO students(name, age, score) VALUES ('赵强', 22, 95); -- id 使用自增

-- 批量插入3行 INSERT INTO students(name, age, score) VALUES ('李明', 19, 75), ('王芳', 21, 82), ('陈静', 20, 91);

从其他表复制数据(INSERT SELECT)

这是最强大的插入方式,可以将一个查询的结果直接插入表中:

-- 将查询结果插入到目标表
INSERT INTO students(name, age, score)
SELECT name, age, score FROM new_students;

-- 带条件的数据迁移 INSERT INTO premium_users(name, email, score) SELECT name, email, score FROM users WHERE score > 80;

-- 归档旧数据 INSERT INTO archive_orders SELECT * FROM orders WHERE order_date < '2024-01-01';

INSERT 注意事项

要点说明
列值数量匹配VALUES 中值的数量必须与指定列的数量一致
数据类型插入的值必须与列的数据类型兼容
NOT NULL 列不能省略 NOT NULL 且无默认值的列
主键唯一性主键值不能与已有数据重复
外键约束外键列的值必须存在于父表中

INSERT 与事务

对于关键业务操作,INSERT 应配合事务使用:

BEGIN;
INSERT INTO accounts(user_id, balance) VALUES (101, 500);
INSERT INTO account_log(user_id, action, amount) VALUES (101, '开户', 500);
COMMIT;  -- 全部成功或全部回滚

实战任务

  1. 使用指定列的方式插入一条学生记录
  2. 一次插入 3 条记录(批量插入)
  3. 将 score>85 的学生数据复制到 honor_students 表
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0