zoukankan      html  css  js  c++  java
  • 第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 = '张三');
  • 相关阅读:
    Lizcst Software Lab新秀品牌上线!
    HBase 数据备份
    Debian7离线升级bash漏洞—然后修复方法
    Android手势识别的发展
    【Android先进】如何使用数据文件来保存程序
    android 随着认识的去除率EditText(它配备了防抖效果)
    [Angular 2] Using Array ...spread to enforce Pipe immutability
    [Angular 2] Using Pipes to Filter Data
    [Angular 2] Controlling how Styles are Shared with View Encapsulation
    [Angular 2]ng-class and Encapsulated Component Style2
  • 原文地址:https://www.cnblogs.com/xzxl/p/10739522.html
Copyright © 2011-2022 走看看