SQL 插入与更新数据
SQL 数据增改:INSERT 与 UPDATE · 难度:入门 · +10XP
SQL 数据增改:INSERT 与 UPDATE
INSERT和UPDATE是SQL中修改数据的两个核心语句。INSERT向表中添加新行,UPDATE修改已有的数据。
INSERT 插入数据
-- 基本插入:指定列名和值
INSERT INTO students (name, age, city, score)
VALUES ('张三', 20, '南宁', 85);
-- 按表列顺序插入(可以省略列名,不推荐)
INSERT INTO students VALUES (NULL, '李四', 21, '桂林', 92);
-- 一次插入多行(效率更高)
INSERT INTO students (name, age, city, score) VALUES
('王五', 19, '南宁', 78),
('赵六', 22, '柳州', 88),
('孙七', 20, '南宁', 95);
INSERT ... SELECT
-- 从一张表复制数据到另一张表
INSERT INTO top_students (name, score)
SELECT name, score FROM students WHERE score >= 90;
UPDATE 更新数据
| 语法元素 | 说明 |
|---|---|
UPDATE 表名 | 指定要修改的表 |
SET 列名 = 新值 | 设置新值,可同时修改多列 |
WHERE 条件 | 极其重要!指定修改哪些行 |
-- 修改单列
UPDATE students SET score = 90 WHERE name = '张三';
-- 修改多列
UPDATE students
SET score = score + 5, city = '南宁'
WHERE name = '张三';
-- 批量条件更新
UPDATE students SET score = 60 WHERE score < 60;
-- 基于计算的更新
UPDATE products SET price = price * 1.1 WHERE category = '电子产品';
-- 所有电子产品涨价10%
安全提醒
-- 危险!没有WHERE会修改所有行!
UPDATE students SET score = 0; -- 所有学生成绩清零!
-- 建议:先用SELECT确认要修改的行
SELECT * FROM students WHERE score < 60;
-- 确认无误后,把SELECT替换为UPDATE SET
UPDATE students SET score = 60 WHERE score < 60;
实战练习
- 向表中插入3条新学生记录
- 将所有南宁学生的成绩加5分
- 把年龄小于18岁的学生城市改为'未分类'
- 创建一张新表top_scores,把成绩≥90的学生复制过去