第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讲:进行增删改的主要内容,如果未能解决你的问题,请参考以下文章

MyBites学习第一讲,增删改查

Web对数据库的增删改查(servlet+jsp+javaBean增删改查)

Beego脱坑(十三)ORM基本增删改查

Vue电商后台管理系统项目第5篇-角色列表的增删改查&&角色授权

JDBC增删改 查操作

ef 增删改教程