欢迎光临
免费的PDF电子书下载网站

数据库技术与应用 SQL Server 2016 PDF下载

编辑推荐

本书在基础理论篇详细介绍了数据库的基础理论知识,在应用环节介绍了微软公司的*的数据库管理系统SQL Server 2016,*后总结了数据库的*发展技术。全书以一个生活中的案例贯穿其中,强调理论和实践的结合,同时突出学科发展的特点。本书是编者多年来教学经验的总结,融入了大量的教学案例,实用性很强。 ;

内容简介

本书在基础理论部分详细介绍了数据库的基础理论知识,在应用部分介绍了微软公司的*的数据库管理系统SQL Server 2016,*后总结了数据库技术的发展前沿。本书用生活中常见的案例贯穿,强调理论和实践的结合,同时突出学科发展的特点。 全书共分5篇12章:*篇为基础知识篇(第1~5章),介绍数据库的基础理论知识;第二篇为数据库设计技术篇(第6~7章),介绍数据库设计的理论;第三篇为数据库安全篇(第8章),介绍数据库安全保护技术;第四篇为应用篇(第9~11章),介绍SQL Server 2016数据库管理系统;第五篇为发展篇(第12章),介绍数据库技术的*进展情况。 本书是作者多年来教学经验的总结,融入了大量的教学案例,实用性很强,可作为普通高等院校数据库技术及应用课程的教材,也可作为相关技术人员的参考用书,同时还可作为各类水平考试(包括全国计算机等级考试)的辅导用书。

作者简介

暂无

数据库技术与应用 SQL Server 2016 PDF下载

目录

目录基础知识篇

第1章数据库系统概述3

1.1数据管理技术的发展3

1.2数据与数据库概念6

1.3数据库系统7

1.4数据库管理系统8

1.4.1数据库管理系统的功能8

1.4.2数据库管理系统的组成9

1.5数据库系统体系结构11

1.5.1数据库系统的内部体系结构11

1.5.2数据库系统的典型外部体系结构13

1.6数据库用户15

习题117

第2章数据模型18

2.1数据模型的组成要素18

2.2概念数据模型19

2.2.1基本概念20

2.2.2ER模型22

2.3逻辑数据模型24

2.3.1层次数据模型25

2.3.2网状数据模型27

2.3.3关系数据模型28

2.3.4面向对象数据模型29

2.3.5对象关系数据模型302.4物理数据模型31

习题231

第3章关系数据库32

3.1关系数据结构32

3.2关系数据操作34

3.2.1传统的关系运算35

3.2.2专门的关系运算37

3.3关系数据的完整性约束41

习题343

数据库技术与应用SQL Server 2016 目录第4章关系数据库标准语言SQL45

4.1SQL概述45

4.1.1SQL标准的由来45

4.1.2SQL的组成46

4.1.3SQL的特点47

4.2数据定义语言49

4.2.1基本表的定义49

4.2.2索引的定义55

4.3数据查询语言58

4.3.1单表查询59

4.3.2连接查询67

4.3.3集合查询69

4.3.4嵌套查询71

4.4数据更新语言77

4.4.1插入数据78

4.4.2修改数据79

4.4.3删除数据81

4.5视图81

4.5.1视图的概念81

4.5.2创建视图82

4.5.3更新视图83

4.5.4查询视图84

4.5.5删除视图84

习题485

第5章SQL语言高级功能87

5.1数据控制语言87

5.1.1权限和角色87

5.1.2授权语句88

5.1.3收回权限90

5.2存储过程90

5.2.1创建存储过程91

5.2.2修改存储过程92

5.2.3删除存储过程92

5.2.4执行存储过程92

5.2.5过程声明94

5.2.6基本语句和表达式95

5.2.7流程控制97

5.3游标101

5.3.1游标类型101

5.3.2游标的管理103

5.4触发器108

5.4.1触发器的结构108

5.4.2创建DML触发器109

5.4.3创建DDL触发器112

5.4.4创建登录触发器114

5.4.5修改触发器114

5.4.6删除触发器115

5.4.7递归触发器115

5.5嵌入式SQL116

5.5.1基本概念116

5.5.2基本结构118

5.5.3变量声明119

5.5.4数据库连接120

5.5.5执行SQL命令121

5.5.6嵌入式游标123

5.5.7使用动态SQL126

5.5.8异常处理127

习题5128

数据库设计技术篇

第6章数据库设计理论133

6.1数据库设计概述133

6.1.1数据库设计的任务133

6.1.2数据库设计的团队134

6.1.3数据库设计的方法134

6.2数据库设计的步骤135

6.2.1需求分析136

6.2.2概念结构设计138

6.2.3逻辑结构设计142

6.2.4物理结构设计145

6.2.5数据库实施146

6.2.6数据库运行及维护147

习题6148

第7章数据库规范化理论149

7.1关系模式设计中存在的问题149

7.2函数依赖150

7.3多值依赖152

7.4范式152

7.4.1第一范式153

7.4.2第二范式155

7.4.3第三范式156

7.4.4BC范式157

7.4.5第四范式157

7.5关系模式规范化方法158

7.6函数依赖的公理系统159

7.7关系模式的分解160

习题7162

数据库安全篇

第8章数据库的安全性策略165

8.1数据库安全控制概述165

8.2数据库安全控制方法166

8.2.1用户标识和鉴定167

8.2.2存取控制167

8.2.3审计169

8.2.4数据加密170

8.3事务171

8.3.1事务的概念171

8.3.2事务的特性172

8.3.3定义事务172

8.4数据库的恢复技术173

8.4.1数据备份174

8.4.2故障177

8.4.3数据恢复策略178

8.5并发控制182

8.5.1并发异常问题182

8.5.2基于封锁的调度184

8.5.3基于时间戳的调度189

