数据库系统原理与技术第4章.ppt_第1页
数据库系统原理与技术第4章.ppt_第2页
数据库系统原理与技术第4章.ppt_第3页
数据库系统原理与技术第4章.ppt_第4页
数据库系统原理与技术第4章.ppt_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理与技术 第二版 程学先程传慧曾玲陈永辉郑秋华杨晓艳 第四章关系数据库实现及使用 关系代数 SQL语言 本章要点 退出 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 关系代数是一种抽象的查询语言 是关系数据操纵语言的一种传统表达方式 它是用对关系的运算来表达查询 按照表达查询的方式可分为两大类 第一类是用对关系的运算来表达查询的方式 称为关系代数 第二类是用谓词来表达查询要求的方式称为关系演算 关系代数 一 传统的集合运算包括四种运算 并 交 差 广义笛卡尔积 1 并 Union 设关系R和关系S具有相同的目n 且相应的属性取自同一个域 则关系R和关系S的并记为R S 其结果仍为n目关系 由属于R或属于S的元组组成 关系代数 如R和S的元组分别用两个圆表示 则R S的集合如图4 1所示虚影部分元组 关系代数 RS 关系代数 关系代数 2 交 Intersection 设关系R和关系S具有相同的目n 且相应的属性取自同一个域 关系R和关系S的交记为R S 结果仍为n目关系 由既属于R又属于S的元组组成 如R和S的元组分别用两个圆表示 则R S集合运算结果可用图4 2示意 则两圆相交部分元组表示R与S的交 关系代数 关系代数 图4 2集合R S 关系代数 关系代数 3 差 Difference 设关系R和关系S具有相同的目n 且相应的属性取自同一个域 定义关系R和关系S的差记为R S 其结果仍为n目关系 由属于R而不属于S的元组组成 关系代数 关系代数 如R和S的元组分别用两个圆表示 则R S的集合如图4 3所示 比较图4 1 2和图4 1 3 显然R R S R S 或R S R R S 图4 3集合R S 关系代数 4 笛卡尔积 ExtendedCartesianProduct 两个分别为n m的关系R和S的广义笛卡尔积R S是一个 n m 元组的集合 元组的前n个分量是R的一个元组 后m个分量是S的一个元组 若R有K1个元组 S有K2个元组 则R S有K1 K2个元组 记为R S 关系代数 二 专门的关系运算包括四种运算即选择 投影 连接 和除法 是关系数据库数据维护 查询 统计等操作的基础 1 选择 Selection 设有关系R 在关系R中求取满足给定条件F的元组组成新的关系的运算称为选择 记作 F R 关系代数 在 F R 中 f是一个条件表达式 其值为 真 或 假 F R 是从关系R中选取使条件表达式F为真的元组 这是以行为处理单位进行的运算 条件表达式F是由常量 变量及算术比较符 和逻辑运算符 等构成 关系代数 关系代数 关系代数式为 单价 5 营业库 结果如下表所示 2 投影 Projection 设有关系R A B C D 在关系R中求指定的若干个属性列组成新的关系的运算称作投影 记作 A R 其中A为欲选取的属性的列表 可以用 列名1 列名2 形式表示 也可以用 1 2 形式表示 这是以列作为处理单位进行的运算 示意图如图4 4所示的阴影部分 a A c A d A 关系代数 关系代数 关系R a c d 在A上的投影 即 A R A包括 a c d等域 关系代数 3 4 营业库 结果 注意 在投影后如出现重复元组 应只保留一个 关系代数 例4 7 求 营业库 中所有单价大于5元的商品品名和单价 求关系运算式 关系运算式 品名 单价 单价 5 营业库 表4 9从表4 6再作投影 关系代数 3 连接 Join 从两个分别为n m元的关系R和S的广义笛卡尔积中选取满足给定条件F的元组组成新的关系称为R和S的连接 记作RS F A B 其中A和B分别为R和S上度数相等且可比的属性列 是算术比较符 A B 例如 关系R和S如表4 10 4 11所式 求RS 连接结果如图所示 A C 关系代数 4 除 Division 给定关系R x y 与S y 其中x y为属性集 也可为单属性 R中的y和S中的y可以有不同的属性名 但必须出自相同的域集 在求解R S时 对R按x的值分组 然后检查每一组 如某一组中的y包含S中全部的y 则取该组中的x的值作为商关系中的一个元组 否则不取 如此求出R S的商 关系代数 关系代数 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 关系演算以数理逻辑中的谓词演算为基础 谓词 Predicate 指明一个条件 通过对它的求解可得出下列之一的值 真 假 未知 常见的谓词例如 比较谓词 包含谓词 IN 存在谓词 EXISTS 关系演算 一 元组关系演算用表达式 t Q t 来表示 其中t为元组变量 Q t 是由关系名 元组变量 常量及运算符组成的公式 t Q t 表示使Q t 为 真 的元组的集合 关系演算 关系代数的运算均可用关系演算表达式来表示 反之亦然 表示如下 1 并 R S t R t S t 2 交 R S t R t S t 3 差 R S t R t S t 4 投影 i1 i2 ik R tk u R u t 1 u i1 t k u ik 关系演算 5 选择 其中F 是由F用t i 代替运算对象i得到的等价公式 6 连接 t n m u n v m R u s v t 1 u 1 t 2 u 2 t n u n t n 1 v 1 t n m v m 关系演算 关系演算 例4 10 根据表4 2营业库显示所有品名及其单价 C0l t 2 u 营业库 u t 1 u 品名 t 2 u 单价 二 域关系演算用表达式 x1 x2 xk x1 x2 xk 来表示 其中x1 x2 xk是域变量 是由关系 域变量 常量及运算符组成的式子 x1 x2 xk x1 x2 xk 表示所有使 x1 x2 xk 为 真 的那些x1 x2 xk组成的元组的集合 每一个关系代数表达式有一个等价的域演算表达式 反之亦然 关系演算 关系演算 例4 11 如果有关系 学生 学号 姓名 年龄 性别 求用域关系演算式表示年龄大于20的学生的学号 姓名 年龄 解 性别 学生 年龄 20 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 SQL StructuredQueryLanguage 指结构化查询语言 但成为关系数据库标准语言之后它已成为一种综合的 通用的 功能极强的关系数据库语言 SQL语言概貌 SQL语言概貌 1 一体化的特点 2 语言简洁 易学易用 3 高度非过程化 4 极强适应性 5 SQL语言支持关系数据库三级模式的结构 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 一 基本表的定义和修改SQL数据定义功能包括 定义基本表定义视图定义索引 SQL数据定义功能 1 定义基本表的语句 CREATETABLE表名 列名1类型 NOTNULL 列名2类型 NOTNULL 其他参数 其他参数 指与物理存储有关的参数 随具体系统不同而不同 表示可选项 表示多选一项 对于其两边内容 用户只能且必需选一项 SQL数据定义功能 SQL数据定义功能 一般的SQL支持的数据类型有 INTEGER全字长 31bits精度 的二进制整数 SMALLINT半字长 精度为15bits 的二进制整数 DECIMAL p q 压缩十进制数 共p位 小数点后有q位 15 P q 0 q 0时可省略 FLOAT双字长的浮点数 CHAR n 长度为n的定长字符串 VARCHAR n 变长字符串 最大长度为n SQL数据定义功能 SQL支持空值 NULL 的概念 空值是不知道的或不确定的值 除了候选关键字外 任何列可以有空值 如不允许空值 则应指定该列NOTNULL 2 修改基本表定义语句ALTERTABLE表名ADD列名类型例如ALTERTABLE学生ADD班级CHAR 4 在修改基本表定义的列的语句中不允许NOTNULL ALTERTABLE表名RENAMECOLUMN原列名TO新列名用于更改某列名 SQL数据定义功能 ALTERTABLE表名ALTERCOLUMN列名类型 宽度 小数位 修改字段类型 字段或数值型字段宽度和数值型字段小数点后位数 ALTERTABLE表名DROPCOLUMN列名从表中删去一列 SQL数据定义功能 3 删除基本表的语句DROPTABLE表例如 DROPTABLE学生将把一个基本表的定义连同其中记录 索引及它导出的所有视图全部删除或不可引用 SQL数据定义功能 二 索引的建立和删除1 索引的建立CAEATE UNIQUE INDEX索引名ON基本表名 列名 次序 列名 次序 其他参数 索引可以建立在一列或几列上 其中次序可取 ASC 升序 或DESC 降序 缺省值为升序 UNIQUE表示每一个索引值只对应唯一的数据记录 用中括号 表示是可选项 例如CREATEINDEX学生索引ON学生 班级DESC 学生号 SQL数据定义功能 2 删除索引的语句DROPINDEX索引名例如DROPINDEX学生索引 SQL数据定义功能 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 一 语句格式SQL语言数据库查询语句一般格式是 SELECT FROM基本表 视图 WHERE条件表达式1 GROUPBY列名1 HAVLNG条件表达式2 ORDERBY列名2 ASC DESC 注意 这是一条SQL语句 SQL数据查询语句 SQL数据查询语句 目标列 的格式可以是以下格式 1 列名1 列名2 其中列名1 列名2为FROM子句中所指基本表或视图中的列名 如果FROM子句中指定多个表 且列名有相同的时 则列名应写为 表名 列名 的形式 SQL数据查询语句 2 上述每一项可以是表达式 目标列 允许使用SQL提供的集合函数形成表达式 常用的集合函数如下 COUNT 计算记录条数COUNT 列名 计算一列值的个数SUM 列名 计算某一列值的总和 该列必须为数值类型 AVG 列名 计算某一列值的平均值 该列必须为数值类型MAX 列名 计算某一列值的最大值 该列必须为数值类型MIN 列名 计算某一列值的最小值 该列必须为数值类型如无HAVING子句 上述函数完成对全表统计 否则作分组统计 SQL数据查询语句 SQL数据查询语句 3 DISTINCT列名1 列名2 表示在最终结果表中 属性相同的元组只保留一条 在书写时 允许使用通配符 表示任意一字符串 表示任意一个字符 基本表或视图 格式如下所示 表名1 或视图名1 别名1 表名2 或视图名2 别名2 SQL数据查询语句 如果 由列名构成 将实现关系投影运算 如果FROM中指定的是一个表 WHERE的描述将实现选择运算 如果FROM中指定的是多个表 WHERE的描述中将包括连接运算 SQL数据查询语句 二 对单一表查询语句示例下列示例中使用的基本表的结构假设为 学生 学生号 姓名 性别 出生年份 班级 寝室号 课程 课程号 课程名 先行课程名 成绩 学生号 课程号 分数 其中出生年份和分数为整型 其他为字符类型 SQL数据查询语句 例4 12求所有学生表数据 SELECT FROM学生例4 13求所有学生姓名的列表 SELECT姓名FROM学生例4 14如当前系统设定的年份为YEAR1求显示所有学生姓名 年龄 SELECT姓名 YEAR1 出生年份FROM学生 SQL数据查询语句 例4 15求显示学生人数和学生平均年龄 SELECTCOUNT AVG YEAR1 出生年份 FROM学生例4 16求所有学生班级的列表 SELECTDISTINCT班级FROM学生因为每个学生班级均有许多学生 为在列表中不出现重复班级名 故使用了 DISTINCT SQL数据查询语句 例4 17显示一个学生表 要求先按班级 在班级相同时按学生号排序 SELECT FROM学生ORDERBY班级 学生号例4 18求全体男生信息 SELECT FROM学生WHERE性别 男 例4 19求1980年以前出生的女生姓名 性别 出生年份 SELECT姓名 性别 出生年份FROM学生WHERE性别 女 AND出生年份 1980 SQL数据查询语句 例4 20假设没有安排寝室学生的寝室号为空值 求没有安排寝室学生姓名 SELECT姓名FROM学生WHERE寝室号ISNULL涉及空值的谓词的一般形式是 列名IS NOT NULL 在条件表达式中还经常使用谓词IN BETWEEN LIKE SQL数据查询语句 例4 21求200101班和200103班的学生表 实现语句1 SELECT FROM学生WHERE班级IN 200101 200103 实现语句2 SELECT FROM学生WHERE班级 200101 OR班级 200103 谓词IN实际是一系列逻辑关系词 OR 的缩写 也可用谓词NOTIN表示不在某集合之中 SQL数据查询语句 例4 22求出生年份在1982至1985年间的学生姓名和出生年份 SELECT姓名 出生年份FROM学生WHERE出生年份BETWEEN1982AND1985 SQL数据查询语句 例4 23找出所有2001级学生 SELECT FROM学生WHERE班级LIKE 2001 使用谓词LIKE时 列名必须为各种字符串类型 可采用一些通配字符 下横线 表示任意一单个字符 百分号 表示任意长度字符串 SQL数据查询语句 例4 23求选修课程超过了三门的学生号SELECT学生号FROM成绩GROUPBY学生号HAVINGCOUNT 3以上查询实现了关系运算中投影与选择两种运算 SQL数据查询语句 三 对两个以上表的连接查询例4 25求所有学生信息 包括他所学的课程的课程号和成绩 并按课程号和成绩排名 SELECT学生 成绩 FROM学生 成绩WHERE学生 学生号 成绩 学生号ORDERBY课程号 分数DESC SQL数据查询语句 例4 26求分数为优良 80分数及以上 的所有成绩组成的表 要求显示内容包括姓名 课程名和分数 SELECT姓名 课程名 分数FROM学生 成绩 课程WHERE学生 学号 成绩 学号AND成绩 课程号 课程 课程号AND分数 80 SQL数据查询语句 自连接 例4 27求每门课程的先行课的先行课 SELECT表1 课程名 表2 先行课程名FROM课程表1 课程表2WHERE表1 课程号 表2 课程号 别名 例4 28求既选修了课程号为C1 又选修了课程号为C2这两门课的学生的学生号 SELECT表1 学生号FROM成绩表1 成绩表2WHERE表1 学生号 表2 学生号AND表1 课号 C1 AND表2 课号 C2 SQL数据查询语句 自连接 SQL数据查询语句 嵌套查询 嵌套查询亦称为子查询 它是指一个SELECT FROM WHERE查询块可以嵌入到另一个查询块之中的查询 例4 29求选修了课程号为 C1 的学生姓名 SELECT姓名FROM学生WHERE学号IN SELECT学号FROM成绩WHERE课程号 C1 SQL数据查询语句 例4 30求选修了课程名为 C语言 的学生姓名 SELECT姓名FROM学生WHERE学号IN SELECT学号FROM成绩WHERE课程号IN SELECT课程号FROM课程WHERE课程名 C语言 SQL数据查询语句 例4 31由表4 3所示关系 求表成绩1和成绩2的两个关系的交 SELECT FROM成绩1WHERE学生号IN SELECT学生号FROM成绩2WHERE成绩1 课程号 成绩2 课程号AND成绩1 分数 成绩2 分数 SQL数据查询语句 例4 32由表4 3所示关系 求成绩1 成绩2两个关系的差 SELECT FROM成绩1WHERE学生号NOTIN SELECT学生号FROM成绩2WHERE成绩1 课程号 成绩2 课程号AND成绩1 分数 成绩2 分数 SQL数据查询语句 两个SELECT FROM WHERE查询块如果目标列相同 可利用谓词UNION构成一个查询 实现关系并运算 其格式如下 SELECT目标列1FROM表1WHERE条件表达式1UNIONSELECT目标列2FROM表2WHERE条件表达式2 SQL数据查询语句 目标列1与目标列2名字不要求一样 但列数对应列类型和宽度必须一样 结果中的列名按第一个查询块中列名查询时将去掉重复元组 例4 33求营业库1和营业库2两个关系的并 SELECT FROM营业库1UNIONSELECT FROM营业库2 SQL数据查询语句 关系除法 一般用于实现关系除法 需利用存在量词EXISTS和NOTEXISTS 这类查询称为相关子查询 CorrelatedSubquery 相关子查询中查询条件依赖于外层查询中的某个值 因此不能只处理一次 而要内外交错反复求值 应用EXISTS查询语句定义见下例 例4 35求选修了课程号为 C1 的学生姓名SELECT姓名FROM学生WHEREEXISTS SELECT FROM成绩WHERE成绩 学号 学生 学号AND课程号 C1 SQL数据查询语句 关系除法 SQL数据查询语句 关系除法 在SQL中没有全称量词 Forall 但是带全称量词的谓词都可转换成等价的带存在量词的谓词 例4 36求选修了全部课程的学生姓名 SELECT姓名FROM学生WHERENOTEX1STS SELECT FROM课程WHERENOTEX1STS SELECT FROM成绩WHERE成绩 学号 学生 学号AND成绩 课程号 课程 课程号 SQL数据查询语句 关系除法 更一般的关系除法问题如下例 例4 37求至少选修了学生号为S1的学生所选修的全部课程的学生的学生号 本问题含义是对成绩表按学生号分组 如每组课程号包含了学生号为S1 所选修的全部课程的课程号则取该组学生号列入结果表 SQL数据查询语句 SQL没有蕴函 Implication 逻辑运算 但是蕴函逻辑运算可作如下变换 其意义是说如p包含在q中 则一定不存在 包含在p内的元素 却 不在q之中 的情况 上例也就可如下表述 求这样一些学生学号 不存在这样的情况 即S1选修了的课程CY 他却没有选修 SQL数据查询语句 如果用p表示谓词 学生s1选修课程cy 用q表示谓词 学生Sx选修课程Cy 则上述查询可表示为 SELECTDISTINCT学生号FROM成绩表1WHERENOTEXISTS SELECT FROM成绩表2WHERE表2 学生号 S1 ANDNOTEXISTS SELECT FROM成绩表3WHERE表3 学生号 表1 学生号AND表3 课程号 表2 课程号 许多数据库产品对SQL查询语句进一步扩展 以下结合SQLServer摘要介绍 1 输出列更名运算SELECT DISTINCT AS AS FROM AS新列名 指定查询结果中列的重新定义的标题 SQL查询语句的加强 2 输出定向有许多应用要求根据查询语句产生一个新表并将查询结果送到新表中等 其方法是在语句中增加子句 INTO SQL查询语句的加强 3 外部连接实现外连接的方法是在FROM子句中增加有关连接的语句成分 格式为 OUTERJOIN根据连接类别不同具体分为 SQL查询语句的加强 左外连接 格式为 LEFTOUTERJOIN 意义为可供选作输出内容的记录除了满足连接条件的记录之外 还要加上那些左表 表名1 中不满足连接条件的记录 右外连接 格式为 RIGHTOUTERJOIN 意义为可供选作输出内容的记录除了满足连接条件的记录之外 还要加上那些右表 表名2 中不满足连接条件的记录 全外连接 格式为 OUTEROUTERJOIN 意义为可供选作输出内容的记录除了满足连接条件的记录之外 还要同时加上那些左表 表名1 中不满足连接条件的记录以及右表 表名2 中不满足连接条件的记录 SQL查询语句的加强 例4 38求根据表4 2生成一个新表 统计表 包括所有单价大于5元的记录 并要求增加二列 金额 说明 其中金额 数量 单价 说明要求10个字符宽 以空格填充 SELECT 数量 单价AS金额 AS说明FROM营业库WHERE单价 5INTO统计表 SQL查询语句的加强 例4 39求生成按课程成绩的分析统计表 包括每门课平均分 最高分 最低分 存放在表TMP中 SELECT课程号 AVG 分数 AS平均分 MAX 分数 AS最高分 MIN 分数 AS最低分FROM成绩GROUPBY课程号INTOTMP SQL查询语句的加强 例4 40对于表4 2营业库 求生成统计表 要求按商品代码分组 显示每笔记录 对每组记录显示之后求该组 数量 数据之和 并在其中品名栏内标注 小计 字样 SQL查询语句的加强 例4 41求生成按课程成绩的分析表 包括所有学生姓名 班级 课程号 分数 要求没有成绩的学生情况也能显示 SELECT学生 姓名 学生 班级 成绩 课程号 成绩 分数FROM学生LEFTOUTERJOIN成绩 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 视图和表不同之处在于 它并没有真正地存储数据 它所存取的数据必须依附于所关联的数据表 它是一种虚的映射关系 SQL建立视图的语句格式 CREATEVIEW视图名 字段名 字段名 AS子查询 WITHCHECKOPTION 视图所用字段名可以与基本表中字段名不一致 视图 当字段名不一致或子查询中目标列列名是函数 一般表达式或子查询中目标列有相同列名时 在视图定义中必须指出视图的各个字段名 也可以不列出 默认与子查询结果相同 视图 在子查询中一般不能包括DISTINCT INTO ORDER等 不能涉及临时表 WITHCHECKOPTION选项表示在通过视图对基本表进行插入和更新操作时必须满足子查询中WHERE语句中规定的条件 视图 视图 例4 42将学生表 成绩表 课程表连接后取部分字段建立视图 CREATEVIEW学生成绩ASSELECT姓名 课名 分数FROM学生 成绩 课程WHERE学生 学生号 成绩 学生号AND成绩 课程号 课程 课程号 视图 例4 43例4 39我们可改为视图方式 CREATEVIEW成绩统计 课程号 平均分 最高分 最低分 ASSELECT课程号 AVG 分数 MAX 分数 MIN 分数 FROM成绩GROUPBY课程号再查看成绩统计表 使用如下语句 SELECT FROM成绩统计 删除视图语句格式为 DROPVIEW视图名一个基本表的删除 由它导出的视图将自动删除 当一个视图被删去后 由它导出的其他视图也将自动删除或变为不可引用 视图不仅可用于查询 还可借助视图实现对基本表的插入 修改和删除操作 视图 在关系优化过程中 我们将一个实际数据改为多个表存储 使用户面对的是复杂的数据结构 而视图可不改变数据存储结构同时又使用户面对的是简单的数据结构 视图将其中连接操作对用户隐藏起来 就使用户对数据使用大大简化 更容易操作 视图 在一些数据库系统中 利用视图可建立两个不同数据库系统的联系和通信 例如VFP中 可十分容易地建立ORACLE ACCESS SQLSERVER等系统中的表的视图 称之为 远程视图 VFP的程序可对这些视图如同基本表一样作查询 录入 修改 删除等操作 并借之实现对相关数据库系统中表的操作 使得程序设计大大简化 视图 视图 视图的作用 1 视图对于数据库的重构提供了一定程度的逻辑独立性 2 简化用户观点 隐藏了表之间的连接 3 方便用户 使用户从不同角度看待数据 4 提供数据安全功能 5 在一些数据库系统中 利用视图可建立两个不同数据库系统的联系和通信 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 一 修改 UPDATE 语句格式 UPDATE表名SET字段 表达式 字段 表达式 WHERE条件表达式 例4 44将营业库中所有单价高于5元的商品单价减少10 UPDATE营业库SET单价 单价 0 9WHERE单价 5 SQL数据更新语句 SQL数据更新语句 二 删除 DELETE 语句格式 DELETEFROM表名 WHERE条件表达式 例4 45清空成绩表 DELETEFROM成绩例4 46清空89级学生成绩记录 DELETEFROM成绩WHERE学生号IN SELECT学生号FROM学生WHERE班级LIKE 1989 SQL数据更新语句 三 插入 INSERT 语句格式1 INSERTINTO表名 字段名 字段名 VALUES 表达式 表达式 格式2 INSERTINTO表名 字段名 字段名 子查询 SQL数据更新语句 例4 47录入一个学生记录到学生表中 假设已将其学号 姓名 性别 出生年份和班级数据分别赋值给变量xh1 xm1 xbl csnf1 bj1 INSERTINTO学生 学号 姓名 性别 出生年份 班级 VALUES xh1 xm1 xbl csnf1 bj1 SQL数据更新语句 例4 48欲由表4 1的营业库1和营业库2生成表4 2的营业库表且增加金额一栏 可先基于营业库1生成一个新表 在新表中增加 金额 字段 再将营业库2的数据添加到生成的新表中 用如下两条语句完成 SELECT 数量 单价AS金额FROM营业库1INTO营业库INSERTINTO营业库SELECT 数量 单价FROM营业库2 SQL数据更新语句 四 视图的更新若一个视图是从单个基本表导出 且只是去掉了基本表的某些行和某些列 不包括候选关键字 我们称这类视图为行列子集视图 例如 建立女学生视图S V1 CREATEVIEWS V1ASSELECT学生号 性别FROM学生WHERE性别 女 SQL数据更新语句 对于行列子集视图允许通过它更新基本表 对视图的更新 实质是通过视图实现对基本表的更新 但如果视图中某些字段对应的是对基本表按某种表达式运算的结果 或者视图是基于多表建立的 将不能通过这样的视图实现对基本表的更新 SQL数据更新语句 例如删除女学生视图s v1中学号为200101的学生 DELETEFROMs v1WHERE学号 200101 转换为对基本表的更新 DELETEFROM学生WHERE学生号 200101 AND性别 女 SQL数据更新语句 视图更新的限制 目前各DBMS一般都只允许对行列子集视图进行更新 并有以下限制 1 若视图是由两个以上基本表导出的 则此视图不允许更新 2 若视图的字段来自表达式或常数 则不允许对此视图执行INSERT和UPDATE操作 但允许执行DELETE操作 3 若视图的字段来自集函数 则此视图不允许更新 4 若视图定义中含有GROUPBY子句 则此视图不允许更新 5 若视图定义中含有DISTINCT任选项 则此视图不允许更新 6 若视图定义中有嵌套查询 并且内层查询的FROM子句中的表是相同的 则此视图不允许更新 7 一个不允许更新的视图所导出的视图不允许更新 第四章关系数据库实现及应用 4 1关系代数4 2关系演算4 3SQL语言概貌4 4SQL数据定义功能4 5SQL数据查询语句4 6SQL查询语句的加强4 7视图4 8SQL数据更新语句4 9SQL数据控制功能4 10嵌入式SQL4 11查询优化 SQL数据控制功能 SQL具有授权语句 实现对数据库使用的控制 其语句格式为 GRANT权力 权力 ON对象类型对象名 TO用户 用户 WITHGRANTOPTION IDENTIFIEDBY口令 SQL数据控制功能 其中 所授的权力可分为两类 1 进入数据库系统权力2 使用他人数据的权力 1 进入数据库系统权力 建立自己的数据权力 这些权力由系统管理员授予 包括 CONNECT连接到数据库的权力CREATETAB建立数据库的权力或在数据库中建立表的权力 DBA 系统管理员的权力 SQL数据控制功能 例4 49授予用户USER1进入数据库系统权力 GRANTCONNECTTOUSER1例4 50将数据库学生系统中建立表的权力授予用户USER1 GRANTCREATETABONDATABASE学生系统TOUSER1 SQL数据控制功能 2 使用他人数据的权力 一般由数据表的拥有者授予 这些权力包括 SELECT查询权限INSERT插入新记录权限DELETE删除记录权限UPDATE 属性名 属性名 对有关列修改权限ALTER修改表结构权限INDEX建立索引权限ALL以上所有权限 SQL数据控制功能 SQL数据控制功能 例4 51设成绩表由USER1所建 则USER1可发出命令将对成绩表查询 修改的权力授予USER2 GRANTSELECT UPDATEONTABLE成绩TOUSER2授权者可以撤销授权 其语句为 REVOKE权力

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论