第四章 关系数据库的建立.docx
- 文档编号:9330149
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:53
- 大小:468KB
第四章 关系数据库的建立.docx
《第四章 关系数据库的建立.docx》由会员分享,可在线阅读,更多相关《第四章 关系数据库的建立.docx(53页珍藏版)》请在冰点文库上搜索。
第四章关系数据库的建立
第四章关系数据库的建立
在完成了数据库的逻辑设计与物理设计之后,设计人员就可以用DBMS提供的数据定义语言和数据操纵语言以及其他实用程序来建立数据库,即将数据库逻辑设计与物理设计的结果描述出来,成为DBMS可以接受的源代码。
其中SQL语言就是最常用的建立关系数据库的标准语言。
本章针对SQL语言,介绍关系数据库的建立过程,主要包括以下内容:
•SQL语言概述
•SQLServer2000的体系结构及其特点。
•关系型数据库的创建与管理
•基本表的创建、更新和删除
•基于SQL语句的数据查询
•视图的创建和管理
•SQL的数据控制功能
第一节SQL概述
SQL是结构化查询语言(StructuredQueryLanguage)的英文缩写,是目前使用最为广泛的关系数据库查询语言,通过它可以对数据库进行查询和更新。
SQL语言于1974年由Boyce和Chamberlin提出。
1975年~1979年IBM公司的SanJose研究实验室研制了著名的关系数据库管理系统原型SystemR系统,并在该系统上成功实现了SQL语言。
由于SQL语言具有功能丰富、使用方便、语句简洁等优点,被众多计算机公司和软件公司所采用。
经各公司的不断修改、扩充和完善,SQL语句最终发展成为关系数据库的标准语言。
1986年10月,美国国家标准局(ANSI)数据库委员会X3H2批准SQL语言作为关系数据库语言的美国标准,并制定了第一个SQL标准(简称SQL-86)。
1987年,国际化标准组织(ISO)也做出了同样的决定,并于1989年公布了SQL-89标准。
SQL-89标准给出了模式定义、数据操作和事务处理等功能。
1992年,ANSI又开发出增强功能的SQL-92标准,它在SQL-89标准的基础上增加了模式操作,动态创建和SQL语句动态执行、网络环境支持等增强特性。
在完成SQL-92标准后,ANSI和ISO即开始合作开发SQL-99(又称SQL3)标准。
SQL3的主要特点在于抽象数据类型的支持,为新一代对象关系数据库提供了标准。
当前最新的标准SQL文本是在1999年发布的SQL3标准。
本节将介绍SQL语言的特点及其主要功能,并引入一个成功的企业级数据库产品SQLServer2000。
后面章节的讲解将以这个产品作为辅助工具。
一、SQL的特点与功能
SQL语言之所以能够为用户和业界所接受并成为国际标准,是因为它是一种功能强大、通用性好同时又简单易学的语言。
SQL虽然称为结构化查询语言,但它的功能不仅仅是查询(Query),还包括操纵(Manipulation)、定义(Definition)和控制(Control)三个方面。
因此SQL语言同时集成了数据定义语言和数据操纵语言的功能。
SQL的主要特点如下:
1.高度非过程化
非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项要求,必须指定存取路径。
而用SQL进行数据操作,用户只需要指出“做什么”,而不需要指出“怎么做”,因此用户无需了解数据的存放位置和存取路径,数据的存取和整个SQL语句的操作过程由系统自动完成。
这种高度非过程化的特性大大减轻了用户负担,并且有利于提高数据独立性。
例如,若要从学生信息表中找出所有性别为'男'的学生的学号、性别和班级号,可以使用如下所示的SQL查询语句:
SELECT学号,性别,班级号
FROM学生
WHERE性别=‘男’
在上述语句中,只是提出了查询的要求,并没有给出任何涉及查询路径和查询方式的提示。
但关系数据库管理系统接受并执行上述语句,返回表4-1所示的查询结果。
从执行结果可以看出,SQL语言完成相同的工作所需的代码比其他高级语言要少。
表4-1
学号
性别
班级号
040123
男
04777
050126
男
05111
2.面向集合的操作方式
非关系数据模型采用的是面向记录的操作方式,操作对象往往是一条记录,通常要说明具体的处理过程,即按照哪条路径、如何循环等。
而SQL采用集合操作方式,不仅查询的结果可以是元组的集合,而且一次更新操作的对象也可以是元组的集合。
比如上面的例子所返回的就是数据的集合,这种形式的结果要用其他高级语言来实现通常需要使用循环。
3.简洁易学,灵活易用
虽然SQL语言功能强大,但是设计巧妙,语言简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个关键字(如表4-2所示)。
而且语法简单,接近英语口语,所以学习起来非常容易。
表4-2SQL语言的核心关键字
SQL功能
关键字
数据查询
SELECT
数据定义
CREATE,DROP,ALTER
数据操纵
INSERT,UPDATE,DELETE
数据控制
GRANT,REVOKE
4.使用方式灵活方便
用户不仅可以输入SQL语句来对数据库进行操作,即直接通过SQL实现人机交互,还可以将SQL语句嵌入到其他高级语言(C、VB、Delphi、PowerBuilder等)程序中,供程序员设计程序时使用。
而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。
这种以统一的语法结构提供两种不同的使用方式的做法,提供了极大的灵活性与方便性。
尽管ASNI和ISO已经针对SQL制定了一些标准,但标准SQL语言只能完成数据库的大部分操作,仍然有小部分操作标准SQL语言无法胜任,许多数据库厂商针对自己的数据库软件版本做了某些扩充和修改,增加了一些非标准的SQL语言。
经扩充后的SQL语言称为扩展SQL语言。
应用于Microsoft公司的数据库产品SQLServer中的Transact-SQL语言就是一种典型的扩展SQL语言。
二、SQLServer概述
SQLServer是一款面向高端用户的数据库管理系统,SQLServer2000是Microsoft公司推出的SQLServer系列中的最成功的版本之一,被称为新一代大型电子商务、数据仓库和数据库解决方案。
1.SQLServer的发展简史
1988年,由Microsoft公司和Sybase公司共同开发的SQLServer第一个版本面世。
这个版本主要是为OS/2平台设计的。
从20世纪90年代早期,Microsoft公司己经开始考虑并着手为WindowsNT平台开发新的SQLServer版本。
1992年,Microsoft公司设计了SQLServer的WindowsNT版本。
1993年,Microsoft公司发布了运行在WindowsNT3.1上的SQLServer4.2。
由于SQLServer的高性能和方便、易用的用户界面,它很快就在市场上取得了成功,也使Microsoft公司成为了在高端关系数据库领域最具竞争力的提供商。
1994年,Microsoft和Sybase公司正式停止了技术合作。
1995年,Microsoft公司在改写了整个系统核心的基础上,公布了SQLServer6.0。
SQLServer6.0提供了集中的管理方式,并内嵌了复制功能。
1996年,Microsoft公司发布了SQLServer6.5版,随即在1997年推出了SQLServer6.5企业版。
这个版本包含了4GB的RAM支持,8处理器特性以及对集群计算机的支持等。
1998年,Microsoft公司在完全改写核心数据库引擎和管理结构的基础上推出了SQLServer7.0。
2000年,Microsoft公司进一步推出了SQLServer2000,并发布企业版、标准版、个人版、开发者版等四个产品系列。
2005年,最新版本SQLServer2005面世。
2.SQLServer2000的特点
SQLServer具有强大的数据管理功能,提供了丰富的管理工具支持数据的完整性管理、安全性管理和作业管理。
SQLServer具有分布式数据库和数据仓库功能,能进行分布式事务处理和联机分析处理,支持客户机/服务器结构。
SQLServer支持标准的ANSISQL2,还把标准SQL进行功能扩展,成为更为实用的Transact-SQL。
另外SQLServer还具有强大的网络功能,支持发布Web页面以及接收电子邮件。
与以前的版本相比,SQLServer2000的特点体现在如下几个方面。
(1)与Internet的紧密结合。
SQLServer2000的数据库引擎集成了对XML的支持,使用XML简化了对后端系统和数据转换的整合。
XML可用于在数据库中插入、更新、删除数据库中的值,关系数据库引擎可以返回XML文档格式的数据,这些功能意味着我们可以使用SQLServer2000来生成一个XML并且通过XML得到客户端的返回值。
SQLServer还具有可扩展、易于使用和安全的特点,成为建设大型Web站点最好的数据存储设备之一。
它的安全性主要有以下几方面:
•强大而灵活的基于角色的服务器、数据库和应用程序配置安全性;
•集成的安全性审核工具可以跟踪18个不同的安全事件及其子事件;
•精密的文件和网络加密支持,包括SSL(安全套接层)、Kerberos及安全委托。
(2)可扩展性和可用性。
SQLServer2000的数据库引擎可以在各种配置的计算机上运行,从安装Windows98的台式机、笔记本电脑到安装Windows2000数据中心的多处理器计算机。
SQLServer2000企业版,具有联盟数据库服务器(federateddatabaseservers)、视图索引(indexedviews)以及超大规模的内存支持等特征,完全可以满足最大规模的Web站点的性能需求。
其中联盟数据库服务器特性允许用户在多个数据库服务器上水平划分数据表,从而使得用户把本来一台服务器负责的功能扩展到多台数据库服务器上去。
这多台数据库服务器彼此合作提供类似于集群服务器所能提供的强大性能。
(3)企业级数据库。
SQLServer2000关系数据库引擎具有完善而强大的数据处理功能。
它在有效保证数据库一致性的基础上,尽量降低成千上万的数据库用户进行并发访问时的管理和延迟成本。
SQLServer2000的分布式查询允许用户同时引用多处数据源,但其友好的界面使用户觉得好像自始至终是在操作一个数据源。
(4)简单、友好的操作方式。
SQLServer2000包含一整套管理和开发工具。
这些工具具有非常友好的用户界面,在提供强大功能的同时,易于安装、使用和发布。
(5)数据仓库支持。
SQLServer2000为了满足现代企业对大规模数据进行有效分析和利用的要求,包含了一系列提取、分析、总结数据的工具,从而使联机分析处理成为可能。
SQLServer2000扩展并重命名了以前的SQLServer7.0中的OLAP服务组件,并引入了数据挖掘的功能。
同时,SQLServer2000提供了英语查询工具和编程接口,使得以英语为基础设计、管理和查询数据库成为了可能。
3.SQLServer2000的体系结构
从不同的应用和功能角度出发,SQLServer2000具有不同的系统结构分类。
具体可分为以下几类:
(1)客户机/服务器(C/S)体系结构:
主要应用于客户端可视化操作、服务器端功能配置以及客户端和服务器端的通信。
(2)数据库体系结构:
又划分为数据库逻辑结构和数据库物理结构。
数据库逻辑结构主要应用于面向用户的数据组织和管理,如数据库的表、视图、约束、用户权限等;数据库物理结构主要应用于面向计算机的数据组织和管理,如数据文件、表和视图的数据组织方式、磁盘空间的利用和回收、文本和图形数据的有效存储等。
(3)关系数据库引擎体系结构:
主要应用于服务器端的高级优化,如查询服务器(QueryProcessor)的查询过程、线程和任务的处理、数据在内存的组织和管理等。
下面我们主要描述一下SQLServer2000的C/S体系结构。
图4-1SQLSever客户机/服务器体系结构
C/S体系结构有利于数据库系统把数据集中保存在中央服务器上,从而实现了多用户共享数据的目的。
根据物理结构的不同,C/S体系结构可以分成两层的C/S体系结构和三层(多层)的C/S体系结构。
在两层的C/S体系结构中,用户在本地计算机上运行SQLServer的客户端软件,该软件通过网络访问服务器上的SQLServer2000的实例。
这样一来,一方面网络上有大量数据在传输,从而造成网络瓶颈;另一方面,客户端也会变得越来越“胖”,因而不堪重负。
在这个模式下客户端完成的功能相对比较复杂,所以在此结构中的客户机也被称为胖客户机。
而在三层(多层)的C/S体系结构中引入了Web数据库,客户端位于最上层,仅需安装用户界面软件(如Web浏览器)用于交互处理;数据部分被放置在最底层的数据库服务器中;而大量的商业规则被封装起来存放至中间层。
这时本地计算机执行的操作会大大减少,所以这时的客户端又被称为瘦客户机。
SQLServer的C/S体系结构如图4-1所示。
三、SQLServer2000的主要组件简介
SQLServer2000的组件包括服务器端组件和客户端组件。
1.服务器端组件
SQLServer2000的服务器端组件主要包括:
SQLServerService、SQLServerAgent、MSDTC(MicrosoftDistributedTransactionCoordinatorService,微软分布式事务协调器)和MicrosoftSearchService。
(1)SQLServerService是SQLServer2000数据库管理系统的核心数据库引擎,在WindowsNT与Windows2000操作系统中,SQLServer以服务(Service)的形式实现,具体表现为MSSQLServerService。
MSSQLServerService管理着由该SQLServer2000系统拥有的所有文件,MSSQLServerService是SQLServer2000系统中惟一可以直接读取和修改数据的组件。
客户对数据库的所有服务请求,最终都会体现为一组Transact-SQL命令。
MSSQLServerService的功能是负责协调和安排这些服务请求的执行顺序,然后逐一解释和执行SQL命令,并向提交这些服务请求的客户返回执行的结果。
MSSQLServerService同时也可以支持分布式的数据库查询,并不把范围局限在本SQLServer2000系统中。
MSSQLServerService的功能还包括监督客户对数据库的操作,实施企业规则,维护数据一致性等,具体体现在:
•负责存储过程和触发器的执行;
•对数据加锁,实施并发性控制,以防止多个用户同时修改同一个数据;
•管理分布式数据库,保证不同物理地址上存放的数据的一致性和完整性;
•加强系统的安全性。
(2)SQLServerAgent服务主要是用于管理需要频繁重复执行的活动,如数据库定时备份等。
SQLServerAgent在WindowsNT与Windows2000系统里以服务的形式存在和运行,体现为SQLServerAgentService。
SQLServerAgent提供SQLServer的调度服务,能够自动执行数据库管理员预先安排好的作业(Job),监视SQLServer事件并根据事件触发警报(Alert)或运行事先安排好的程序。
它还能够集中管理在企业范围内分布的多个SQLServer服务器。
管理员在主服务上定义的任务可以通过网络下达给目标服务器执行,目标服务器产生的事件又可以转发给主服务器进行集中处理。
通过配置和使用SQLServerAgent,可以实现数据库系统的定时与自动管理。
例如,当数据库出现故障或者某一特定的事件发生时,自动执行一系列操作来进行事件的处理。
SQLServerAgent必须和SQLServer一同使用,它实现自动化管理的组件,包括:
作业、警报和操作员(Operator)。
•作业:
由可执行的Transact-SQL语句组成的已定义的对象,作业可以根据用户的需求进行调度,SQLServer管理程序按调度的时间执行作业。
•警报:
用于发生特定事件时采取相应措施(发电子邮件,运行作业等)来处理问题。
•操作员:
操作员的职责是处理服务器发生的问题,他由网络账户或电子邮件标识符标识。
(3)随着网络的普及,分布式数据库的应用越来越普遍。
在分布式数据库中逻辑上作为一个整体的数据被存储在了多个服务器上。
例如,一家大的商业银行完全有可能将客户的信用卡消费信息和支票消费信息存储在不同的服务器上,但是用户的存款账户只有一个,当用户用任何一种形式进行了消费以后,计算机必须同时对存储在不同服务器上的信息进行更新。
为了更好地协调和处理这种分布式事务,SQLServer2000使用了MSDTC。
MSDTC也以WindowsNT服务的形式存在和运行。
MSDTC是一个事务管理器,它允许客户的应用程序在一个事务中对分布在多个服务器上的数据源进行操作。
MSDTC通过两段式提交的方法来实施分布式事务,针对多个服务器的更新要么全部成功执行,要么全部不执行,从而有效保证数据的一致性和完整性。
(4)MicrosoftSearchService为SQLServer2000提供搜索服务。
主要包括索引支持和查询支持两个方面。
索引支持用于建立数据库的全文目录和索引;查询支持针对全文的检索。
它支持三种类型的查询:
检索词或短语,检索近义词,检索动词和名词的一些复杂变化形式。
2.客户端组件
SQLServer2000提供的客户端组件包括:
企业管理器(EnterpriseManager)、查询分析器(QueryAnalyzer)、SQLServer管理工具和向导以及SQLServer命令提示管理工具等。
下面主要介绍一下企业管理器和查询分析器(这里以个人版为例,其他版本可能略有不同)。
(1)企业管理器。
企业管理器是SQLServer中最重要的一个管理工具。
它以图形化和集成化为特性,提供了调用其他管理工具的简单途径,利用企业管理器可以实现SQLServer2000服务器的有效配置和管理。
企业管理器采用管理控制台(MicrosoftManagementConsole,MMC)界面,与Windows资源管理器极为相似(如图4-2所示)。
企业管理器按照树型结构的要求来管理多个彼此通过网络互联的SQLServer服务器。
通过在企业管理器中对SQLServer服务器进行注册,任何访问SQLServer的用户都可以使用这些服务器。
通过企业管理器集成的各种管理工具,数据库管理员可以方便地建立和管理所有SQLServer对象。
利用企业管理器可以完成的操作有:
管理SQLServer服务器;建立与管理数据库;建立与管理表、视图、存储过程、触发程序、角色、规则、默认值等数据库对象,以及用户定义的数据类型;备份数据库和事务日志、恢复数据库;复制数据库;设置任务调度;管理用户账户和权限;建立Transact-SQL命令语句等。
在后面的章节中将介绍实现上述功能的具体操作方法。
图4-2企业管理器工作界面
(2)查询分析器。
查询分析器是一个图形化的数据库编程接口,以自由的文本格式编辑和执行Transact-SQL语句,对语法中保留字提供彩色显示和上下文敏感帮助,并提供快速生成SQL代码的大量模板,同时使用图形化的方式显示SQL语句的逻辑步骤和SQL语句的执行效率评估。
运行“MicrosoftSQLServer”程序组中的“查询分析器”,会弹出如图4-3所示的“连接到SQLServer”对话框,之后选择SQLServer并输入登录名与密码,单击“确定”按钮,连接成功后显示如图4-4所示的“SQL查询分析器”窗口。
图4-3连接到SQLServer对话框
在如图4-4所示的窗口中,左边是查询分析器的对象浏览器和模板,右上部分是一个查询脚本编辑器,在这个窗口中,可以编写Transact-SQL语句,调用存储过程,进行查询优化,分析查询过程等操作。
为了方便输入与修改,查询编辑器可以用不同的颜色显示特殊的关键字,例如:
用蓝色显示标准的SQL命令字,如SELECT、INSERT等,用紫色显示全局变量名,如@version等,以确保语句输入的正确。
单击工具栏上的“执行查询”图标(
)来执行脚本。
右下部分可以迅速查看这些语句的执行结果,以分析和处理数据库中的数据。
单击工具栏上的“保存查询/结果”图标(
)可将查询脚本编辑器中编写的脚本保存起来,以备以后使用。
图4-4查询分析器工作界面
除此以外,查询分析器还可以完成以下几方面的工作:
对Transact-SQL语句的执行计划显示一种图形化的描述;通过索引调整表,明确对特定表格采用什么样的索引才能达到性能的优化;显示关于SQL语句工作性能的统计。
第二节数据库的创建与管理
一、SQLServer数据库的构成
1.SQLServer的数据库文件
SQLServer的数据库由下列文件组成:
(1)主数据文件:
用于存储数据库数据,并包含数据库的启动信息。
每个数据库都有一个主数据文件。
主数据文件一般使用.mdf作为扩展名。
(2)辅助数据文件:
用于存储不能置于主数据文件中的所有数据。
一个数据库可以没有辅助数据文件,也可以有多个辅助数据文件。
如果数据太多而使主数据文件存放不下的话,就需要辅助数据文件。
辅助数据文件可以与主数据文件位于同一磁盘驱动器上,也可以位于不同磁盘驱动器上。
辅助数据文件的扩展名是.ndf。
(3)日志文件:
用于存储对数据库中数据的操作记录。
每个数据库都必须至少有一个日志文件。
一旦数据库遭到破坏,则事务日志文件用来恢复数据库中的数据。
日志文件的扩展名是.ldf。
2.SQLServer2000的默认数据库
当SQLServer2000成功安装后,系统自动创建了master、model、empdb和msdb4个系统数据库以及pubs和Northwind2个示例数据库。
(1)master数据库。
master数据库记录了SQLServer所有的服务器级系统信息,所有的注册账户和密码以及所有的系统设置信息。
还记录了所有用户定义数据库的存储位置和初始化信息。
该数据库一旦受到损坏(例如无意中被用户修改或删除,或存储介质出现问题),有可能导致SQLServer无法运行,所以用户一般不要对它进行修改并经常进行备份。
(2)tempdb数据库。
tempdb数据库记录了所有的临时表格、临时数据和临时创建的存储过程。
tempdb数据库是一个全局资源,没有专门的权限限制,允许所有可以连接上SQLServer服务器的用户使用。
在tempdb数据库中存放的所有数据信息都是临时的。
每当连接断开时,所有的临时表格和临时存储过程都将自动丢弃。
所以每次SQLServer启动时,tempdb数据库里面总是空的。
当临时存储的数据量急剧增加时,tempdb数据库的大小可以自动增长。
(3)model数据库。
model数据库是建立新数据库的模板,它包含了将复制到每个数据库中的系统表。
执行创建数据库的语句CREATEDATABASE时,服务器总是通过复制model数据库建立新数据库的前面部分,新数据库的后面部分被初
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四章 关系数据库的建立 第四 关系 数据库 建立