8.5.4基于有效性检验的调度方法190

8.5.5多版本并发控制机制191

习题8191

应用篇

第9章典型关系数据库管理系统SQL Server 2016介绍195

9.1SQL Server 2016系统概述195

9.2SQL Server 2016体系结构199

9.3SQL Server 2016的安装201

9.3.1安装环境要求201

9.3.2安装过程203

9.4SQL Server 2016配置220

9.4.1SQL Server 2016数据库服务器服务的启动和停止221

9.4.2注册服务器224

9.4.3创建服务器组224

9.5SQL Server 2016管理平台226

习题9228

第10章SQL Server 2016的SQL编程技术229

10.1创建数据库229

10.1.1利用对象资源管理器创建数据库229

10.1.2利用TSQL语句创建数据库231

10.2数据定义技术233

10.3数据更新技术244

10.4数据查询技术246

10.5存储过程247

10.6触发器249

10.7应用程序调用数据库的方法251

10.7.1ODBC技术251

10.7.2ADO技术258

10.7.3JDBC技术263

习题10267

第11章SQL Server 2016的数据库保护技术268

11.1数据安全性技术268

11.1.1概述268

11.1.2身份验证模式268

11.1.3登录账号管理269

11.1.4角色管理275

11.1.5用户管理279

11.1.6权限控制281

11.2数据库的备份和恢复283

11.2.1数据库的备份283

11.2.2数据库的恢复286

习题11291

发展篇

第12章数据库技术的新进展295

12.1数据库技术发展概述295

12.1.1影响数据库技术发展的重要因素295

12.1.2数据库新技术的发展296

12.2数据库技术与其他相关技术相结合300

12.2.1面向对象数据库系统300

12.2.2分布式数据库系统304

12.2.3云数据库系统308

12.3面向应用领域的数据库新技术310

12.3.1数据仓库与数据挖掘310

12.3.2空间数据库314

12.3.3机器学习321

12.3.4大数据分析技术323

12.3.5物联网技术326

12.3.6云计算328

习题12331

附录A系统内置函数332

附录BSQL Server中常用的全局变量337

参考文献339

前沿

前言21世纪是信息的世纪,数据库技术作为一种信息管理技术,几乎应用到了所有的信息技术领域。越来越多的学校将数据库课程设置为必修课程,教育部考试中心每年举行的全国计算机等级考试中都专门设置了“数据库工程师”的等级考试,由此可见数据库技术的重要地位。本书按照普通高等学校数据库教学大纲的要求,详细地介绍数据库系统结构、数据模型、关系数据库设计理论和规范化理论等数据库基本原理。同时,在应用环节,介绍了微软公司的最新数据库管理系统Microsoft SQL Server 2016。详细介绍了该软件的安装和配置,如何建立表、索引和视图,如何使用存储过程和触发器,以及数据库的安全保护问题。最后,结合大数据技术,介绍了数据库的最新发展技术和发展趋势。本书以培养综合型人才为目标,摒弃传统教材知识点设置按部就班、理论讲解枯燥无味的弊端,全书用一个现实生活中的案例贯穿,使学生在解决实际问题的过程中学到数据库的原理和技术。通过本书的学习,学生可以了解数据库的发展简史,明确数据库在各行各业信息化管理工作中的重要地位,掌握数据库的基本原理,熟悉利用数据库进行数据管理的基本技术,具备从事信息管理的基本素质,从而能够从事IT行业相关岗位的管理工作。本书建议讲授时数为32学时,实验时数为16学时。具体每章教学时间分配见下表。章节内容讲授学时实验学时第1章数据库系统概述20第2章数据模型40第3章关系数据库40第4章关系数据库标准语言SQL62第5章SQL语言高级功能42第6章数据库设计理论40第7章数据库规范化理论20第8章数据库的安全性策略40第9章典型关系数据库管理系统SQL Server 2016介绍02续表章节内容讲授学时实验学时第10章SQL Server 2016的SQL编程技术08第11章SQL Server 2016的数据库保护技术02第12章数据库技术的新进展20合计3216其中,带“”号的5.5节、7.3节、7.4.5节和7.6节可不作讲授内容,供有余力的同学自学。本书的第1~11章由吴秀丽编写,第12章由杜彦华编写。全书由吴秀丽统稿。本书适合于普通高等院校“数据库技术与应用”课程的通用教材,也适合于从事信息管理和计算机软件开发人员参考,同时,本书也可以用作教育部考试中心计算机等级考试的参考书。在本书的编写过程中参考了大量的相关文献资料,在此谨向相关专家学者表示诚挚的谢意。由于编者水平有限,加之时间仓促,虽然对全书进行了反复修改完善,但仍难免有不妥之处,恳请读者批评指正。
作者2018年3月数据库技术与应用SQL Server 2016 ;

免费在线读

