七、数据更新

1.   插入单元组的一般规则:

       a. 由于是对表进行改变应该是用USE语句和ALTER TABLE语句;

       b. 一般规则:INSERT INTO 表名(属性列表) VALUES(与属性列表相对应的字段值)

       c. 使用规则:

            i.   属性列表中的属性可以缺省;

            ii.  属性的顺序可以和创建表时属性的声明顺序不同;

            iii. 字段值必须和INSERT语句中属性的顺序一一对应;

            iv. 对于缺省的属性系统将默认赋予NULL值,但是要注意不能违反完整性约束条件;

 

2.   完整属性插入:

       INSERT INTO Student

       (Sno, Sname, Ssex, Sdept, Sage)   //顺序可以和创建表时的顺序不同

       VALUES('200215128', '陈冬', '男', 'IS', 18)

 

3.   部分缺省属性插入:

       INSERT INTO SC

       (Sno, Cno)

       VALUES('200215128', '1') //对于缺省的Grade系统将会赋予默认值NULL

 

4.   全部缺省插入:

       INSERT INTO Student

       ('200215126', '张成民', '男', 18, 'CS')

       对于完全缺省属性的插入,写字段值的时候必须按照创建表时的顺序完整的列出,否则将会报错为类型不匹配或者字段缺少;

 

5.   通过子查询批量插入数据(元组):

       a. 一般规则:

           INSERT INTO 表名

           (属性列表)

           SELECT子查询

       b. 对于每一个系求平均年龄并插入到数据库中:

           USE Student_Course

                  CREATE TABLE Dept_age ( //先创建一个可以进行适配的表,然后再将查询结果存入表中

                               Sdept        CHAR(15),

                               Avg_age   SMALLINT

                  )

           

           USE Student_Course

                 INSERT INTO Dept_age

                 (Sdept, Avg_age)

                 SELECT Sdept, AVG(Sage)

                       FROM Student

                             GROUP BY Sdept

 

6.   对元组进行更新

       a. 这里需要使用UPDATE(更新)和SET(设定字段值)这两个关键字;

       b. 一般规则:

           UPDATE 表名

           SET 列名= 表达式的列表

           WHERE 条件表达式

       c. 这里是对所有满足条件表达式的元组进行更新,如果不写WHERE语句则对所有元组都作更新;

       d. 中间的赋值表达式是将右边的新值赋给相应列的字段;

       e. 将学生200215121年龄改为22岁:

            UPDATE Student

            SET Sage = 22

            WHERE Sno = ‘200215121’

       f.  将所有学生年龄加1:

            UPDATE Student

            SET Sage = Sage + 1

       g. 具有多表之间联系的更新:

            i.   比如通过名字进行更新一张表,但是名字在另一张表中;

            ii.  需要通过子查询和关系查询实现更新;

            iii. 将所有计算机系学生的成绩置0:

                 UPDATE SC

                 SET Grade = 0

                 WHERE ‘CS’ = (

                         SELECT Sdept

                             FROM Student

                                  WHERE SC.Sno = Student.Sno

                 )

                 实质是从SC中取出一个元组并传入子查询中,将符合条件的Sdept单值返回给WHERE子句进行比较,如果符合WHERE子句的条件,就将该元组的Grade置0;

 

7.   删除元组:

       a. 一般格式:

            DELETE FROM 表名

            WHERE 条件表达式

       b. 即将满足条件表达式的元组从表中删除;

       c. FROM可写可不写,这里推荐不写,因为简洁;

       d. 如果不写条件表达式则表示将表中所有的元组都删除,变成一张空表,但是不删除表本身;

       e. 删除学号为200215128的学生记录:

           DELETE Student

           WHERE Sno = ‘200215128’

       f.  多表相关删除(使用带子查询的相关查询删除):删除所有计算机科学系学生的选课记录

           DELETE SC

           WHERE ‘CS’ = (

                     SELECT Sdept

                          FROM Student

                              WHERE Sno = SC.Sno

           )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值