




已阅读5页,还剩87页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章重点 SQL的数据定义 查询 更新 控制功能 视图的概念及其优点 本章难点 SQL的数据查询功能 第三章关系数据库标准语言SQL 第三章关系数据库标准语言SQL3 1SQL概述 SQL语言的动词 SQL的数据定义功能包括三部分 定义基本表 定义视图和定义索引 视图是基于基本表的虚表 索引是依附于基本表的 因此SQL通常不提供修改视图和索引定义的操作 SQL的数据定义语句 第三章关系数据库标准语言SQL3 2数据定义 DB2SQL支持以下数据类型 INTEGER或INT全字长 31bits精度 的二进制整数SMALLINT半字长 精度为15bits 的二进制整数DECIMAL p q 或DEC p q 压缩十进制数 共p位 小数点后有q位 15 p q 0 q 0时可省略 FLOAT双字长的浮点数CHARTER N 或CHAR N 长度为n的定长字符串VARCHAR N 变长字符串 最大长度为nGRAPHIC N 长度为n的定长图形字符串VARGRAPHIC N 变长图形字符串 最大长度为nDATE日期型 格式为YYYY MM DDTIME时间型 格式为HH MM SSTIMESTAMP日期加时间 第三章关系数据库标准语言SQL3 2数据定义 第四章关系数据库标准语言SQL4 2数据定义 例2 CREATETABLEs snochar 6 notnull snamechar 8 unique ssexchar 2 default 男 sagesmallint sdeptchar 2 sbirthdaydate primarykey sno 列级完整性约束条件 表级完整性约束条件 第三章关系数据库标准语言SQL3 2数据定义 3 2 1定义 删除 与修改基本表二 修改基本表语句格式为 ALTERTABLE ADD 完整性约束 DROP MODIFY 功能 修改指定的基本表 ADD子句 用于增加新列和新的完整性约束条件 DROP子句 用于删除指定的完整性约束条件 MODIFY子句 用于修改原有的列定义 列名和数据类型 说明 不论基本表中原来是否有数据 新增加的列一律为空值 SQL没有提供删除属性列的语句 第三章关系数据库标准语言SQL3 2数据定义 例3 向S表增加 入学时间 列 数据类型为日期型 ALTERTABELSADDSCOMEDATE 注意 新增加的属性列不能指定为NOTNULL 将年龄的数据类型改为半字长整数 ALTERTABELSMODIFYSAGESMALLINT 注意 修改原有的属性列定义有可能破坏已有数据 删除姓名上的唯一值约束 altertablesdropunique sname 第三章关系数据库标准语言SQL3 2数据定义 3 2 1定义 删除 与修改基本表三 删除基本表语句格式为 DROPTABLE 功能 删除指定的基本表 同时表中的数据和在此表上建立的索引都将自动被删除掉 建立在此表上的视图虽仍然保留 但已无法引用 注意 执行删除操作一定要格外小心 第三章关系数据库标准语言SQL3 2数据定义 3 2 2建立与删除索引在基本表上建立索引是为了加快查询速度 一 建立索引语句格式为 CREATE UNIQUE CLUSTER INDEX索引名on基本表名 列名 次序 列名 次序 其他参数 说明 索引可以建在一列或几列上 圆括号内是索引列的顺序说明表 1 次序 指定了索引值排序的次序 可取ASC 升序 或DESC 降序 缺省值为升序 2 UNIQUE表示每一索引值只对应唯一的数据记录 3 CLUSTER表示要建立的索引是聚簇索引 所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织 例 CREATECLUSTERINDEXStusnameonStudent Sname 此类索引可以提高查询效率 聚簇索引可以在最常查询的列上建立 对于经常更新的列不宜建立 一个基本表上最多只能建立一个聚簇索引 第三章关系数据库标准语言SQL3 2数据定义 例4为学生 课程数据库中的Student Couse SC三个表建立索引 其中Student表按学号升序建唯一索引 Couse表按课程号升序建唯一索引 SC表按学号升序和课程号降序建唯一索引 CREATEUNIQUEINDEXStusnoONStudent Sno CREATEUNIQUEINDEXCoucnoONCouse Cno CREATEUNIQUEINDEXSnoONSC SnoASC CnoDESC 第三章关系数据库标准语言SQL3 2数据定义 二 删除索引语句格式为 DROPINDEX索引名 功能 删除索引 同时把有关索引的描述也从数据字典中删去 例5 DROPINDEXXSNO 第三章关系数据库标准语言SQL3 3数据查询 一 SELECT语法语句格式为 SELECT ALL DISTINCT 目标列表达式 目标列表达式 FROM基本表 或视图 基本表 或视图 WHERE条件表达式 GROUPBY列名1 HAVING内部函数表达式 ORDERBY列名2 ASC DESC UNIONSELECT 功能 在指定的表中查询满足条件的数据 并按目标列表达式方式显示 第三章关系数据库标准语言SQL3 4数据查询 三 WHERECLAUSE条件可以包括 1 比较 2 范围 betweenand notbetweenand 3 列表 in notin 4 字符匹配 like notlike 5 空值判断 isnull isnotnull 6 连接 多表 单表 表的自连接 7 嵌套查询 子查询 第三章关系数据库标准语言SQL3 4数据查询 例 比较 求数学系学生的学号 姓名 SELECTSNO SNameFROMSWHERESdept MA 求数学系年龄在 岁以下的学生的学号 姓名 SELECTSNO SNameFROMSWHERESdept MA andsage 19 第三章关系数据库标准语言SQL3 4数据查询 求数学系或年龄在 岁以下的学生的信息 SELECT FROMSWHERESDept MA orsage 19 等价形式为 SELECT FROMSWHERESDept MA unionSELECT FROMSWHEREsage 19 第三章关系数据库标准语言SQL3 4数据查询 例 范围 betweenand notbetweenand 求数学系年龄在 岁到 岁之间 的学生的信息SELECT FROMSWHERESDept MA andsage 19andsage 22 第三章关系数据库标准语言SQL3 4数据查询 用范围的等价形式为 SELECT FROMSWHERESDept MA andsagebetween19and22 求年龄不在 岁到 岁之间 的学生的信息SELECT FROMSWHEREsagenotbetween19and22 第三章关系数据库标准语言SQL3 4数据查询 例 列表 in notin 求在下列各系的学生 MA 数学系 CS 计算机科学系 SELECT FROMSWHERESDeptIN MA CS 谓词IN实际上是一系列谓词 OR 的缩写 所以 上面等价的查询语句为 SELECT FROMSWHERESDept MA orSDept CS 第三章关系数据库标准语言SQL3 4数据查询 也可以用谓词NOTIN例如 求不是数学系 计算机科学系的学生 SELECT FROMSWHERESDeptNOTIN MA CS 第三章关系数据库标准语言SQL3 4数据查询 例 字符匹配 like notlike LIKE谓词的一般形式是 列名 NOT LIKE 匹配串 ESCAPE常量字符 匹配串可以是一个完整的字符串 也可以含有通配符 和 其中 匹配任意长度的字符串 匹配单个字符LIKE可以用 代替 NOTLIKE可以用 或 代替ESCAPE常量字符表示该常量字符后的一个字符不再具有通配符的含义 而作为一个普通字符匹配 第三章关系数据库标准语言SQL3 4数据查询 例如 列名like ACV HHFJ ESCAPE 求姓名是以字母D打头的学生 SELECT FROMSWHERESNameLIKE D 第三章关系数据库标准语言SQL3 4数据查询 例 空值判断 isnull isnotnull 注意 在计算列中有空值时 要先处理或将空值列置0查询没有成绩的学生的学号和课程号SELECTsno cnoFROMSCWHEREgradeisnull 第三章关系数据库标准语言SQL3 4数据查询 例 连接 多表 单表 表的自连接 若一个查询同时涉及到两个以上的表 称为连接查询连接查询包括 等值连接自然连接非等值连接自身连接外连接复合条件连接 第三章关系数据库标准语言SQL3 4数据查询 例 广义笛卡尔积 SELECTs sno sname sc sno gradeFROMsc s 例 等值连接 SELECTs sno sname sc FROMsc sWHEREs sno sc sno SELECTs sno sname o cname gradeFROMsc s cWHEREs sno o o 第三章关系数据库标准语言SQL3 4数据查询 例 自然连接 SELECTs o sc gradeFROMsc sWHEREs sno sc sno 例 自身连接 SELECTFo Second pcnoFROMcFirst cSecondWHEREFirst pcno So 第三章关系数据库标准语言SQL3 4数据查询 例 外连接 SELECTs o sc gradeFROMsc sWHEREs sno sc sno 例 复合条件连接 SELECTs o sc gradeFROMsc sWHEREs sno sc snoandcno 2 andgrade 85 第三章关系数据库标准语言SQL3 4数据查询 7 嵌套查询 子查询 一个SELECT FROM WHERE语句称为一个查询块一个查询块出现在WHERE子句中或HAVING短语中的查询称为嵌套查询SQL语句允许多层嵌套特别指出 子查询的SELECT语句中不能使用ORDERBY子句ORDERBY子句只能对最终查询结果排序嵌套查询分为 简单子查询相关子查询 第三章关系数据库标准语言SQL3 4数据查询 例 简单子查询 带有IN谓词的子查询 查询选修了 2 号课程的学生的姓名SELECTsnameFROMsWHEREsnoin SELECTsnoFROMSCWHEREcno 2 等价于 SELECT snameFROMsWHEREsnoin s1 s3 s4 s5 第三章关系数据库标准语言SQL3 4数据查询 例 查询选修了 数据库系统 课程的学生的学号和姓名SELECTs sno snameFROMsWHEREsnoin SELECTsnoFROMSCWHEREcnoin SELECTcnoFROMCWHEREcname 数据库系统 第三章关系数据库标准语言SQL3 4数据查询 例 带有比较运算符的子查询 查询 王明 所在系的学生的学号 姓名和系SELECTs sno sname sdeptFROMsWHEREsdept SELECTsdeptFROMSWHEREsname 王明 第三章关系数据库标准语言SQL3 4数据查询 例 带有ANY或ALL谓词的子查询 查询其它系比 CS 系某一学生年龄小的学生姓名和年龄SELECTsname sageFROMsWHEREsdept cs andsage any SELECTsageFROMSWHEREsdept cs 第三章关系数据库标准语言SQL3 4数据查询 例 查询其它系比 CS 系任一学生年龄小的学生姓名和年龄SELECTsname sageFROMsWHEREsdept cs andsage all SELECTsageFROMSWHEREsdept cs 第三章关系数据库标准语言SQL3 4数据查询 例 相关子查询 使用存在量词EXISTS和NOTEXISTS EXISTS代表存在量词 带有EXISTS谓词的子查询不返回任何数据 只产生逻辑值 TRUE 或 FALSE 查询选修了 2 号课程的学生的学号和姓名SELECTs sno snameFROMsWHEREexists SELECT FROMSCWHEREsc sno s snoandcno 2 第三章关系数据库标准语言SQL3 4数据查询 查询未选修了 2 号课程的学生的学号和姓名SELECTs sno snameFROMsWHEREnotexists SELECT FROMSCWHEREsc sno s snoandcno 2 第三章关系数据库标准语言SQL3 4数据查询 四 聚合函数有SUM AVG MAX MIN COUNT COUNT 例 SELECTmax sage FROMs SELECTcount FROMs SELECTcount sno FROMswheresdept ma 第三章关系数据库标准语言SQL3 4数据查询 五 结果排序ORDERBY子句对查询结果按一个或多个属性的升序 ASC 或降序 DESC 排列SELECT FROMscORDERBYSNO SELECT FROMscORDERBYCNODESC 第三章关系数据库标准语言SQL3 4数据查询 六 结果分组与HAVING子句例 SELECTssexFROMsgroupbyssex SELECTssex avg sage FROMsgroupbyssex SELECTsdept avg sage aaaFROMsgroupbysdepthavingaaa 19 第三章关系数据库标准语言SQL3 4数据查询 例 统计每个学生选修课程的门数及平均成绩SELECTsno count ascourse num avg grade asavg gradeFROMscgroupbysno 第三章关系数据库标准语言SQL3 4数据查询 例 统计每门课程的选修人数及平均成绩SELECTcno count asstudent num avg grade asavg gradeFROMscgroupbycno 第三章关系数据库标准语言SQL3 4数据查询 关于在WHERE子句中不能使用聚合函数SELECTsno max sage FROMsGROUPBYsno SELECTsno sageFROMsWHEREsage max sage 第三章关系数据库标准语言SQL3 4数据查询 七 集合查询例查询计算机科学系的学生及年龄不大于19岁的学生 SELECT FROMStudentWHERESdept CS UNIONSELECT FROMStudentWHERESage 19 本查询实际上是求计算机科学系的所有学生与年龄不大于19岁的学生的并集 使用UNION将多个查询结果合并起来时 系统会自动去掉重复元组 注意 参加UNION操作的各结果表的列数必须相同 对应项的数据类型也必须相同 第三章关系数据库标准语言SQL3 4数据查询 例查询选修了课程1或者选修了课程2的学生 SELECTSnoFROMSCWHERECno 1 UNIONSELECTSnoFROMSCWHERECno 2 标准SQL中没有直接提供集合交操作和集合差操作 但可以用其他方法来实现 例查询计算机科学系的学生与年龄不大于19岁的学生的交集 这实际上就是查询计算机科学系中年龄不大于19岁的学生 SELECT FROMStudentWHERESdept CS ANDSage 19 第三章关系数据库标准语言SQL3 4数据查询 例查询选修课程1的学生集合与选修课程2的学生集合的交集 SELECTSnoFROMSCWHERECno 1 ANDSnoIN SELECTSnoFROMSCWHERECno 2 例查询计算机科学系的学生与年龄不大于19岁的学生的差集 SELECT FROMStudentWHERESdept CS ANDSage 19 查询选修了1号课程或2号课程的同学查询选修了1号课程并且没有选修2号课程的同学查询选修了1号课程并且选修2号课程的同学 第三章关系数据库标准语言SQL3 3数据更新 SQL的更新语句包括修改 删除和插入三类语句 3 3 1 插入一 插入单个元组语句格式为 INSERTINTO表名 字段名 字段名 VALUES 常量 常量 功能 将新元组插入指定表中 说明 1 在INTO中没有出现的属性列 将被置为空值 2 在表定义时说明了NOTNULL的属性列不能取空值 3 如果INTO子句没有指明任何列名 则新插入的记录必须在每个属性列上均有值 第三章关系数据库标准语言SQL3 3数据更新 例6将一个新学生记录 95020 陈东 男 IS 18 插入到S表INSERTINTOSVALUES 95020 陈东 男 IS 18 或INSERTINTOS sno sname ssex sdept sage VALUES 95020 陈东 男 IS 18 空值的插入例7插入一条学生选课记录 95020 1 到SC表INSERTINTOSC sno cno VALUES 95020 1 或INSERTINTOSC sno cno grade VALUES 95020 1 null 第三章关系数据库标准语言SQL3 3数据更新 3 3 1 插入二 插入子查询结果语句格式为 INSERTINTO表名 字段名 字段名 子查询 第三章关系数据库标准语言SQL3 3数据更新 例8对于一个系 求学生的平均年龄 并把结果存入数据库中 CREATETABLEDEPTAGE SDEPTCHAR 15 AVGAGESMALLINT INSERTINTODEPTAGE SDEPT AVGAGE SELECTSD AVG SA FROMSGROUPBYSD 第三章关系数据库标准语言SQL3 3数据更新 3 3 2 修改数据语句格式为 UPDATE表名SET字段 表达式 字段 表达式 WHERE谓词 功能 修改指定表中满足谓词的元组 把这些元组按SET子句中的表达式修改相应字段上的值 第三章关系数据库标准语言SQL3 3数据更新 一 单记录修改例9 把学生S1的姓名改为WANGPINGUPDATESSETSName WANGPING WHERESNO S1 第三章关系数据库标准语言SQL3 3数据更新 例10 多记录修改 把所有学生的年龄增加1岁UPDATESSETSage Sage 1 第三章关系数据库标准语言SQL3 3数据更新 二 多表的修改例11 把学生S2的学号改为S9UPDATESSETSNO S9 WHERESNO S2 UPDATESCSETSNO S9 WHERESNO S2 注意 修改多表数据时要保证数据库内容的一致性 第三章关系数据库标准语言SQL3 3数据更新 三 带子查询的修改例12 将计算机系全体学生的成绩置零UPDATESCSETGRADE 0WHERE CS SELECTSDEPTFROMSWHERES SNO SC SNO 第三章关系数据库标准语言SQL3 3数据更新 3 3 3 删除数据语句格式为 DELETEFROM表名 WHERE谓词 功能 删除指定表中的数据 说明 没有WHERE子句时表示删除此表中的全部记录 但此表的定义仍在数据字典中 第三章关系数据库标准语言SQL3 3数据更新 一 单记录删除把学生 S9 删除DELETEFROMSWHERESNO S9 会产生什么问题吗 第三章关系数据库标准语言SQL3 3数据更新 二 多记录删除删除所有学生选课记录DELETEFROMSC SC成为一个空表 第三章关系数据库标准语言SQL3 3数据更新 三 带子查询的删除将计算机系全体学生的选课记录DELETEFROMSCWHERE CS SELECTSDEPTFROMSTUDENTWHERESTUDENT SNO SC SNO 第三章关系数据库标准语言SQL3 3数据更新 3 3 4更新操作与数据库的一致性增加 删除 修改操作只能对一个表操作 这会带来一些问题 如在对表更新时的数据不一致 解决的办法 数据库系统引入了事务 Transaction 的概念 第三章关系数据库标准语言SQL3 4数据查询 一 SELECT语法语句格式为 SELECT ALL DISTINCT 目标列表达式 目标列表达式 FROM基本表 或视图 基本表 或视图 WHERE条件表达式 GROUPBY列名1 HAVING内部函数表达式 ORDERBY列名2 ASC DESC UNIONSELECT 功能 在指定的表中查询满足条件的数据 并按目标列表达式方式显示 第三章关系数据库标准语言SQL3 5视图 3 5 1定义视图语句格式为 CREATEVIEW视图名 字段名 字段名 AS子查询 WITHCHECKOPTION 说明 1 WITHCHECKOPTION选项表示对视图进行UPDATE INSERT和DELETE操作时要保证更新 插入和删除的行必须满足视图定义的谓词条件 子查询的条件表达式 2 子查询不允许含有ORDERBY子句和DISTINCT短语 3 组成视图的属性列名要么全部指定要么全部省略 没有其它选择 第三章关系数据库标准语言SQL3 5视图 例 建立 CS 系的学生视图表 CREATEVIEWV CSAS SELECTSNO SNAME SAGE SDEPTFROMSWHERESDEPT CS 等价为 CREATEVIEWV CS SNO SNAME SAGE SDEPT AS SELECTSNO SNAME SAGE SDEPTFROMSWHERESDEPT CS 第三章关系数据库标准语言SQL3 5视图 视图V CS的字段名省略了 隐含为子查询中SELECT子句目标列中的诸字段 SNO SNAME SAGE SDEPT 但是 在下面三种情况下必须明确指定组成视图的所有列名 1 某个目标列不是单纯的属性列名 而是集函数或列表达式 2 多表连接时出现了几个同名列作为视图的字段 3 需要在视图中为某个列启用新的更合适的名字 第三章关系数据库标准语言SQL3 5视图 例 定义一个反映学生出生年份的视图CREATEVIEWBT S Sno Sname Sbirth AS SELECTSno Sname 2002 SageFROMS 建立学生及其平均成绩视图 CREATEVIEWV S G AVG SNO G AVG AS SELECTSNO AVG Grade FROMSCGROUPBYSNO 第三章关系数据库标准语言SQL3 5视图 CREATEVIEWF STUDENT SNO NAME AGE AS SELECT FROMS 由于视图F STUDENT是由子查询 SELECT 建立的 如果以后修改了基本表S的结构 则S表与F STUDENT视图的映象关系被破坏 因而该视图就不能正确工作了 可以通过修改了表结构后删除由该基本表导出的视图 然后重建同名视图的方法解决 第三章关系数据库标准语言SQL3 5视图 视图不仅可以建立在单个基本表上 也可以建立在多个基本表上 例建立信息系选修了1号课程的学生的视图CREATEVIEWIS S1 Sno Sname Grade AS SELECTS Sno Sname GradeFROMS SCWHEREs Sno SC SnoANDSdept IS ANDSC Cno 1 第三章关系数据库标准语言SQL3 5视图 视图不仅可以建立在一个或多个基本表上 也可以建立在一个或多个已定义好的视图上 或同时建立在基本表与视图上 例 建立信息系选修了1号课程且成绩在90分以上的学生的视图 CREATEVIEWIS S2AS SELECTSno Sname GradeFROMIS S1WHEREGrade 90 第三章关系数据库标准语言SQL3 5视图 若一个视图是从单个基本表导出的 并且只是去掉了基本表的某些行和某些列但保留了码 我们称这些视图为行列子集视图 定义视图时可以根据应用的需要 设置一些派生属性列 这些派生属性由于在基本表中并不实际存在 所以有时也称他们为虚拟列 带虚拟列的视图我们称为带表达式的视图 还可以用带有集函数和GROUPBY子句的查询来定义视图 这种视图称为分组视图 第三章关系数据库标准语言SQL3 5视图 比较 视图V CS BT S及V S G AVGCREATEVIEWV CS SNO SNAME SAGE SDEPT AS SELECTSNO SNAME SAGE SDEPTFROMSWHERESDEPT CS CREATEVIEWBT S Sno Sname Sbirth AS SELECTSno Sname 2002 SageFROMS 定义行列子集视图 定义带表达式的视图 第三章关系数据库标准语言SQL3 5视图 比较 视图V CS BT S及V S G AVG学号及他的平均成绩定义为一个视图CREATEVIEWV S G AVG SNO G AVG AS SELECTSNO AVG Grade FROMSCGROUPBYSNO 定义分组视图 第三章关系数据库标准语言SQL3 5视图 二 删除视图语句格式为 DROPVIEW视图名 功能 删除视图后 视图的定义将从数据字典中删除 但由该视图导出的其他视图定义仍在数据字典中 不过该视图已失效 要一一删除 例 DROPVIEWIS S1 在此基础上定义的视图IS S2失效 第三章关系数据库标准语言SQL3 5视图 3 5 2视图的查询视图定义后 用户就可以象对基本表进行查询一样对视图进行查询了 由于视图的查询上是对基本表的查询 因此基本表的变化可以反映到视图上 视图就如同 窗口 一样 通过视图可以看到基本表的变化 通常 视图的查询的转换是直接了当的 但有时也会产生问题 第三章关系数据库标准语言SQL3 5视图 例 SELECTSNO SAGEFROMV CSWHERESAGE 20 系统执行此查询时首先进行有效性检查 检查查询的表 视图是否存在 若存在 则从数据字典中取出视图的定义 把定义中的子查询和用户查询结合起来 把它转换成等价的对基本表的查询 形成一个修正的语句 这一过程称为视图消解 第三章关系数据库标准语言SQL3 5视图 本例的修正后的查询语句中为 SELECTSNO SAGEFROMSWHERESDEPT CS ANDSAGE 20 注 CREATEVIEWV CS SNO SNAME SAGE SDEPT AS SELECTSNO SNAME SAGE SDEPTFROMSWHERESDEPT CS 第三章关系数据库标准语言SQL3 5视图 视图的查询的转换是直接了当的 但有时也会产生问题 例 求平均成绩为90分以上的学生学号和成绩 SELECT FROMV S G AVGWHEREGAVG 90 执行查询转换后得到一个不正确的查询语句 SELECTSNO AVG GRADE FROMSCWHEREAVG GRADE 90 GROUPBYSNO 第三章关系数据库标准语言SQL3 5视图 WHERE子句中不能用库函数作为条件表达式 正确的查询语句应转换为 SELECTSNO AVG GRADE FROMSCGROUPBYSNOHAVINGAVG GRADE 90 但有些系统不能作这类查询转换 第三章关系数据库标准语言SQL3 5视图 3 5 3视图的更新更新视图是指通过视图插入 INSERT 删除 DELETE 和修改 UPDATE 数据 由于视图是不实际存储数据的虚表 因此对视图的更新 最终要转换为对基本表的更新 强调指出 1 对视图的更新最终要转换成对基本表的更新 2 视图的更新是受限的 第三章关系数据库标准语言SQL3 5视图 一 通过视图修改数据例 通过视图修改数据UPDATEV CSSETSNAME 李勇MMMM WHERESNO S1 将转换成对基本表S的更新 UPDATESSETSNAME 李勇MMMM WHERESDEPT CS ANDSNO S1 CS 系学生 第三章关系数据库标准语言SQL3 5视图 二 通过视图插入数据例 通过视图插入数据INSERTINTOV CSVALUES S12 YANXI 19 CS 将转换成对基本表的插入 INSERTINTOSVALUES S12 YANXI 19 CS CREATEVIEWV CS SNO SNAME SAGE SDEPT AS SELECTSNO SNAME SAGE SDEPTFROMSWHERESDEPT CS 第三章关系数据库标准语言SQL3 5视图 三 通过视图删除数据DELETEFROMV CSWHERESNO S1 将转换成对基本表的删除 DELETEFROMSWHERESNO S1 ANDSDEPT CS 数据被删除 第三章关系数据库标准语言SQL3 5视图 一般地 1 行列子集视图是可更新的 即可执行UPDATE DELETE和INSERT三类操作 2 有些视图虽然不是行列子集视图 但是从理论上讲仍是可更新的 3 有些视图是不可更新的 目前各个关系数据库系统一般都只允许对行列子集视图的更新 而各个系统对视图的更新还有进一步的规定 这些规定也不尽相同 第三章关系数据库标准语言SQL3 5视图 在DB2中 只有从单个基本表导出的视图才允许对它进行更新操作并且有以下具体的限制 1 若视图的字段是来自字段表达式或常数 则不允许对此视图执行INSERT UPDATE操作 但允许执行DELETE操作 2 若视图的字段是来自库函数 则此视图不允许更新 3 基视图的定义中有GROUPBY子句 则此视图不允许更新4 若视图的定义中有DISTINCT任选项 则此视图不允许更新5 若视图的定义中有嵌套查询 并且嵌套查询的FROM子句中涉及的表也是导出该视图的基本表 则此视图不允许更新 6 若视图是由一个以上基本表导出的则此视图不允许更新 7 一个不允许更新的视图上定义的视图不允许更新 第三章关系数据库标准语言SQL3 5视图 3 5 4视图的作用视图的概念有很多优点 1 简化了用户的操作 2使用户能以不同的方式看待同一数据 3 对重构数据库提供了一定程度的逻辑独立性 4 对机密数据提供了自动的安全保护功能 第三章关系数据库标准语言SQL3 6数据控制 由DBMS提供统一的数据控制功能是数据库系统的特点之一 数据控制亦称为数据保护 包括数据的安全性控制 完整性控制 并发控制和数据库的恢复 这里主要介绍SQL的安全性控制功能 某个用户对某类数据具有何种操作权利是政策问题 不是技术问题 第三章关系数据库标准语言SQL3 6数据控制 3 6 1授权SQL语言用GRANT语句向用户授予操作权限 语句格式为 GRANT ON TO WITHGRANTOPTION 功能 将对指定操作对象的指定操作权限授予指定的用户 不同类型的操作对象有不同的操作权限 第三章关系数据库标准语言SQL3 6数据控制 不同对象类型允许的操作权限表 第三章关系数据库标准语言SQL3 6数据控制 例 把查询S表权限授给用户U1GR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年兰州石化分公司春季招聘(45人)模拟试卷含答案详解
- 湖南混凝土地坪施工方案
- 2025福建福州经济技术开发区市政工程中心第二季度招聘编外人员2人考前自测高频考点模拟试题及1套完整答案详解
- 2025年甘肃中医药大学招聘急需紧缺专业硕士研究生模拟试卷及答案详解(必刷)
- 塑造抗疫堡垒:无菌护理-感染控制策略与实践全解析
- 2025年云南初一历史试卷及答案
- 家庭心理咨询管理方案
- 2025年威海市文登区属华盛能源投资集团等国有企业公开招考工作人员考前自测高频考点模拟试题及答案详解(各地真题)
- 2025年垃圾分类知识竞赛试题及答案
- 2026国网吉林省电力有限公司校园招聘备考考试题库附答案解析
- 银行解冻申请书
- 基于学科核心素养下的教学设计
- 人教版英语七年级(全册)单词表
- 全心衰竭的治疗与护理
- 扩张型心肌病治疗及护理
- 森林抚育作业设计
- 2002版干部履历表(贵州省)
- DL∕T 1396-2014 水电建设项目文件收集与档案整 理规范
- 行路难课件8省公开课一等奖新名师比赛一等奖课件
- 防欺凌隐患排查和矛盾化解记录表
- 建设单位给施工单位的通知函范本
评论
0/150
提交评论