SQL数据更新

1. 插入数据

​**(1) 插入单个元组**
-- 向学生表 S 插入一条学生记录
INSERT INTO S(SNO, SN, SEX, AGE, DEPT)
VALUES ('S001', '张三', '男', 20, '计算机系');

-- 向选课表 SC 插入一条选课记录
INSERT INTO SC(SNO, CNO, SCORE)
VALUES ('S001', 'C001', 85);
​**(2) 插入多个元组**
-- 向课程表 C 插入多条课程记录
INSERT INTO C(CNO, CN, CT)
VALUES 
  ('C001', '数据库', 4),
  ('C002', '数据结构', 3),
  ('C003', '操作系统', 4);
​**(3) 插入子查询结果**
-- 将计算机系学生的选课记录插入到 SC 表中
INSERT INTO SC(SNO, CNO, SCORE)
SELECT S.SNO, 'C001', NULL  -- 假设插入的课程为 C001,成绩暂为 NULL
FROM S
WHERE S.DEPT = '计算机系';

2. 修改数据

​**(1) 修改某一个元组的值**
-- 将学号为 S001 的学生年龄改为 21
UPDATE S
SET AGE = 21
WHERE SNO = 'S001';
​**(2) 修改多个元组的值**
-- 将所有课程学分 CT 增加 1
UPDATE C
SET CT = CT + 1;
​**(3) 带子查询的修改语句**
-- 将选修了 "数据库" 课程的学生成绩加 5 分
UPDATE SC
SET SCORE = SCORE + 5
WHERE CNO IN (
  SELECT CNO
  FROM C
  WHERE CN = '数据库'
);

3. 删除数据

​**(1) 删除某一个元组的值**
-- 删除学号为 S001 的学生记录
DELETE FROM S
WHERE SNO = 'S001';
​**(2) 删除多个元组的值**
-- 删除所有年龄大于 25 的学生记录
DELETE FROM S
WHERE AGE > 25;
​**(3) 带子查询的删除语句**
-- 删除没有选修任何课程的学生记录
DELETE FROM S
WHERE NOT EXISTS (
  SELECT *
  FROM SC
  WHERE SC.SNO = S.SNO
);

关键语法说明

操作类型 语法要点
插入数据 INSERT INTO 表名(字段列表) VALUES (值列表) 或 INSERT INTO 表名 SELECT ...
修改数据 UPDATE 表名 SET 字段=新值 WHERE 条件
删除数据 DELETE FROM 表名 WHERE 条件
子查询 嵌套在 WHERE 或 SELECT 中,用于动态筛选数据

注意事项

  1. 插入数据

    • 字段顺序需与 VALUES 中的值顺序一致。
    • 插入子查询结果时,字段数量和类型必须匹配。
  2. 修改数据

    • 使用 WHERE 条件精确控制修改范围,避免误操作。
    • 子查询常用于基于其他表数据的动态更新。
  3. 删除数据

    • 删除操作不可逆,需谨慎使用 WHERE 条件。
    • 带子查询的删除常用于关联多表的复杂条件。

你可能感兴趣的:(数据库学习,sql,数据库)