第5讲:进行增删改
Posted xzxl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第5讲:进行增删改相关的知识,希望对你有一定的参考价值。
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讲:进行增删改的主要内容,如果未能解决你的问题,请参考以下文章
Web对数据库的增删改查(servlet+jsp+javaBean增删改查)