乐趣区

关于数据库:数据库系统概论王珊第三章关系数据库标准语言SQL第五节数据更新

  • pdf 下载:明码 7281
  • 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解

SQL 数据更新次要有三种模式

  • 插入数据(INSERT)
  • 批改数据(UPDATE)
  • 删除数据(DELETE)

一:插入数据(INSERT)

(1)插入元组

语法:格局如下,用于将新元组插入指定表中。须要留神

  • INTO子句中没有呈现的属性列,新元组在这些列上将会取NULL
  • INTO 子句中没有指明任何属性列名,则新插入的元祖必须在每个属性列上均有值

演示:

【例 1】将一个新学生元组 (学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18 岁) 插入到 Student 表中

INSERT
INTO student(Sno,Sname,Ssex,Sdept,Sage)
VALUES('201215128','陈冬','男','IS',18);
  • 留神 程序能够和表不统一

【例 2】插入学生张成民

INSERT
INTO student
VALUES('201215126','张成民','男',18,'CS');
  • 留神因为没有指定程序,所以 依照必须依照表中属性列的程序插入,否则会导致插入谬误

【例 3】插入一条选课记录(201215128,1)

INSERT
INTO sc(Sno,Cno)
values('201215128','1');
  • 在这种状况下,Grade属性列会设置为NULL
  • 须要留神如果没有给出属性列,则 必须执行 GradeNULL

【例 4】插入多条记录

INSERT 
INTO student 
VALUES 
(201515000,'小赵','男',30,'IS'),(201515001,'小钱','女',28,'MA'),(201515002,'小孙','男',33,'MJ'),(201515003,'小李','女',25,'CS'),(201515004,'小周','男',41,'LI');

(2)插入子查问后果

语法:格局如下,子查问同样能够嵌套在 INSERT 语句中用于生成待插入的批量数据

演示:

【例 5】对每一个系,求学生的平均年龄,并把后果存入数据库

CREATE TABLE dept_age(Sdept char(15),
    Age SMALLINT
);

INSERT 
INTO dept_age(Sdept,Age)
SELECT Sdept,AVG(Sage)
FROM student
GROUP BY Sdept;

二:批改数据(UPDATE)

语法:格局如下,其性能是批改指定表中满足 WHERE 子句条件的元组

  • 如果省略 WHERE 子句,则示意要批改表中所有元组

(1)批改某一个元组的值

演示:

【例 6】将学生 201215121 的年龄改为 22 岁

UPDATE student
set Sage=22
WHERE Sno='201215121';

(2)批改多个元组的值

演示:

【例 7】将所有学生的年龄减少 1 岁

UPDATE student
set Sage=Sage+1;

(3)带子查问的批改语句

演示:

【例 8】将 CS 系所有学生的问题置 0

UPDATE sc
SET Grade=0
WHERE Sno IN
(SELECT Sno FROM student WHERE Sdept='CS');

三:删除数据(DELETE)

语法:格局如下,其性能是从指定表中删除满足 WHERE 子句条件的所有元组,留神

  • DELETE删除的是表的数据,而不是表的定义
  • 如果省略 WHERE 子句,那么就示意删除全副元组

(1)删除某一个元组的值

演示:

【例 9】删除学号为 201215128 的学生记录

DELETE 
FROM student
WHERE Sno='201215128';

(2)删除多个元组的值

演示:

【例 10】删除所有的学生选课记录

DELETE
FROM SC;

(3)带子查问的删除语句

演示:

【例 11】删除计算机科学系所有学生的选课记录

DELETE FROM sc
WHERE Sno IN
    (SELECT Sno FROM student WHERE Sdept='CS');
退出移动版