第3章关系数据库关系数据库是目前主流的数据库类型,其基础是关系数据模型。相对于层次数据模型和网状数据模型,关系数据模型是发展相对较晚的。尽管如此,关系数据模型技术也已经发展得非常完善,成为数据库领域中占据主导地位的一种数据模型。关系数据模型作为数据模型的一种,也由3部分组成: 关系数据结构、关系数据操作和关系数据的完整性约束条件。下面分别介绍。3.1关系数据结构在关系数据模型中,无论是实体还是实体间的各种联系均用关系(Relation)来表示。在用户看来,关系数据模型中数据的逻辑结构是一张规范化的二维表。在日常生活中,经常看到二维表,例如班级点名册、成绩单等。表31是一个学生的点名册,就是一个规范化的二维表。表31平时成绩单序号学号姓名性别1234567891101张三男2102李四女从表中可以看出,作为一个规范化的二维表,应该具有如下特点。(1) 表有表名。(2) 表由两部分组成: 表头和数据行。(3) 表有若干列,每列都有列名。(4) 同一列的取值来自同一个定义域。(5) 每一行的数据代表一个具体的实体。(6) 表中不允许再有表,即每一列都不能再细分为更多的子项。比如表32就不是一个规范化的二维表,因为其中存在“表中有表”的现象。第3章关系数据库数据库技术与应用SQL Server 2016表32学生成绩统计表序号学号姓名成绩平时试卷总分备注140640001刘平204767 240640002于涛186078对表中的数据可以进行添加、修改、删除、查询等操作。1. 基本概念及术语相应于二维表的这些特点,关系数据模型提出了一些专用的概念及术语。关系模式: 在关系数据库中,关系模式是关系中信息内容结构的描述。作为一个关系模式,必须描述关系由哪些属性组成,这些属性来自哪些域,以及属性和域之间的映像关系。具体而言,关系模式应包括关系名、属性名、每个属性列的取值集合、数据完整性约束条件以及各属性间固有的数据依赖关系等。关系模式对关系的描述,一般表示为:关系名(属性集合,属性取值域,属性列到域的映射,完整性约束条件,属性集间的依赖关系)通常,为了简化起见,不涉及完整性约束及依赖关系,关系模式可以表述为:关系名(属性1,属性2,…,属性n)例如,“商品”关系模式可以表示为:商品(商品编码,商品名称,单价,生产批次)关系: 就是一张规范化的二维表。一个规范化的二维表有表名、表头和数据,相应地,一个关系由关系名、关系模式和关系实例3部分组成。元组: 关系中的一行即为一个元组,有时也称为一个记录。属性:  ;关系中的一列即为一个属性,如“商品”关系有4个属性,即商品编码、商品名称、单价、生产批次。域:  ;属性的取值范围称为该属性的域。候选码: 可以唯一确定一个元组的最小属性集合称为候选码(Candidate Key),或简称为码(Key)。例如表31中的学号,按照学生学号的编排规则,每个学生的学号都不相同,所以它可以唯一确定一个学生,也就成为一个关系的码。超码: 这里要注意的是,被称为码的属性集合必须是最小的,例如{学号,姓名}这个属性集合就不能称为码,因为存在比它更小的子集{学号}可以唯一地确定一个元组。通常将这种包含码在内的属性集合称为超码(Super Key)。主码: 一个关系至少有一个候选码,也可能有多个候选码,一般从候选码中选一个作为主码(Primary Key),其他候选码则称为候补码(Alternate Key)。主码的值可以用来识别和区分元组,它应该是唯一的,即每个元组的主码的值是不能相同的。在最简单的情况下,主码只包含一个属性。在最极端的情况下,码可以包含表中的所有属性,称为全码(All Key)。主属性: 包含在任何一个候选码中的属性称为主属性(Prime Attribute)。相反,不包含在任何候选码中的属性称为非主属性(NonPrime Attribute)。分量: 元组中的一个属性值。2. 关系的性质关系是一个规范化的二维表,这里强调“规范化”,说明作为一个关系必须受到一些约束限制,称其为关系的性质。概括来讲,这些性质分为6个方面:(1) 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。(2) 不同的列可出自同一个域,但要给予不同的属性名。(3) 列的次序无所谓,即列的次序可以任意交换。(4) 任意两个元组不能完全相同。(5) 行的顺序无所谓,即行的次序可以任意交换。(6) 分量必须取原子值,即每一个分量必须是不可分的数据项。3. 关系数据库在一个给定的应用领域中,所有实体及实体之间联系的集合构成一个关系数据库。关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一个时刻对应的关系实例的集合,通常称为关系数据库实例。3.2关系数据操作关系数据操作采用集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式。相应地,非关系数据模型的数据操作方式则称为一次一记录的方式。对关系数据可以进行更新(插入、修改和删除)和查询等操作。无论是对关系数据的更新操作还是查询操作,其实都可以归结为对关系数据的运算。即以一个或多个关系数据为运算对象,对它们进行某些运算形成一个新关系数据,提供用户所需要的数据。关系数据运算按其表达查询方式的不同可以分为两大类: 关系代数和关系演算。关系代数包括一系列操作符,描述如何一步步地得到查询结果;而关系演算以非过程的方式描述查询要求,并不描述如何得到结果。本节重点介绍关系代数。另外还有一种介于关系代数和关系演算之间的语言,即结构化查询语言(Structured Query Language,SQL),本书将在第4章专门介绍SQL。关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。在关系代数中,用户对关系数据的所有查询操作都是通过关系代数表达式描述的,一个查询就是一个关系代数表达式。任何一个关系代数表达式都由关系运算符和关系组成。任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符、运算结果是运算的3大要素。在关系代数中,运算对象和运算结果都是关系,运算符包括4类: 集合运算符、专门的关系运算符、比较运算符和逻辑运算符,见表33。其中,比较运算符和逻辑运算符是辅助运算符,集合运算符和专门的关系运算符是主要运算符,据此,可以把关系运算分为传统的关系运算和专门的关系运算。表33关系代数的运算符运算符分类运算符符号含义运算符分类运算符符号含义集合运算符专门的关系运算符∪并-差∩交×笛卡儿积σ选择π投影连接÷除比较运算符逻辑运算符>大于≥大于或等于<小于≤小于或等于=等于<;>;不等于∧与∨或┐非3.2.1传统的关系运算传统的关系运算指集合运算,是由两个关系产生一个新关系,包括并、交、差和广义笛卡儿积4种运算,它们都是二目运算。在进行关系的并、交、差运算时,参与运算的关系R和关系S必须具有相容的关系模式,即R和S包含有相同的属性个数,并且对应的属性的域也相同,此时称关系R和关系S具有并兼容特性。并兼容特性是两个关系进行并、交、差运算的前提条件。由于并兼容特性并没有要求关系R和关系S的对应属性名必须相同,所以一般规定,结果关系具有与R相同的关系模式。1. 并运算关系R和S的关系模式符合并兼容特性。关系R和S的并运算记作R∪S,结果得到一个新关系。新关系的关系模式和R的相图31R∪S同,实例是两个关系的关系实例的并集,即新关系实例由属于R或属于S的元组(或者同时属于R和S的元组)组成。并运算可以完成元组插入操作,可以用如图31所示的示意图表示并运算的原理。2. 交运算关系R和S的关系模式符合并兼容特性。关系R和S的交记作R∩S,交运算的结果得到一个新关系。新关系的关系模式和R的相同,实例是两个关系的关系实例的交集,即新关系实例由属于R且同时属于S的元组组成。可以用如图32所示的示意图表示交运算的原理。3. 差运算关系R和S的关系模式符合并兼容特性。关系R和S的差记作R-S,差运算的结果得到一个新关系。新关系的关系模式和R相同,但实例是两个关系的关系实例的差,即新关系实例由属于R但不属于S的元组组成。差运算可以完成对元组的删除操作,可以用如图33所示的示意图表示差运算原理。图32R∩S图33R-S

