- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4-4 sql数据更新
3.4 数据更新 插入数据 修改数据 删除数据 3.4.1 插入数据 一、插入单个元组 INTO子句中没有出现的属性列,新记录在该列上将取空值,但注意说明了NOT NULL的列不能取空值 如果INTO子句中没有指明任何列名,则新记录的每个属性列必须有值 例子 二、插入子查询结果 (可能是一组元组) 3.4.2 修改数据 修改一个或一组元组的值 修改数据 二、修改多个元组的值 3.4.3 删除数据 删除一个或多个元组 删除数据 二、删除多个元组的值 三、带子查询的删除语句 四、更新会带来的一致性问题 增删改操作只能对一个表操作,容易使数据库中的数据参照完整性受到破坏。 通常,数据库都要引入“事务”概念来解决这一问题。 3.5 视图 视图 用户看待数据的多种角度性可借用视图来实现,从而可以隐藏部分信息 视图是从一个或几个基本表或视图导出的表。数据库中只存放视图定义,不存放相应数据,数据仍存放在原表中, 因此视图又被称为虚表。 视图经定义后,即可和表一样使用 视图操作 定义视图、查询视图、删除视图 更新视图(有一定限制,并非所有视图都可更新) 3.5.1 定义视图 子查询中通常不含ORDER BY和DISTINCT短语 WITH CHECK OPTION表示对视图进行更新操作的行须满足子查询中的条件表达式 组成视图的属性列名或者全部指定或者全部省略,但下列三种情况时必须指定列名 目标列是集函数或列表达式、多表连接时出现的同名列、启用新列名 属性列名可以是虚拟列(基表中没有的列),其值由表达式计算得到 例子 从多个基表导出的视图 带表达式的视图 从其它视图中导出视图 说明 CREATE VIEW语句的执行结果 DBMS执行CREATE VIEW语句的结果只是把视图的定义存入数据字典,并不执行其中的SELECT语句。 只有在对视图进行查询时,才执行视图定义中的SELECT语句并从基表中将数据取出。 删除视图 基表(或视图)被删除后,建立在其基础上的视图也需显式地一一删除 3.5.2 查询视图 视图消解过程:首先进行视图有效性检查,检查查询的表、视图等是否存在。如果存在,则结合视图定义中的子查询和用户查询,将视图查询转换成为对基表的查询并执行。 例子 3.5.3更新视图 通过视图来插入、删除和修改数据 由于有些视图的更新不能唯一地有意义地转换成相应基表的更新,因此目前关系数据库系统一般只允许对行列子集视图进行更新 例子 例子 系统对视图更新操作的一些规定 不同的数据库产品各不相同 如IBM DB2规定: 若视图是由两个以上基表导出的,则此视图不允许更新。 若视图的字段来自表达式或常数,则不允许对此视图进行插入和更新操作,但允许删除操作。 若视图的字段来自集函数,则此视图不允许更新 若视图定义中含有GROUP BY子句或DISTINCT子句,则此视图不允许更新 若视图定义中有嵌套查询,且内层查询的FROM子句中涉及的表也是导出该视图的基表,则此视图不允许更新 一个不允许更新的视图上定义的视图也不允许更新 视图的作用 简化用户操作 数据看起来简单、清晰。 用户可以从多角度看待同一数据 灵活共享数据库。 对数据库重构提供了一定程度的逻辑独立性 当数据库重构造(如增加表,或增加字段)时,用户和用户程序不会受影响。只是由于视图的更新是有条件的,因此视图只能在一定程度上提供数据的逻辑独立性。 能够对机密数据提供安全保护 对不同的用户定义不同的视图,实现重要数据的隐藏。 3.6 数据控制 数据控制的功能: 事务管理功能 数据库恢复、并发控制 (在以后的章节中介绍) 数据保护功能 数据库的安全性、数据库的完整性 数据库的完整性控制 体现在CREATE TABLE和ALTER TABLE语句中 数据库的安全性控制 授权 GRANT 收回权限 REVOKE 3.6.1 授权 将指定操作对象的指定操作权限授予指定用户,由DBA或数据所有者授权 例子 例子 3.6.2 收回权限 由DBA 或其他授权者收回授予的权限 例子 实验 视图的创建 职工-工资数据库 职工(工号,姓名,职务,部门) 工资表(工号,月份,基本工资,岗位津贴,交通补贴) 建立职工工号和每月基本工资的视图 建立每个职工的姓名和他当月总收入的视图 建立本月总收入低于1000元的职工的视图 练习 :写出相应的SQL语句 Student-Course-SC数据库中 新生“张军”来校报到并选修了两门课程,请将相关的信息插入到对应表中去。 删除信息系所有学生的选课记录。 将计算机系“王明”的一号课程成绩置为90。 作业 SQL语句 答案 1.select 学号,姓名 from s where 性别=男‘ 2. select 学号,姓名 from s where
文档评论(0)