第四章 关系数据库的建立.doc
第四章 关系数据库的建立在完成了数据库的逻辑设计与物理设计之后,设计人员就可以用DBMS提供的数据定义语言和数据操纵语言以及其他实用程序来建立数据库,即将数据库逻辑设计与物理设计的结果描述出来,成为DBMS可以接受的源代码。其中SQL语言就是最常用的建立关系数据库的标准语言。本章针对SQL语言,介绍关系数据库的建立过程,主要包括以下内容: SQL语言概述 SQL Server 2000的体系结构及其特点。 关系型数据库的创建与管理 基本表的创建、更新和删除 基于SQL语句的数据查询 视图的创建和管理 SQL的数据控制功能第一节 SQL概述SQL 是结构化查询语言(Structured Query Language)的英文缩写,是目前使用最为广泛的关系数据库查询语言,通过它可以对数据库进行查询和更新。SQL语言于1974年由 Boyce和 Chamberlin提出。1975年1979年IBM公司的San Jose 研究实验室研制了著名的关系数据库管理系统原型System R系统,并在该系统上成功实现了 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 语言的特点及其主要功能,并引入一个成功的企业级数据库产品SQL Server 2000。后面章节的讲解将以这个产品作为辅助工具。一、SQL 的特点与功能SQL语言之所以能够为用户和业界所接受并成为国际标准,是因为它是一种功能强大、通用性好同时又简单易学的语言。SQL虽然称为结构化查询语言,但它的功能不仅仅是查询(Query),还包括操纵(Manipulation)、定义(Definition)和控制(Control)三个方面。因此SQL语言同时集成了数据定义语言和数据操纵语言的功能。SQL 的主要特点如下:1. 高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项要求,必须指定存取路径。而用SQL 进行数据操作,用户只需要指出“做什么”,而不需要指出“怎么做”,因此用户无需了解数据的存放位置和存取路径,数据的存取和整个 SQL 语句的操作过程由系统自动完成。这种高度非过程化的特性大大减轻了用户负担,并且有利于提高数据独立性。例如,若要从学生信息表中找出所有性别为'男'的学生的学号、性别和班级号,可以使用如下所示的SQL查询语句: SELECT 学号, 性别,班级号 FROM 学生WHERE 性别= 男 在上述语句中,只是提出了查询的要求,并没有给出任何涉及查询路径和查询方式的提示。但关系数据库管理系统接受并执行上述语句,返回表4-1所示的查询结果。从执行结果可以看出,SQL语言完成相同的工作所需的代码比其他高级语言要少。表4-1学号性别班级号男04777男051112. 面向集合的操作方式非关系数据模型采用的是面向记录的操作方式,操作对象往往是一条记录,通常要说明具体的处理过程,即按照哪条路径、如何循环等。而SQL 采用集合操作方式,不仅查询的结果可以是元组的集合,而且一次更新操作的对象也可以是元组的集合。比如上面的例子所返回的就是数据的集合,这种形式的结果要用其他高级语言来实现通常需要使用循环。 3. 简洁易学,灵活易用虽然SQL语言功能强大,但是设计巧妙,语言简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个关键字(如表4-2所示)。而且语法简单,接近英语口语,所以学习起来非常容易。表4-2 SQL语言的核心关键字SQL功能关键字数据查询SELECT数据定义CREATE,DROP,ALTER 数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE4. 使用方式灵活方便用户不仅可以输入SQL语句来对数据库进行操作,即直接通过SQL实现人机交互,还可以将 SQL 语句嵌入到其他高级语言(C、VB、Delphi、PowerBuilder等)程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用方式的做法,提供了极大的灵活性与方便性。尽管ASNI和ISO已经针对SQL制定了一些标准,但标准SQL语言只能完成数据库的大部分操作,仍然有小部分操作标准SQL语言无法胜任,许多数据库厂商针对自己的数据库软件版本做了某些扩充和修改,增加了一些非标准的SQL语言。经扩充后的SQL语言称为扩展SQL语言。应用于Microsoft公司的数据库产品SQL Server中的Transact-SQL 语言就是一种典型的扩展SQL语言。二、SQL Server概述SQL Server 是一款面向高端用户的数据库管理系统,SQL Server 2000 是 Microsoft 公司推出的 SQL Server 系列中的最成功的版本之一,被称为新一代大型电子商务、数据仓库和数据库解决方案。1. SQL Server 的发展简史1988年,由Microsoft公司和Sybase公司共同开发的SQL Server第一个版本面世。这个版本主要是为 OS/2平台设计的。从 20世纪 90年代早期,Microsoft公司己经开始考虑并着手为Windows NT平台开发新的SQL Server版本。1992年,Microsoft公司设计了SQL Server的 Windows NT版本。1993年,Microsoft公司发布了运行在 Windows NT 3.1上的SQL Server 4.2。由于SQL Server的高性能和方便、易用的用户界面,它很快就在市场上取得了成功,也使Microsoft公司成为了在高端关系数据库领域最具竞争力的提供商。1994年,Microsoft和Sybase公司正式停止了技术合作。1995年,Microsoft公司在改写了整个系统核心的基础上,公布了SQL Server 6.0。SQL Server 6.0提供了集中的管理方式,并内嵌了复制功能。1996年,Microsoft公司发布了SQL Server 6.5版,随即在 1997年推出了SQL Server 6.5企业版。这个版本包含了4GB的RAM 支持,8处理器特性以及对集群计算机的支持等。1998年,Microsoft公司在完全改写核心数据库引擎和管理结构的基础上推出了SQL Server 7.0。2000年,Microsoft公司进一步推出了SQL Server 2000,并发布企业版、标准版、个人版、开发者版等四个产品系列。2005年,最新版本SQL Server 2005面世。2. SQL Server 2000的特点SQL Server 具有强大的数据管理功能,提供了丰富的管理工具支持数据的完整性管理、安全性管理和作业管理。SQL Server 具有分布式数据库和数据仓库功能,能进行分布式事务处理和联机分析处理,支持客户机/服务器结构。SQL Server 支持标准的 ANSI SQL2,还把标准 SQL 进行功能扩展,成为更为实用的 Transact-SQL。另外 SQL Server 还具有强大的网络功能,支持发布Web页面以及接收电子邮件。与以前的版本相比,SQL Server 2000的特点体现在如下几个方面。(1)与Internet的紧密结合。SQL Server 2000的数据库引擎集成了对XML的支持,使用 XML 简化了对后端系统和数据转换的整合。XML 可用于在数据库中插入、更新、删除数据库中的值,关系数据库引擎可以返回 XML 文档格式的数据,这些功能意味着我们可以使用 SQL Server 2000 来生成一个 XML 并且通过 XML 得到客户端的返回值。SQL Server还具有可扩展、易于使用和安全的特点,成为建设大型Web站点最好的数据存储设备之一。它的安全性主要有以下几方面: 强大而灵活的基于角色的服务器、数据库和应用程序配置安全性; 集成的安全性审核工具可以跟踪 18 个不同的安全事件及其子事件; 精密的文件和网络加密支持,包括 SSL(安全套接层)、Kerberos 及安全委托。(2)可扩展性和可用性。SQL Server 2000的数据库引擎可以在各种配置的计算机上运行,从安装Windows 98的台式机、笔记本电脑到安装 Windows 2000数据中心的多处理器计算机。SQL Server 2000企业版,具有联盟数据库服务器(federated database servers)、视图索引(indexed views)以及超大规模的内存支持等特征,完全可以满足最大规模的Web站点的性能需求。其中联盟数据库服务器特性允许用户在多个数据库服务器上水平划分数据表,从而使得用户把本来一台服务器负责的功能扩展到多台数据库服务器上去。这多台数据库服务器彼此合作提供类似于集群服务器所能提供的强大性能。(3)企业级数据库。SQL Server 2000关系数据库引擎具有完善而强大的数据处理功能。它在有效保证数据库一致性的基础上,尽量降低成千上万的数据库用户进行并发访问时的管理和延迟成本。SQL Server 2000的分布式查询允许用户同时引用多处数据源,但其友好的界面使用户觉得好像自始至终是在操作一个数据源。(4)简单、友好的操作方式。SQL Server 2000包含一整套管理和开发工具。这些工具具有非常友好的用户界面,在提供强大功能的同时,易于安装、使用和发布。(5)数据仓库支持。SQL Server 2000为了满足现代企业对大规模数据进行有效分析和利用的要求,包含了一系列提取、分析、总结数据的工具,从而使联机分析处理成为可能。SQL Server 2000扩展并重命名了以前的SQL Server 7.0中的OLAP服务组件,并引入了数据挖掘的功能。同时,SQL Server 2000提供了英语查询工具和编程接口,使得以英语为基础设计、管理和查询数据库成为了可能。3. SQL Server 2000的体系结构从不同的应用和功能角度出发,SQL Server 2000具有不同的系统结构分类。具体可分为以下几类:(1) 客户机服务器(C/S)体系结构:主要应用于客户端可视化操作、服务器端功能配置以及客户端和服务器端的通信。(2) 数据库体系结构:又划分为数据库逻辑结构和数据库物理结构。数据库逻辑结构主要应用于面向用户的数据组织和管理,如数据库的表、视图、约束、用户权限等;数据库物理结构主要应用于面向计算机的数据组织和管理,如数据文件、表和视图的数据组织方式、磁盘空间的利用和回收、文本和图形数据的有效存储等。(3) 关系数据库引擎体系结构:主要应用于服务器端的高级优化,如查询服务器(Query Processor)的查询过程、线程和任务的处理、数据在内存的组织和管理等。下面我们主要描述一下SQL Server 2000的C/S体系结构。图4-1 SQL Sever 客户机/服务器体系结构C/S体系结构有利于数据库系统把数据集中保存在中央服务器上,从而实现了多用户共享数据的目的。根据物理结构的不同,C/S体系结构可以分成两层的C/S体系结构和三层(多层)的C/S体系结构。在两层的C/S体系结构中,用户在本地计算机上运行 SQL Server 的客户端软件,该软件通过网络访问服务器上的 SQL Server 2000 的实例。这样一来,一方面网络上有大量数据在传输,从而造成网络瓶颈;另一方面,客户端也会变得越来越“胖”,因而不堪重负。在这个模式下客户端完成的功能相对比较复杂,所以在此结构中的客户机也被称为胖客户机。而在三层(多层)的C/S体系结构中引入了 Web 数据库,客户端位于最上层,仅需安装用户界面软件(如 Web 浏览器)用于交互处理;数据部分被放置在最底层的数据库服务器中;而大量的商业规则被封装起来存放至中间层。这时本地计算机执行的操作会大大减少,所以这时的客户端又被称为瘦客户机。SQL Server 的C/S体系结构如图4-1所示。三、SQL Server 2000的主要组件简介SQL Server 2000的组件包括服务器端组件和客户端组件。1. 服务器端组件SQL Server 2000的服务器端组件主要包括:SQL Server Service、SQL Server Agent、MS DTC(Microsoft Distributed Transaction Coordinator Service,微软分布式事务协调器)和Microsoft Search Service。(1)SQL Server Service是SQL Server 2000数据库管理系统的核心数据库引擎,在Windows NT与Windows 2000操作系统中,SQL Server以服务(Service)的形式实现,具体表现为MS SQL Server Service。MS SQL Server Service管理着由该SQL Server 2000系统拥有的所有文件,MS SQL Server Service是SQL Server 2000系统中惟一可以直接读取和修改数据的组件。客户对数据库的所有服务请求,最终都会体现为一组Transact-SQL命令。MS SQL Server Service的功能是负责协调和安排这些服务请求的执行顺序,然后逐一解释和执行SQL命令,并向提交这些服务请求的客户返回执行的结果。MS SQL Server Service同时也可以支持分布式的数据库查询,并不把范围局限在本SQL Server 2000系统中。MS SQL Server Service的功能还包括监督客户对数据库的操作,实施企业规则,维护数据一致性等,具体体现在: 负责存储过程和触发器的执行; 对数据加锁,实施并发性控制,以防止多个用户同时修改同一个数据; 管理分布式数据库,保证不同物理地址上存放的数据的一致性和完整性; 加强系统的安全性。(2) SQL Server Agent 服务主要是用于管理需要频繁重复执行的活动,如数据库定时备份等。SQL Server Agent在Windows NT与Windows 2000系统里以服务的形式存在和运行,体现为SQL Server Agent Service。SQL Server Agent提供SQL Server的调度服务,能够自动执行数据库管理员预先安排好的作业(Job),监视 SQL Server事件并根据事件触发警报(Alert)或运行事先安排好的程序。它还能够集中管理在企业范围内分布的多个 SQL Server 服务器。管理员在主服务上定义的任务可以通过网络下达给目标服务器执行,目标服务器产生的事件又可以转发给主服务器进行集中处理。通过配置和使用 SQL Server Agent,可以实现数据库系统的定时与自动管理。例如,当数据库出现故障或者某一特定的事件发生时,自动执行一系列操作来进行事件的处理。SQL Server Agent必须和SQL Server一同使用,它实现自动化管理的组件,包括:作业、警报和操作员(Operator)。 作业:由可执行的Transact-SQL 语句组成的已定义的对象,作业可以根据用户的需求进行调度,SQL Server 管理程序按调度的时间执行作业。 警报:用于发生特定事件时采取相应措施(发电子邮件,运行作业等)来处理问题。 操作员:操作员的职责是处理服务器发生的问题,他由网络账户或电子邮件标识符标识。(3)随着网络的普及,分布式数据库的应用越来越普遍。在分布式数据库中逻辑上作为一个整体的数据被存储在了多个服务器上。例如,一家大的商业银行完全有可能将客户的信用卡消费信息和支票消费信息存储在不同的服务器上,但是用户的存款账户只有一个,当用户用任何一种形式进行了消费以后,计算机必须同时对存储在不同服务器上的信息进行更新。为了更好地协调和处理这种分布式事务,SQL Server 2000使用了MS DTC。MS DTC也以Windows NT服务的形式存在和运行。MS DTC是一个事务管理器,它允许客户的应用程序在一个事务中对分布在多个服务器上的数据源进行操作。MS DTC通过两段式提交的方法来实施分布式事务,针对多个服务器的更新要么全部成功执行,要么全部不执行,从而有效保证数据的一致性和完整性。(4)Microsoft SearchService为SQL Server 2000提供搜索服务。主要包括索引支持和查询支持两个方面。索引支持用于建立数据库的全文目录和索引;查询支持针对全文的检索。它支持三种类型的查询:检索词或短语,检索近义词,检索动词和名词的一些复杂变化形式。2. 客户端组件SQL Server 2000提供的客户端组件包括:企业管理器(Enterprise Manager)、查询分析器(Query Analyzer)、SQL Server管理工具和向导以及SQL Server命令提示管理工具等。下面主要介绍一下企业管理器和查询分析器(这里以个人版为例,其他版本可能略有不同)。(1)企业管理器。企业管理器是SQL Server中最重要的一个管理工具。它以图形化和集成化为特性,提供了调用其他管理工具的简单途径,利用企业管理器可以实现SQL Server 2000服务器的有效配置和管理。企业管理器采用管理控制台(Microsoft Management Console, MMC)界面,与Windows资源管理器极为相似(如图4-2所示)。企业管理器按照树型结构的要求来管理多个彼此通过网络互联的SQL Server服务器。通过在企业管理器中对SQL Server服务器进行注册,任何访问SQL Server的用户都可以使用这些服务器。通过企业管理器集成的各种管理工具,数据库管理员可以方便地建立和管理所有SQL Server对象。利用企业管理器可以完成的操作有:管理SQL Server 服务器;建立与管理数据库;建立与管理表、视图、存储过程、触发程序、角色、规则、默认值等数据库对象,以及用户定义的数据类型;备份数据库和事务日志、恢复数据库;复制数据库;设置任务调度;管理用户账户和权限;建立Transact-SQL命令语句等。在后面的章节中将介绍实现上述功能的具体操作方法。图4-2 企业管理器工作界面(2)查询分析器。查询分析器是一个图形化的数据库编程接口,以自由的文本格式编辑和执行Transact-SQL语句,对语法中保留字提供彩色显示和上下文敏感帮助,并提供快速生成SQL代码的大量模板,同时使用图形化的方式显示SQL语句的逻辑步骤和SQL语句的执行效率评估。运行“Microsoft SQL Server”程序组中的“查询分析器”,会弹出如图4-3所示的“连接到SQL Server”对话框,之后选择SQL Server并输入登录名与密码,单击“确定”按钮,连接成功后显示如图 4-4所示的“SQL查询分析器”窗口。图4-3连接到SQL Server对话框在如图4-4所示的窗口中,左边是查询分析器的对象浏览器和模板,右上部分是一个查询脚本编辑器,在这个窗口中,可以编写 Transact-SQL语句,调用存储过程,进行查询优化,分析查询过程等操作。为了方便输入与修改,查询编辑器可以用不同的颜色显示特殊的关键字,例如:用蓝色显示标准的SQL命令字,如SELECT、INSERT等,用紫色显示全局变量名,如version等,以确保语句输入的正确。单击工具栏上的“执行查询”图标()来执行脚本。右下部分可以迅速查看这些语句的执行结果,以分析和处理数据库中的数据。单击工具栏上的 “保存查询/结果”图标()可将查询脚本编辑器中编写的脚本保存起来,以备以后使用。图4-4 查询分析器工作界面除此以外,查询分析器还可以完成以下几方面的工作:对Transact-SQL语句的执行计划显示一种图形化的描述;通过索引调整表,明确对特定表格采用什么样的索引才能达到性能的优化;显示关于SQL语句工作性能的统计。第二节 数据库的创建与管理一、SQL Server数据库的构成1. SQL Server的数据库文件SQL Server 的数据库由下列文件组成:(1)主数据文件:用于存储数据库数据,并包含数据库的启动信息。每个数据库都有一个主数据文件。主数据文件一般使用.mdf作为扩展名。 (2)辅助数据文件:用于存储不能置于主数据文件中的所有数据。一个数据库可以没有辅助数据文件,也可以有多个辅助数据文件。如果数据太多而使主数据文件存放不下的话,就需要辅助数据文件。辅助数据文件可以与主数据文件位于同一磁盘驱动器上,也可以位于不同磁盘驱动器上。辅助数据文件的扩展名是.ndf。(3)日志文件:用于存储对数据库中数据的操作记录。每个数据库都必须至少有一个日志文件。一旦数据库遭到破坏,则事务日志文件用来恢复数据库中的数据。日志文件的扩展名是.ldf。2. SQL Server 2000的默认数据库当SQL Server 2000成功安装后,系统自动创建了master、model、empdb和msdb 4个系统数据库以及pubs和Northwind 2个示例数据库。(1)master数据库。master数据库记录了SQL Server所有的服务器级系统信息,所有的注册账户和密码以及所有的系统设置信息。还记录了所有用户定义数据库的存储位置和初始化信息。该数据库一旦受到损坏(例如无意中被用户修改或删除,或存储介质出现问题),有可能导致SQL Server无法运行,所以用户一般不要对它进行修改并经常进行备份。(2)tempdb数据库。tempdb数据库记录了所有的临时表格、临时数据和临时创建的存储过程。tempdb数据库是一个全局资源,没有专门的权限限制,允许所有可以连接上SQL Server服务器的用户使用。在 tempdb数据库中存放的所有数据信息都是临时的。每当连接断开时,所有的临时表格和临时存储过程都将自动丢弃。所以每次 SQL Server启动时,tempdb数据库里面总是空的。当临时存储的数据量急剧增加时,tempdb数据库的大小可以自动增长。(3)model数据库。model数据库是建立新数据库的模板,它包含了将复制到每个数据库中的系统表。执行创建数据库的语句 CREATE DATABASE时,服务器总是通过复制model数据库建立新数据库的前面部分,新数据库的后面部分被初始化成空白的数据。(4)msdb数据库。msdb数据库主要被 SQL Server Agent用于进行复制、作业调度以及管理报警等活动。该数据库常用于通过调度任务排除故障。(5)pubs和Northwind示例数据库。这是两个供用户学习的样本数据库。pubs数据库是模仿一个图书出版公司建立的数据库模型,其中包含了大量的样本表和样本数据,有出版者(publishers)、出版物(titles)、作者(authors)、书店(stores)、员工(employee)等表,还有一些表记录着各表之间的状态关系,如 titleauthor表记录哪位作者写了哪本书,sales说明哪些书店购买了哪些书等等。本章以后的例子将以pubs数据库为基础。Northwind数据库是从 SQL Server 2000开始建立的示例数据库。这个数据库是模仿一个贸易公司的数据库模型 。这个公司名叫 Northwind,专门经营世界各地风味食品的进出口。在 Northwind数据库中包含了与公司经营有关的大多数数据,如:雇员(Employees),顾客(Customers),运输商(Shipper),供货商(Supplier),销售区(Territories),订单(Order)以及一些记录各表之间状态关系的表等等。在SQL Server文档中,主要采用Northwind数据库进行 SQL Server 2000新特点和新功能的介绍。二、创建数据库SQL Server 2000提供两种方式创建数据库:企业管理器和Transact-SQL语句。1. 使用企业管理器创建数据库使用企业管理器创建数据库的步骤如下:(1)如果还没有启动SQL Server服务,应先运行“Microsoft SQL Server”程序组中的“服务管理器”,启动SQL Server服务,然后启动企业管理器(见图4-2)。(2)在控制台上依次单击“Microsoft SQL Server”、“SQL Server组”和要创建数据库的服务器左边的加号,展开如图4-2所示的树形目录。(3)右击“数据库”,然后在弹出的菜单中选择“新建数据库”命令,弹出如图4-5所示的数据库属性对话框,在此对话框的“名称”文本框中输入数据库名。为避免与系统提供的同一数据库同名,将数据库名修改为:pubs1。图4-5 数据库属性对话框的“常规”选项卡图4-6 数据库属性对话框的“数据文件”选项卡(4)单击图4-5上的“数据文件”选项卡,在“数据库文件”列表框中已给出默认的主数据文件的文件名(数据库名_Data.mdf)、存储位置(SQL Server 2000安装目录下的data子目录)、初始大小(1MB)。在“文件属性”中给出默认的文件自动增长方式及最大文件大小。根据需要,可对默认数据进行修改,例如可将数据文件名修改为:pubs1_data.mdf,并存放在c:data子目录下(如图4-6所示)。(5)如果需要使用辅助数据文件,则可在“文件名”列表框的第二行指定另一个文件名(扩展名为.ndf)、存储位置和初始大小。(6)单击图4-5上的“事务日志”选项卡,对事务日志进行设置,具体操作与“数据文件”选项卡中的操作类似,不再赘述。(7)单击图4-5上的“确定”按钮,关闭数据库属性对话框。至此,数据库创建完毕。此时在企业管理器的“数据库”目录下可以看到新建的数据库。2. 使用Transact-SQL语句创建数据库Transact-SQL创建数据库语句的一般格式为:CREATE DATABASE 数据库名 ON( < 数据文件定义1 > ,<数据文件定义2>,.)<文件组1>,<文件组2>, LOG ON (< 日志文件定义1 > ,<日志文件定义2>,)数据库名在服务器中必须唯一,并且符合标识符的规则。ON用来定义主数据文件和辅助数据文件。ON后跟以逗号分隔的数据文件定义列表和文件组。数据文件定义包括 NAME(逻辑文件名)FILENAME(操作系统下的物理路径和文件名)、SIZE(文件初始大小)、FILEGROWTH(增长量)和MAXSIZE(文件最大大小)等选项。LOG ON用来定义存储数据库日志的事务日志文件。日志文件定义包括的内容与数据文件定义基本相同。例4.1 要创建一个名为pubs1数据库,指定数据库初始大小为10MB,最大容量为50MB,数据库文件的增量为5MB,并同步建立事务日志。CREATE DATABASE pubs1ON ( NAME = pubs_dat, FILENAME = 'c:datapubs1_dat.mdf', SIZE = 10 MB, MAXSIZE = 50 MB, FILEGROWTH = 5 MB )LOG ON( NAME = 'pubs_log', FILENAME = c:datapubs1_log.ldf, SIZE = 5 MB, MAXSIZE = 25 MB, FILEGROWTH = 5 MB )例4.2创建一个名为 Archive 的数据库。包含1个200MB 的主数据文件、1个100MB的辅助数据文件及两个100MB的事务日志文件。主数据文件用 PRIMARY 关键字指定。CREATE DATABASE Archive ONPRIMARY ( NAME = Arch1, FILENAME = 'c: dataarchdat1.mdf', SIZE = 200 MB, MAXSIZE = 300 MB, FILEGROWTH = 20 MB),( NAME = Arch2, FILENAME = 'c: dataarchdat2.ndf', SIZE = 100MB, MAXSIZE = 200 MB, FILEGROWTH = 20 MB),LOG ON ( NAME = Archlog1, FILENAME = 'c:dataarchlog1.ldf', SIZE = 100MB, MAXSIZE = 200 MB, FILEGROWTH = 20 MB),( NAME = Archlog2, FILENAME = 'c:dataarchlog2.ldf', SIZE = 100MB, MAXSIZE = 200 MB, FILEGROWTH = 20 MB)三、修改数据库创建数据库之后,可以对其原始定义进行更改。常用的更改操作包括: 扩充分配给数据库的数据或事务日志空间。 收缩分配给数据库的数据或事务日志空间。 添加或删除数据和事务日志文件。 更改数据库名称。修改数据库既可以用企业管理器实现,也可以用Transact-SQL语句实现。用企业管理器修改数据库的方法与创建数据库的方法基本相同,区别在于选中要修改的数据库后,右击数据库名,从弹出的菜单中选择“属性”,弹出所选数据库的属性对话框,与图4-6相同。用Transact-SQL语句修改数据库的格式大致如下:ALTER DATABASE 数据库名 ADD FILE <数据文件定义1 > ,< 数据文件定义2>,. | ADD LOG FILE < 日志文件定义> ,<日志文件定义2>, | REMOVE FILE 数据文件名 | MODIFY FILE < 数据文件定义 > | MODIFY NAME = 新数据库名 其中,数据库名指定要修改的数据库对象的名称。ADD FILE指定要添加的文件。ADD LOG FILE指定要将日志文件添加到指定的数据库。REMOVE FILE从数据库系统表中删除数据文件名指定的数据文件。MODIFY FILE指定要更改给定的数据文件定义,更改选项包括 FILENAME、SIZE、FILEGROWTH 和 MAXSIZE。MODIFY NAME用于重命名数据库。例4.3 将pubs1数据库的容量扩充到80MB。ALTER DATABASE pubs1 MODIFY FILE (NAME = pubs_dat, SIZE = 80MB)例4.4 向pubs1数据库添加一个 5 MB 大小的辅助数据文件。ALTER DATABASE pubs1ADD FILE ( NAME = pubsdat2, FILENAME = 'c:Datapubsdat2.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB)四、删除数据库当不再需要数据库,或如果它被移到另一数据库或服务器时,即可删除该数据库。数据库删除之后,数据库文件和数据都从服务器上的磁盘中删除。删除数据库既可以用企业管理器实现,也可以用Transact-SQL语句实现。用企业管理器删除数据库时,首先从企业管理器的控制台中选中要删除的数据库,然后单击工具栏上的删除按钮,或右击数据库名,从弹出的菜单中选择“删除”命令,均可删除数据库。用Transact-SQL语句删除数据库的一般格式如下:DROP DATABASE <数据库名>例4.5 删除 Archive 数据库。DROP DATABASE Archive第三节 基本表的创建与管理在关系数据库中每一个关系都体现为一张表。表是用来存储数据和操作数据的逻辑结构,关系数据库中的所有数据都表现为表格的形式。SQL Server 2000用系统表记录所有服务器活动的信息以及每个用户数据库的定义信息。系统表中的信息组成了SQL Server系统可利用的数据字典,构成了数据库运行的环境。在master数据库中存储着所有SQL Server的服务器级系统信息,一共有16张系统表,如表 4-3所示。表4-3存储在master数据库中的服务器级系统表系统表功能sysaltfiles 记录文件的状态和变化信息syslockinfo 记录各种数据封锁的信息syscacheobjects记录高速缓存的使用情况syslogins记录所有的本地帐户信息syscharsets记录字符集和排列顺序的相关信息sysmessages记录所有的系统错误和警告信息sysconfigures记录服务器的配置信息sysoledbusers记录连接服务的用户名,密码等信息syscurconfigs 记录服务器当前的配置信息sysperfinfo记录有关统计服务器性能的计数器信息sysdatabases记录所有SQL Server数据库的相关信息sysprocesses记录正在进行中的进程信息sysdevices记录磁盘、磁带备份文件的相关信息sysremotelogins记录所有的远程用户信息syslanguages记录服务器所能识别的语言sysservers记录所有可以访问的SQL Server服务器信息表4-4所示的17张系统表,记录了每个数据库各自的系统信息,在创建数据库时自动产生,每个数据库都有属于自己的一组系统表。表4-4数据库级系统表系统表功能syscolumns 记录表、视图中的列、存储过程的参数信息sysindexkeys 记录被定义的键或索引的列信息syscomments 记录在建立数据库对象时定义的简介信息sysmembers 记录所有数据为角色的成员的相关信息sysconstraints记录约束和数据库对象