(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第五节:数据更新 ...

打印 上一主题 下一主题

主题 639|帖子 639|积分 1917



目录

SQL数据更新主要有三种形式

  • 插入数据(INSERT)
  • 修改数据(UPDATE)
  • 删除数据(DELETE)
一:插入数据(INSERT)

(1)插入元组

语法:格式如下,用于将新元组插入指定表中。需要注意

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

演示:
【例1】将一个新学生元组 (学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁) 插入到Student表中
  1. INSERT
  2. INTO student(Sno,Sname,Ssex,Sdept,Sage)
  3. VALUES('201215128','陈冬','男','IS',18);
复制代码

  • 注意顺序可以和表不一致

【例2】插入学生张成民
  1. INSERT
  2. INTO student
  3. VALUES('201215126','张成民','男',18,'CS');
复制代码

  • 注意由于没有指定顺序,所以按照必须按照表中属性列的顺序插入,否则会导致插入错误

【例3】插入一条选课记录(201215128,1)
  1. INSERT
  2. INTO sc(Sno,Cno)
  3. values('201215128','1');
复制代码

  • 在这种情况下,Grade属性列会设置为NULL
  • 需要注意如果没有给出属性列,则必须执行Grade为NULL

【例4】插入多条记录
  1. INSERT
  2. INTO student
  3. VALUES
  4. (201515000,'小赵','男',30,'IS'),
  5. (201515001,'小钱','女',28,'MA'),
  6. (201515002,'小孙','男',33,'MJ'),
  7. (201515003,'小李','女',25,'CS'),
  8. (201515004,'小周','男',41,'LI');
复制代码
(2)插入子查询结果

语法:格式如下,子查询同样可以嵌套在INSERT语句中用于生成待插入的批量数据

演示:
【例5】对每一个系,求学生的平均年龄,并把结果存入数据库
  1. CREATE TABLE dept_age(
  2.         Sdept char(15),
  3.         Age SMALLINT
  4. );
  5. INSERT
  6. INTO dept_age(Sdept,Age)
  7. SELECT Sdept,AVG(Sage)
  8. FROM student
  9. GROUP BY Sdept;
复制代码

二:修改数据(UPDATE)

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

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

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

演示:
【例6】将学生201215121的年龄改为22岁
  1. UPDATE student
  2. set Sage=22
  3. WHERE Sno='201215121';
复制代码

(2)修改多个元组的值

演示:
【例7】将所有学生的年龄增加1岁
  1. UPDATE student
  2. set Sage=Sage+1;
复制代码

(3)带子查询的修改语句

演示:
【例8】将CS系所有学生的成绩置0
  1. UPDATE sc
  2. SET Grade=0
  3. WHERE Sno IN
  4. (
  5.         SELECT Sno FROM student WHERE Sdept='CS'
  6. );
复制代码

三:删除数据(DELETE)

语法:格式如下,其功能是从指定表中删除满足WHERE子句条件的所有元组,注意

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

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

演示:
【例9】删除学号为201215128的学生记录
  1. DELETE
  2. FROM student
  3. WHERE Sno='201215128';
复制代码

(2)删除多个元组的值

演示:
【例10】删除所有的学生选课记录
  1. DELETE
  2. FROM SC;
复制代码
(3)带子查询的删除语句

演示:
【例11】删除计算机科学系所有学生的选课记录
  1. DELETE FROM sc
  2. WHERE Sno IN
  3.         (SELECT Sno FROM student WHERE Sdept='CS');
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

耶耶耶耶耶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表