码迷,mamicode.com
首页 > 其他好文 > 详细

第5讲:进行增、删、改

时间:2019-04-20 00:14:43      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:each   avg   nbsp   color   value   col   检查   成绩   操作   

DML既能对单一记录进行操作,又能对记录集合进行批量操作。

当DML结合前面讲的子查询(select-from-where)概念时,可以很方便地进行批量操作。

 

一、更新操作概述

元组新增insert:新增一个或一些元组到数据库的Table中

元组删除delete:删除某些元组

元组更新update:对某些元组中的某些属性值进行重新设定

 

二、元组新增insert命令

1. 单一元组新增命令形式:insert into 表名 [(列名[, 列名] ... )] values (值[, 值] ... );

    ①作用:插入一条指定元组值的元组

  • 示例:insert into Teacher (T#, Tname, D#, Salary) values (‘005‘, ‘阮小七‘, ‘03‘, ‘1250‘);

 

2. 批量元组新增命令形式:insert into 表名 [(列名[, 列名] ... )] 子查询;

    ①作用:插入子查询结果中的若干条元组,待插入的元组由子查询给出

【示例1】新建立表St(S#, Sname),将检索到的满足条件的学生新增到该表中:

  • insert into St (S#, Sname) select S#, Sname from Student where Sname like ‘%伟‘;

【示例2】新建立表SCt(S#, C#, Score),将检索到的成绩及格的学生的记录新增到该表中:

  • insert into SCt(S#, C#, Score) select S#, C#, Score from SC where Score >= 60;

 

注:当新增元组时,DBMS会检查用户定义的完整性约束条件等,如不符合完整性约束条件,则将不会执行新增动作。

 

三、元组删除delete命令

1. 删除满足指定条件的元组:delete from 表名 [where 条件表达式];

    ①如果省略where子句,则删除该表中的所有元组。

【示例1】删除SC表中的所有元组:

  • delete from SC;

【示例2】删除98030101号学生所选的所有课程:

  • delete from SC where S# = ‘98030101‘;

【示例3】删除自动控制系的所有学生:

  • delete from Student where D# in (select D# from Dept where Dname = ‘自动控制‘);  // 在where子句中又嵌入了一个子查询,即嵌套子查询

【示例4】删除有4门不及格课程的所有学生:

  • delete from Student where S# in (select S# from SC where Score < 60 group by S# having count(*) >= 4);

 

注:当删除元组时,DBMS会检查用户定义的完整性约束条件等,如不符合完整性约束条件,则将不会执行删除动作。

 

四、元组更新update命令

1. 用指定值更新相应元组的指定列的值:update 表名 set 列名 = 表达式 | (子查询) [[, 列名 = 表达式 | (子查询)] ... ] [where 条件表达式];

    ①如果省略where子句,则更新该表中的所有元组。

【示例1】将所有教师工资上调5%:

  • update Teacher set Salary = Salary * 1.05;

【示例2】将所有计算机系的教师工资上调10%:

  • update Teacher set Salary = Salary * 1.1 where D# in (select D# from Dept where Dname = ‘计算机‘);

【示例3】当某同学001号课的成绩低于该课程平均成绩时,将该同学该门成绩提高5%:

  • update SC set Score = Score * 1.05 where C# = ‘001‘ and Score < some (select avg(Score) from SC where C# = ‘001‘);

【示例4】将张三同学001号课的成绩置为其班级该门课的平均成绩:

  • update SC set Score = (select avg(Score) from SC SC1, Student S1, SC S2, Student S2 where S1.Sclass = S2.Sclass and SC1.S# = S1.S# and SC2.S# = S2.S# and S1.Sname = ‘张三‘ and SC1.C# = ‘001‘ and SC1.C# = SC2.C#) where C# = ‘001‘ and S# in (select S# from Student where Sname = ‘张三‘);

 

第5讲:进行增、删、改

标签:each   avg   nbsp   color   value   col   检查   成绩   操作   

原文地址:https://www.cnblogs.com/xzxl/p/10739522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!