4. 广义笛卡儿积两个分别具有n个属性和m个属性的关系R和S的广义笛卡儿积是一个具有(n m)个属性的关系,记作R×S。新关系的关系模式由关系R的所有属性(次序不变)和关系S的所有属性(次序不变)连接而成。新关系实例中的元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡儿积有k1×k2个元组。广义笛卡儿积运算可用于两张表的合并。【例31】已知两个关系R和S,请分别求R∪S,R∩S,R-S,R×S。RABCa1b1c1a1b2c2a2b2c1SABCa1b2c2a1b3c2a2b2c1【解答】R∪SABCa1b1c1a1b2c2a2b2c1a1b3c2R∩SABCa1b2c2a2b2c1R-SABCa1b1c1R×SABCABCa1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c13.2.2专门的关系运算对于关系数据的查询操作,有些无法用传统的关系运算完成,需要引入一些新的运算方法,完成诸如属性指定、元组选择、关系合并等操作,这些运算称为专门的关系运算。为了方便介绍专门的关系运算,假设某超市的数据库系统,包括3个关系: 商品关系G、供应商关系S和供应关系SG,以下的所有举例都基于这个数据库系统。GGNOGTYPEGNAMEPRICE101运动类羽毛球拍120102运动类乒乓球拍80201食品类纯牛奶45SSNOSNAMESADDRESSA1五环体育广州A2耐克上海B1三元北京SGGNOSNOCOSTGNOSNOCOST101A1100102A265102A160201B1401. 选择运算选择运算是一元关系运算,它作用在一个关系上,运算前和运算后均只是一个关系。根据选择条件,从关系中筛选出符合条件的若干元组,选择操作的结果得到一个新关系。这两个关系具有相同的关系模式。它的表示方法是:σ选择条件(关系)其中,σ是希腊字母,其下标“选择条件”是个条件表达式,小括号里的关系是操作对象。条件表达式由以下规则组成。(1) 基本逻辑条件: αθβ形式,其中α、β是属性名或常量,但α、β不能同为常量。θ是比较运算符,可以是<;、≤、>;、≥、=或≠。(2) 复合逻辑条件: 由若干基本逻辑条件经过逻辑与“∧”、逻辑或“∨”和逻辑非“┐”构成。【例32】基于商品关系G,查询价格高于100的商品。【解答】该查询可以用如下的表达式来表示:σPRICE>;100(G)查询的结果是:GNOGTYPEGNAMEPRICE101运动类羽毛球拍120【例33】基于商品关系G,查询运动类价格低于100的商品。【解答】该查询可以用如下的表达式来表示:σGTYPE=运动类∧PRICE<;100(G)查询的结果是:GNOGTYPEGNAMEPRICE102运动类乒乓球拍802. 投影运算投影操作从一个关系中抽取其中某些列的值,作为一个新关系输出。新关系的关系模式是下标中的属性列表,元组则是原关系中每一个元组在投影的属性列表上的取值。它的表示方法是:π属性表(关系)其中,π表示投影操作,其下标位置的属性表表示要抽取的属性列,小括号内跟上操作对象。注意: 如果投影属性中不包含任一个候选码,则抽取结果中很可能包含重复的元组,应把重复的元组去掉。【例34】在商品关系G里查询超市里经营的商品种类。【解答】该查询可以用如下的表达式来表示:πGTYPE(G)查询的结果是:GTYPE运动类食品类3. 连接运算 ;用笛卡儿积运算建立两个关系的连接,并不是一个很好的方法,因为笛卡儿积的结果是一个比较庞大的关系。在实际中往往需要的是笛卡儿积中符合条件的一些元组,于是引出了连接运算。虽然连接运算可以看作是对两个关系的广义笛卡儿积作选择和投影运算,但连接运算远比单纯的笛卡儿积使用更频繁。在关系代数中,连接运算是最有用的操作之一。连接运算是从两个关系的广义笛卡儿积中选取属性之间满足一定条件的元组,记作:RSαθβ其中,连接运算符用表示,αθβ是连接条件,θ是比较运算符(>;、≥、<;、≤、=或≠),α、β可以是属性名、常量或简单函数,属性名可以用它在表中的序号代替(如1,2,…)。根据连接条件,可将连接分为很多种,其中用得最多的是等值连接和自然连接 。1) 等值连接 ;在连接运算中,当条件αθβ中的θ为“=”时的连接运算称为等值连接。它是从关系R与S的广义笛卡儿积中选取α、β属性值相等的那些元组。2) 自然连接等值连接的结果包含两个关系的所有属性,因为有些属性的取值完全相同,势必会造成数据的冗余。因此,如果连接条件中等号两边的属性名相同,可省略连接条件,直接写作: RS,结果关系中也去掉重复的属性列,这种特殊的等值连接称为自然连接。实际上,自然连接是用得最普遍的一种运算。【例35】查询超市里现在经营的商品的供应商信息(单位名称和地址等)。【解答】包含超市里商品供应信息的是关系SG,该关系里只有供应商的编号,而供应商的详细信息在关系S中,因此该查询需要将关系SG和关系S进行连接,可以用如下表达式来表示:SGS连接的结果为:GNOSNOCOSTSNAMESADDRESS101A1100五环体育广州102A160五环体育广州102A265耐克上海201B140三元北京4. 除运算除运算实现那些包含“所有的……”条件的查询,用符号“÷”表示。对于表达式R÷S,要求R的属性集包含S的属性集。设R与S的属性集分别为X和Y,则除运算的结果将包含属性集Z=X-Y,即那些在R中但不在S中的属性。并且对于运算结果中的每个元组t,在R中对应的元组集(即R中与t在属性集Z上都相等的所有元组)在属性集Y上的投影图34除运算结果包含集合S。除运算可以用图34表示。除运算的计算步骤如下:(1) T=πZ(R) ;(2) W=(T×S)-R(3) V=πZ (W)(4) R ÷ S=T-V【例36】查询包含“耐克”供应商供应的所有商品的供应商编号。【解答】这是一种求“包含”关系的特殊查询,可以采用除运算。供应信息在关系SG中,可以先求出“耐克”供应商供应的商品,用A表示结果关系,即:(1) A=πGNO(σsname=耐克(SGS))查询的结果是:GNO102(2) 根据除运算的思想,需要求出供应关系SG中包含了关系A的供应商编号,可以直接用除表示,结果用B表示,即:B=SG÷A查询的过程可以分4步求解:① T=πSNO,COST(SG) ;得到:SNOCOSTA1100A160A265B140② W=(T×A)-SG得到:SNOCOSTGNOA1100102B140102③ V=πSNO,COST (W)得到:SNOCOSTA1100B140④ SG÷A=T-V得到:SNOCOSTA160A265即包含了“耐克”供应商供应的所有商品的供应商编号有A1和A2。3.3关系数据的完整性约束为了使数据能够符合现实世界的要求,保证数据的正确性、有效性和相容性,关系数据模型也有一定的约束。关系数据模型的约束指的是完整性约束,是对关系中数据及其联系应具有的制约和依存规则。关系数据模型提供了丰富的完整性控制机制,允许定义3类完整性: 实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系数据模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系数据库管理系统自动支持。1. 实体完整性实体完整性约束(Entity Integrity)规则: 若属性A是基本关系R的主属性,则任何一个元组在属性A上不能取空值(Null)。如果主码是一个属性组,则该属性组中的所有主属性都不能取空值,而不仅是主码整体不能取空值。所谓空值,是指“不知道”或“不存在”的值。由于主属性是用来标识实体的基本属性,若主属性取空值,就说明这个实体不可标识,这与现实世界的要求是背离的。例如,在3.2.2节中的商品关系中,GNO是主码,则任何一个元组在属性GNO上不能取空值。值得注意的是,实体完整性规则规定的是所有主属性都不能取空值。例如,供应关系(GNO,SNO,COST),属性组(GNO,SNO)是主码,则任何一个元组无论在属性GNO还是在属性SNO上都不能取空值。这与供应关系本身反映的现实情况是相符的。一个供应商(用主属性SNO标识)可以供应多种商品(用主属性GNO标识),一种商品也可以由多家供应商供应。因此,单靠供应商编号SNO或商品编号GNO都不能唯一地确定一个元组,只有供应商编号SNO和商品编号GNO共同作用,才能唯一地确定一个元组,因此,该关系的主码是属性组(GNO,SNO),GNO和SNO都是主属性。按照实体完整性规则,GNO和SNO都不能取空值。2. 参照完整性参照完整性约束(Referential Integrity)又称外码约束,约束的是两个关系之间属性的取值。现实世界的实体之间互相联系,而且也用关系来描述,这样就存在着关系与关系间的引用。当一个关系被修改的时候,为了保持数据的一致性,也必须对另一个关系进行检查和修改。还以超市数据库为例,其中两个关系:商品(商品编号,商品名称,价格)供应(商品编号,供应商编号,成本)显然,“供应”关系中的“商品编号”值必须是确实存在的商品的编号,即出现在“供应”关系中的“商品编号”必须同时出现在“商品”关系中,也就是说,“供应”关系中的某个属性的取值需要参照“商品”关系的属性取值。反过来,出现在“商品”关系中的每一个商品却不一定要出现在“供应”关系中,因为有可能某种商品暂时没有供应商供货,处于缺货状态。二者的关系如图35所示。像这种属性不能随意取值,只能引用另外一个关系中的某个属性值,称为这两个关系存在参照关系。图35参照关系对应图在关系数据模型中用外码表示上述参照关系。所谓外码,是指如果基本关系R中某属性集F是基本关系S的主码,则对基本关系R而言,F叫作外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。那么,供应关系中的属性“商品编号”被称为外码,它需要参照商品关系的主码,供应商关系为参照关系,商品关系为被参照关系。参照完整性约束规则: 基本关系R的任何一个元组在外码F上的取值要么是空值,要么是被参照关系S中一个元组的主码值。参照完整性要保证不参照不存在的实体。需要指出的是,不仅两个或两个以上的关系间可以存在参照关系,同一关系内部属性间也可能存在参照关系。例如,在关系学生(学号,姓名,性别,系别,年龄,班长)中,属性“学号”是主码,属性“班长”表示该学生所在班级的班长的学号,它引用了本关系中的属性“学号”,因此属性“班长”是外码,它可以取两类值:(1) 空值,表示该学生所在班级尚未选出班长;(2) 非空值,这时该值必须是本关系中某个元组的学号值。该例中学生S关系既是参照关系也是被参照关系。显然,参照关系R的外码和被参照关系S的主码必须定义在同一个(或一组)域上,但是,外码并不一定要与相应的主码同名。不过,在实际应用中,为了便于识别,当外码和相应的主码属于不同的关系时,往往给它们取相同的名字。3. 用户定义的完整性(userdefined integrity)任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的应用系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体应用环境的约束条件,又称域完整性或语义完整性。它反映某一具体应用所涉及的数据必须满足的语义要求,即限定关系中的某个属性的取值类型和取值范围。例如,属性“性别”只能取“男”或“女”值,取其他值都无意义。再如,管理一些个人信息的关系中,限定属性“身份证号”不能取空值。关系数据模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。总之,关系数据模型与非关系数据模型不同,它有较强的数学理论根据;关系数据结构简单、清晰、易懂易用;关系数据模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作以及数据库建立和开发的工作。不足的是,查询效率往往不如非关系数据模型,因此,为了提高性能,必须对用户的查询表达式进行优化。习题31. 关系数据模型的三要素是什么?2. 关系的六大性质是什么?3. 关系代数有哪些?4. 关系的完整性约束有哪几种?5. 试述关系的实体完整性规则和参照完整性规则。6. 设有关系R和S,如图36所示。图36关系R和S计算R∪S,R∩S,R-S,R×S,RS,π1,2(R),σR.A=S.A(R×S)。7. 某关系数据库中存在下列3个关系,如表34~表36所示。请用关系代数完成以下题目。表34studentsnosnamessexsage2008001张三男202008002李四女202008003王五女192008004钱六男212008005刘七男20表35coursecnocnameccredit1001高等数学51002大学英语41003法律31004体育3表36studysnocnogradesnocnograde2008001100180200800210019020080011002852008003100395200800110037820080041001702008001100470(1) 检索年龄小于20的学生信息。(2) 检索选修了高等数学的学生的学号。(3) 检索选修了全部课程的学生的姓名。(4) 检索既选修了法律又选修了体育课程的学生的姓名。(5) 检索至少选修了一门课程的学生的姓名。第4章关系数据库标准语言SQL关系代数提供关系数据操作的简洁表达方式,但它只适合熟悉数据库的专业人员使用。对于数据库系统的普通用户来讲,需要一种简单、易学、友好的方法,SQL就是最具代表性的一种语言。它还是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询,它还是一个通用的、功能极强的关系数据库语言。 ;4.1SQL概述〖1〗4.1.1SQL标准的由来SQL(Structured Query Language)是美国国家标准协会(American National Standard Institute,ANSI)和国际标准化组织指定的标准语言,被几乎所有关系数据库管理系统产品所采用。SQL语言的前身是1974年由Boyce和Chamberlin提出的SEQUEL,并在IBM公司研制的关系数据库管理原型系统System R上实现,后来改名为SQL,并用在其产品SQL/DS和DB2中。由于SQL简单易学、功能丰富,深受用户及计算机工业界欢迎,被众多数据库厂商所采用,包括Oracle公司的Oracle数据库管理系统(1979年)、Relational Technology公司的INGRES(1981年)、Britton公司的IDM(1982年)、Data General Corporation公司的DG/SQL(1984年)和Sybase公司的SYBASE(1986年)等。经各公司的不断修改、扩充和完善,SQL最终得到业界的认可,发展成为关系数据库的标准语言。1986年10月,ANSI的数据库委员会X3H2批准了SQL作为关系数据库语言的美国标准,1987年,ISO也通过了这一标准。至今,SQL共形成了3个版本,分别为SQL86、SQL92和SQL99。SQL86是1986年ANSI推出的SQL标准的最早版本。1989年,SQL86版本在参照完整性方面进行了少量补充,形成了SQL89标准,SQL92(亦称SQL2)是对SQL89标准进行了较大的更新后于1992年推出的。为了进一步增强SQL的功能,1999年SQL99(亦称SQL3)标准面世,引入了递归、触发器和面向对象等概念和机制。目前大多数数据库管理系统均支持SQL92(SQL2),少部分支持SQL99(SQL3)。自SQL成为国际标准语言以后,各个数据库厂家纷纷推出各自的SQL软件或与SQL的接口软件。这就使不同数据库系统之间的互操作有了共同的基础。SQL成为国际标准,对数据库以外的领域也产生了很大的影响,有不少软件产品将SQL的数据查询功能与图形功能、软件工程工具、软件开发工具和人工智能程序结合起来。总而言之,SQL已成为数据库领域中的主流语言之一。第4章关系数据库标准语言SQL数据库技术与应用SQL Server 20164.1.2SQL的组成无论是SQL89、SQL92还是SQL99,SQL语言都具有4个基本功能: 数据定义功能、数据操纵功能、数据控制功能和嵌入式SQL语言功能。1. 数据定义功能数据定义功能采用数据定义语言DDL实现,用来定义和修改数据库的三级模式结构,即外模式、模式和内模式结构。在SQL中,外模式又叫视图,模式又叫数据库,内模式由系统根据模式自动实现,至多由用户定义相应的索引文件,其余无须用户过问。在SQL中,每个关系又叫基本表或简称表,每个关系中的属性又叫作字段或列,元组又叫作行。一个数据库由若干个基本表组成。每个视图也是一个关系,由基本表产生,有自己独立的结构定义,但没有独立的数据存在,在内存中不占据存储空间,所以又称为虚表。一个基本表可以跨一个或多个存储文件,一个存储文件也可以存放一个或多个基本表,一个表可以带若干个索引,索引也存放在存储文件中。每个存储文件与外部存储器上一个物理文件对应。存储文件的逻辑结构组成了关系数据库的内模式。用户可以用SQL语句对视图和基本表进行查询等操作,在用户看来,视图和基本表都是一样的,都是关系。SQL用户可以是应用程序,也可以是终端用户。SQL与数据库体系结构的对应关系如图41所示。图41SQL与数据库体系结构的对应关系2. 数据操纵功能数据操纵功能采用数据操纵语言DML实现,用来实现数据库中基本表和视图的数据插入、修改、删除和查询,即对关系实例的操作。SQL具有很强的数据查询功能,查询是SQL的灵魂。3. 数据控制功能数据控制功能采用数据控制语言DCL实现,用来控制用户的访问权限,从而保证数据库中数据的安全性。哪些用户能够使用哪些数据库,使用数据库中的哪些表和视图,具有哪些操作功能等都是访问权限要规定的内容。4. 嵌入式SQL语言功能通过设定一系列规则,使得SQL语言能嵌入到某种通用编程语言,如C 、Java、Pascal等中。SQL的核心部分相当于关系代数,但又具有关系代数所没有的许多特点,如聚集、数据库更新等。4.1.3SQL的特点SQL是一种综合的、通用的、功能极强,同时又简单易学的语言,可以独立完成数据管理的核心操作。这也是SQL能够为用户和业界所接受,并成为国际标准的主要原因。具体来说,SQL具有下列主要特点。1. 综合统一数据库系统的主要功能是通过数据库支持的数据语言来实现的。非关系数据模型(层次数据模型、网状数据模型等)的数据语言一般都分为数据操纵语言(DML)和数据定义语言(DDL),这些语言各有各的语法。当用户数据库投入运行后,如果需要修改模式,必须停止现有数据库的运行,备份数据,修改模式并编译后再重装数据库,十分麻烦。SQL则集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,为数据库应用系统的开发提供了良好的环境。用户在数据库系统投入运行后,还可根据需要随时、逐步地修改模式,且并不影响数据库的运行,从而使系统具有良好的可扩展性。此外,在关系数据模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一,查询、插入、删除、更新等操作都只需一种操作符,从而克服了非关系数据结构由于信息表示方式的多样性而带来的操作复杂性。2. 高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,属于第三代语言(The 3rd Generation Language,3GL),例如C语言,在执行一项工作时必须描述“怎么做”,要求数据库使用人员必须了解数据库的物理存储结构。而SQL作为第四代语言(The 4th Generation Language,4GL)的一种,是非过程化的,使用它进行数据库操作时,只需提出“做什么”,而无须指明“怎么做”。“怎么做”是由系统自动完成的,用户是在数据库的逻辑结构层次上使用数据库,无须了解数据库的物理结构。这不但极大地减轻了用户的负担,而且有利于提高数据的独立性。3. 面向集合的操作方式非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。例如查询所有平均成绩在90分以上的学生姓名,用户必须一条一条地把满足条件的学生记录找出来(通常要说明具体处理过程,即按照哪条路径、如何循环等)。而SQL采用面向集合的操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。4. 同一种语法结构,两种使用方式SQL既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接输入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言,如C语言程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL的语法结构基本上是一致的,为用户提供了极大的灵活性与方便性。5. 语言简洁,易学易用SQL的设计非常巧妙,用十分简洁的语言实现了极强的功能。其核心功能只用了9个动词来实现,如表41所示。另外,SQL接近英语自然语言,易学易懂。表41SQL的核心动词SQL功能动词SQL功能动词数据定义Create,Drop,Alter数据查询Select数据操纵Insert,Update,Delete数据控制Grant,Revoke为了突出基本概念和语句功能,本章将重点介绍SQL的基本语法内容,略去了许多语法细节问题。而各个商用DBMS产品在实现标准SQL语言时也各有差别,一般都做了一定程度的扩充。因此,读者在具体使用某个DBMS产品时,应仔细参阅系统提供的有关手册。在开始介绍SQL语法之前,需要注意以下几点。(1) SQL 不区分大小写。一般用大写字母代表关键字,小写字母或汉字是由用户决定的内容。(2) 尖括号<; >;中的内容是必需的。(3) 大括号{ }中的内容至少选择一个。当括号中内容由“|”分隔时,则只能选择其中的一个;当括号中的内容由“,”分隔时,可选择其中的一个或多个。(4) 中括号[ ]中的内容是可选项。当括号中的内容由“|”分隔时,则只能选择其中的一个,或一个也不选;当括号中的内容由“,”分隔时,可选择其中的一个或多个,或一个也不选。(5) 省略号…意味着可以重复最后一个成分任意多次。4.2数据定义语言关系数据库是由一系列的关系组成的,因此,建立关系数据库的第一步工作就是建立表,描述每一个表的结构等信息。表以一定的逻辑结构和物理结构存于数据库中。SQL的数据定义语言用于创建、修改和删除数据库中的表(Table)、视图(View)和索引(Index)等。本节主要讲述关于表和索引的定义问题,视图的定义在4.5节专门介绍。4.2.1基本表的定义关系数据库中的表和常见的二维表的结构类似,表的定义包括表名和表头的定义,其中表头要描述表中各列的特征,包括列名、数据类型、长度以及相应的约束条件。在正式介绍创建表的命令之前,首先介绍定义表时用到的数据类型的定义方法。1. 数据类型SQL中常用的数据类型见表42。表42SQL中常用的数据类型数据类型名含义char(n)定长字符型,其长度为n,即占n个字节的字符串,用来保存长度(ASCII码字符的个数)小于或等于n的字符串。注意: 对于每个汉字区位码字符,其长度为2,相当于两个ASCII码字符varchar(n)长度可变的字符串型,n是最大长度,由用户指定int(integer)整数型,一般是32位字长smallint短整数型,表示的整数范围比int小,一般占16位字长float浮点型,又称实数型。该类型占4个或8个字节,能够表示相当大范围内的任何浮点数或实数,包括整数和小数decimal(m,n)或numeric(m,n)定点数,其精度由用户指定,其中m代表不包含括号位和小数点在内的数字的总位数,n则代表小数点右边的数字位数date日期型,包含年、月、日3个部分的数据time时间型,包含小时、分、秒3个部分的数据timestamp时间戳,格式为YYYYMMDD HH:MM:SS[.nnnnnn],其中nnnnnn是微秒boolean布尔型,其值为TRUE(真)、FALSE(假)除了使用系统本身支持的数据类型之外,SQL还允许用户自己定义新的数据类型,这是通过定义域的命令完成的。定义域的语法格式为:CREATE DOMAIN <;域名>;[AS]<;数据类型>;[DEFAULT default option][CHECK (search condition)];其中,<;域名>;表示要创建的新域名。<;数据类型>;表示创建的新域所属的基本数据类型。DEFAULT 子句和CHECK子句是可选项,DEFAULT子句表示新定义的域的默认值,CHECK子句是一种约束子句,用于规定所定义数据类型的取值范围。【例41】定义一个专门用来标示性别的新数据类型。大家知道性别只能有两种取值: “男”或“女”,假设默认值是“男”,域名取为GENDERTYPE,那么可以这样定义这个域:CREATE DOMAIN GENDERTYPE AS char(10)DEFAULT 男CHECK (value in (男,女));一旦定义了这个域,就可以把GENDERTYPE当作一个新的数据类型来使用了,当创建表时,某一列的数据类型设为GENDERTYPE后,就限定了往表中插入数据时,取值范围是{男,女}。当不需要一个域时,可以采用删除域命令删除域的定义:DROP DOMAIN<;域名>;;【例42】删除性别域GENDERTYPE。DROP DOMAIN GENDERTYPE;2. 表的创建在SQL中创建基本表的语法如下:CREATE TABLE <;表名>;(<;列名>;<;数据类型>;[列级完整性约束条件][,<;列名>;<;数据类型>;[列级完整性约束条件]]…[,<;表级完整性约束条件>;]);格式说明如下:表名: 用户自己定义要创建的表名。列名: 用户自己定义要创建的表中的列名,可以有多个。数据类型: 表中各列的取值范围,可以采用SQL的标准数据类型,也可以选用用户自己定义的数据类型。列级(或表级)完整性约束条件: 表示该列(或表)内容需要满足的约束,通常有5种。(1) 非空约束: 通过设置某列为NOT NULL,表示该列的内容不能为空,空缺时表示可以为空。(2) 唯一性约束: 通过设置某列为UNIQUE,表示该列的内容不能包含重复值(但允许有多个值为NULL)。由于主码具有唯一性,因此对主码不能再设定唯一性约束。(3) 主码约束: 表示该列为主码,用PRIMARY KEY标明。它同时蕴含了NOT NULL和UNIQUE的要求。如果主码是由多个属性列组成的,则必须采用表级完整性约束条件的方式定义,即用PRIMARY KEY(主码列列表)方式定义,其中主码列列表用“,”隔开;只涉及单个属性列时,既可以定义在列级也可以定义在表级。(4) 默认约束: 如果某列后面跟上DEFAULT<;默认值>;,则定义了该列的默认值。如果在插入时没有指定该列的值,则DBMS自动将其值设为指定的默认值。(5) 外码约束: 表示该列是外码,用FOREIGN KEY表示。可以由两种方法定义外码。① 用列级约束定义的方式,即:如果外码只有一个属性,则可以在它的属性名和类型名后面直接用以下形式表示:FOREIGN KEY REFERENCES<;表名>; (<;属性>;);其中,<;表名>;是被参照的表的名称;<;属性>;是被参照表的相关属性名称。若被参照的属性名称与参照的属性名称相同,则可以省去<;属性>;。② 用表级约束定义的方式,即在定义完所有属性以后,增加一个或几个外码的说明,其格式为:FOREIGN KEY <;属性1>; REFERENCES<;表名>; (<;属性2>;)其中,<;属性1>;是外码;<;表名>;是被参照的表的名称;<;属性2>;是被参照表的相关属性名称。当采用列级定义方式时,可以省略FOREIGN KEY,直接在列名数据类型后跟上REFERENCES <;表名>; (<;属性2>;)即可。无论是哪种方法,后面都还可以加上:ON DELETE(或update)RESTRICT/CASCADE/SET NULL表示当删除(或更新)被参照关系的主码值时,为了保证参照完整性,可以按以下3种方式处理:  ;RESTRICT(限制)方式。凡是被主关系引用的外码,一律不得删除或更新。  ;CASCADE(级联)。若在被参照关系中删除(或更新)了某一主码值,则相应地删除(或更新)引用了此主码值的参照关系中的元组。  ;SET NULL。当被引用属性被删除或更新时,将参照关系中对应属性值置为空值。当然,该属性上应没有NOT NULL说明。 ;定义表的同时还可以定义与该表有关的完整性约束条件,这些完整性约束条件放在数据字典中,当用户操作表中数据时,由DBMS自动检查该操作是否违背这些完整性约束条件。【例43】用SQL语言定义一个“商品”表Goods,它由商品编号Gno、商品名称Gname、价格Price和批次Batch 4个属性组成。其中,商品名称不能为空。CREATE TABLE Goods(Gno CHAR(20) PRIMARY KEY,/ 列级完整性约束/Gname CHAR(50) NOT NULL,/ 列级完整性约束/

数据库技术与应用 SQL Server 2016 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:数据库技术与应用 SQL Server 2016