第3章 创建数据库 本章要点 SQL Server数据库的基本概念。 以图形界面方式创建SQL Server数据库。 以命令方式创建SQL Server数据库。 使用SQL Server设计和实现信息系统,首先就要设计和实现数据的表示和存储,即创建数据库。数据库是SQL Server用于组织和管理数据的基本对象,SQL Server能够支持多个数据库。本章介绍SQL Server数据库的基本概念、使用SQL Server Management Studio的图形用户界面创建SQL Server数据库、使用TSQL语句创建SQL Server数据库等内容。 3.1SQL Server数据库的基本概念 数据库是SQL Server存储和管理数据的基本对象,下面从逻辑数据库和物理数据库两个角度进行讨论。 3.1.1逻辑数据库 从用户的观点看,组成数据库的逻辑成分称为数据库对象,SQL Server数据库由存放数据的表以及支持这些数据的存储、检索、安全性和完整性的对象所组成。 1. 数据库对象 SQL Server的数据库对象包括表(table)、视图(view)、索引(index)、存储过程(stored procedure)、触发器(trigger)等。 表: 包含数据库中所有数据的数据库对象,由行和列构成。它是最重要的数据库对象。 视图: 由一张表或多张表导出的表,又称虚拟表。 索引: 为加快数据检索速度并可以保证数据唯一性的数据结构。 存储过程: 为完成特定功能的TSQL语句集合,编译后存放于服务器端的数据库中。 触发器: 一种特殊的存储过程,当某个规定的事件发生时,该存储过程自动执行。 2. 系统数据库和用户数据库 SQL Server的数据库有两类: 一类是系统数据库; 另一类是用户数据库。 1) 系统数据库 SQL Server在安装时创建4个系统数据库: master、model、msdb和tempdb。系统数据库存储有关SQL Server的系统信息,当系统数据库受到破坏时,SQL Server将不能正常启动和工作。 master数据库: 系统最重要的数据库,记录了SQL Server的系统信息,例如登录账号、系统配置、数据库位置及数据库错误信息等,用于控制用户数据库和SQL Server的运行。 model数据库: 为创建数据库提供模板。 msdb数据库: 代理服务数据库,为调度信息、作业记录等提供存储空间。 tempdb数据库: 一个临时数据库,为临时表和临时存储过程提供存储空间。 2) 用户数据库 用户数据库是由用户创建的数据库,本书所创建的数据库都是用户数据库。用户数据库和系统数据库在结构上是相同的。 3. 完全限定名和部分限定名 在TSQL中引用SQL Server对象对其进行查询、插入、修改、删除等操作,所使用的TSQL语句需要给出对象的名称,用户可以使用完全限定名和部分限定名。 1) 完全限定名 完全限定名是对象的全名。SQL Server创建的每个对象都有唯一的完全限定名,它由4部分组成: 服务器名、数据库名、数据库架构名和对象名。其格式如下: server.database.scheme.object 例如,DELLPC.stsc.dbo.student即为一个完全限定名。 2) 部分限定名 使用完全限定名往往很烦琐且没有必要,经常省略其中的某些部分。在对象全名的4部分中,前3部分均可被省略,当省略中间的部分时,圆点符“.”不可省略。这种只包含对象完全限定名中的一部分的对象名称为部分限定名。 在部分限定名中,未指出的部分使用默认值。 服务器: 默认为本地服务器。 数据库: 默认为当前数据库。 数据库架构名: 默认为dbo。 部分限定名格式如下: server.database...object /*省略架构名*/ server.. scheme.object/*省略数据库名*/ database.scheme.object/*省略服务器名*/ server...object/*省略架构名和数据库名*/ scheme.object/*省略服务器名和数据库名*/ object/*省略服务器名、数据库名和架构名*/ 例如,完全限定名DELLPC.stsc.dbo.student的部分限定名如下: DELLPC.stsc..student DELLPC..dbo.student stsc.dbo.student DELLPC..student dbo.student student 3.1.2物理数据库 从系统的观点看,数据库是存储逻辑数据库的各种对象的实体,它们存放在计算机的存储介质中,从这个角度称数据库为物理数据库。SQL Server的物理数据库架构包括页和区、数据库文件、数据库文件组等。 1. 页和区 页和区是SQL Server数据库的两个主要数据存储单位。 1) 页 每页的大小是8KB,1MB的数据文件可以容纳128页。页是SQL Server中用于数据存储的最基本单位。 2) 区 每8个连接的页组成一个区,区的大小是64KB,1MB的数据库有16个区,区用于控制表和索引的存储。 2. 数据库文件 SQL Server采用操作系统文件来存放数据库,使用的文件有主数据文件、辅助数据文件、日志文件3类。 1) 主数据文件 主数据文件(primary)用于存储数据。每个数据库必须有也只能有一个主数据文件,它的默认扩展名为.mdf。 2) 辅助数据文件 辅助数据文件(secondary)也用于存储数据。一个数据库中辅助数据文件可以创建多个,也可以没有,辅助数据文件的默认扩展名为.ndf。 3) 日志文件 日志文件(transaction log)用于保存恢复数据库所需的事务日志信息。每个数据库至少有一个日志文件,也可以有多个,日志文件的扩展名为.ldf。 3. 数据库文件组 数据库文件组由数据库文件组成,为了管理和分配数据将多个文件组织在一起,组成文件组,对它们进行整体管理,以提高表中数据的查询效率。SQL Server提供了两类文件组: 主文件组和用户定义文件组。 1) 主文件组 主文件组包含主数据文件和任何没有指派给其他文件组的文件,数据库的系统表均分配在主文件组中。 2) 用户定义文件组 用户定义文件组包含所有使用CREATE DATABASE或ALTER DATABASE语句并用FILEGROUP关键字指定的文件组。 3.2以图形界面方式创建SQL Server数据库 SQL Server提供两种方法创建SQL Server数据库: 一种方法是使用SQL Server Management Studio的图形用户界面创建SQL Server数据库; 另一种方法是使用TSQL语句创建SQL Server数据库。本节介绍以图形界面方式创建SQL Server数据库。 以图形界面方式创建SQL Server数据库包括创建数据库、修改数据库、删除数据库等内容,下面分别介绍。 1. 创建数据库 在使用数据库以前,首先需要创建数据库。在学生成绩管理系统中,以创建名称为stsc的学生成绩数据库为例,说明创建数据库的步骤。 【例3.1】使用SQL Server Management Studio创建stsc数据库。 创建stsc数据库的操作步骤如下。 (1) 单击“开始”按钮,选择“所有程序”→SQL Server→SQL Server Management Studio命令,出现“连接到服务器”对话框,在“服务器名称”下拉列表框中选择“(local)”选项,在“身份验证”下拉列表框中选择“SQL Server身份验证”选项,在“登录名”下拉列表框中选择sa选项,在“密码”文本框中输入123456,单击“连接”按钮,连接到SQL Server服务器。 (2) 屏幕出现SQL Server Management Studio窗口,在左边的“对象资源管理器”窗格中选中“数据库”节点,右击,在弹出的快捷菜单中选择“新建数据库”命令,如图3.1所示。 图3.1选择“新建数据库”命令 (3) 进入“新建数据库”窗口,在“新建数据库”窗口的左上方有3个选择页: “常规”“选项”和“文件组”,“常规”选择页首先出现。 在“数据库名称”文本框中输入创建的数据库名称stsc,“所有者”文本框使用系统默认值,系统自动在“数据库文件”列表中生成一个主数据文件stsc.mdf和一个日志文件stsc_log.ldf,主数据文件stsc.mdf初始大小为5MB,增量为1MB,存放的路径为 C:\Program Files\Microsoft SQL Server\MSSQL11.MICQLSERVER\MSSQL\DATA,日志文件stsc_log.ldf初始大小为1MB,增量为10%,存放的路径与主数据文件的路径相同,如图3.2所示。 图3.2“新建数据库” 窗口 这里只配置“常规”选择页,其他选择页采用系统默认设置。 (4) 单击“确定”按钮,stsc数据库创建完成,在C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA文件夹中增加了两个数据文件stsc.mdf和stsc_log.ldf。 2. 修改数据库 在创建数据库后,用户可以根据需要对数据库进行以下修改。 增加或删除数据文件,改变数据文件的大小和增长方式。 增加或删除日志文件,改变日志文件的大小和增长方式。 增加或删除文件组。 【例3.2】在abc数据库(已创建)中增加数据文件abcbk.ndf和日志文件abcbk_log.ldf。 操作步骤如下。 (1) 启动SQL Server Management Studio,在左边的“对象资源管理器”窗格中展开“数据库”节点,选中数据库abc,右击,在弹出的快捷菜单中选择“属性”命令。 (2) 在“数据库属性abc”窗口中,单击“选择页”中的“文件”选项,进入文件设置页面,如图3.3所示。通过本窗口可增加数据文件和日志文件。 图3.3“数据库属性abc” 窗口中的“文件”选择页 (3) 增加数据文件。单击“添加”按钮,在“数据库文件”列表中出现一个新的文件位置,单击“逻辑名称”文本框并输入名称abcbk, 单击“初始大小”文本框,通过该框后的微调按钮将大小设置为5,“文件类型”文本框、“文件组”文本框、“自动增长”文本框和“路径”文本框都选择默认值。 (4) 增加日志文件。单击“添加”按钮,在“数据库文件”列表中出现一个新的文件位置,单击“逻辑名称”文本框并输入名称abcbk_log,单击“文件类型”文本框,通过该框后的下拉箭头设置为“日志”,“初始大小”文本框、“文件组”文本框、“自动增长”文本框和“路径”文本框都选择默认值,如图3.4所示,单击“确定”按钮。 图3.4增加数据文件和日志文件 在C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA文件夹中,增加了辅助数据文件abcbk.ndf和日志文件abcbk_log.ldf。 【例3.3】在abc数据库中删除数据文件和日志文件。 操作步骤如下。 (1) 启动SQL Server Management Studio,在左边的“对象资源管理器”窗格中展开“数据库”节点,选中数据库abc,右击,在弹出的快捷菜单中选择“属性”命令。 (2) 出现“数据库属性abc”窗口,单击“选择页”中的“文件”选项,进入文件设置页面,通过本窗口可删除数据文件和日志文件。 (3) 选择abcbk数据文件,单击“删除”按钮,则该数据文件被删除。 (4) 选择abcbk_log日志文件,单击“删除”按钮,则该日志文件被删除。 (5) 单击“确定”按钮,返回SQL Server Management Studio窗口。 3. 删除数据库 数据库运行后,需要消耗资源,往往会降低系统运行效率,通常可将不再需要的数据库进行删除,释放资源。删除数据库后,其文件及数据都会从服务器上的磁盘中删除,并永久删除,除非使用以前的备份,所以删除数据库应谨慎。 【例3.4】删除abc数据库。 删除abc数据库的操作步骤如下。 (1) 启动SQL Server Management Studio,在左边的“对象资源管理器”窗格中展开“数据库”节点,选中数据库abc,右击,在弹出的快捷菜单中选择“删除”命令。 (2) 出现“删除对象”对话框,单击“确定”按钮,则abc数据库被删除。 3.3以命令方式创建SQL Server数据库 3.2节介绍了使用SQL Server Management Studio的图形用户界面创建数据库,本节介绍使用TSQL语句创建数据库。与图形用户界面相比,使用TSQL语句创建数据库更为灵活、方便。 3.3.1创建数据库 创建数据库使用CREATE DATABASE语句,下面介绍创建数据库的语法格式。 语法格式: CREATE DATABASE database_name [[ON[filespec] ] [LOG ON [filespec] ] ] <filespec>::= {( NAME = logical_file_name , FILENAME = ' os_file_name ' [, SIZE = size] [, MAXSIZE = {max_size | UNLIMITED }] [, FILEGROWTH = growth_increament [ KB | MB | GB | TB | % ]] ) } 说明: database_name: 创建的数据库名称,命名须唯一且符合SQL Server的命名规则,最多为128个字符。 ON子句: 指定数据库文件和文件组属性。 LOG ON子句: 指定日志文件属性。 filespec: 指定数据文件的属性,给出文件的逻辑名、存储路径、大小及增长特性。 NAME: 为filespec定义的文件指定逻辑文件名。 FILENAME: 为filespec定义的文件指定操作系统文件名,指出定义物理文件时使用的路径和文件名。 SIZE子句: 指定filespec定义的文件的初始大小。 MAXSIZE子句: 指定filespec定义的文件的最大大小。 FILEGROWTH子句: 指定filespec定义的文件的增长增量。 当仅使用CREATE DATABASE database_name语句而不带参数时,创建的数据库大小将与model数据库的大小相等, 【例3.5】使用TSQL语句,创建test数据库。 在SQL Server 查询分析器中输入以下语句: CREATE DATABASE test ON ( NAME='test', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA\test.mdf', SIZE=5MB, MAXSIZE=30MB, FILEGROWTH=1MB ) LOG ON ( NAME='test_log', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA\test_log.ldf', SIZE=1MB, MAXSIZE=10MB, FILEGROWTH=10% ) 在查询分析器编辑窗口中单击“执行”按钮或按F5键,系统提示“命令已成功完成”,则 test数据库创建完毕。 【例3.6】创建test2数据库,其中,主数据文件为20MB,最大大小不限,按1MB增长; 1个日志文件,初始大小为1MB,最大大小为20MB,按10%增长。 在SQL Server 查询分析器中输入以下语句: CREATE DATABASE test2 ON ( NAME='test2', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA\test2.mdf', SIZE=20MB, MAXSIZE=UNLIMITED, FILEGROWTH=1MB ) LOG ON ( NAME='test2_log', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA\test2_log.ldf', SIZE=1MB, MAXSIZE=20MB, FILEGROWTH=10% ) 在查询分析器编辑窗口中单击“执行”按钮或按F5键,系统提示“命令已成功完成”,则test2数据库创建成功。 【例3.7】创建一个具有两个文件组的数据库test3。要求: 主文件组包括文件test3_dat1,文件初始大小为15MB,最大大小为45MB,按4MB增长; 另有一个文件组名为test3gp,包括文件test3_dat2,文件初始大小为5MB,最大大小为20MB,按10%增长。 在SQL Server 查询分析器中输入以下语句: CREATE DATABASE test3 ON PRIMARY ( NAME = ' test3_dat1', FILENAME = 'D:\data\ test3_dat1.mdf', SIZE =15MB, MAXSIZE = 45MB, FILEGROWTH = 4MB ), FILEGROUP test3gp ( NAME = ' test3_dat2', FILENAME = 'D:\data\ test3_dat2.ndf', SIZE = 5MB, MAXSIZE = 20MB, FILEGROWTH = 10% ) 在查询分析器编辑窗口中单击“执行”按钮或按F5键,系统提示“命令已成功完成”,则 test3数据库创建成功。 创建数据库后使用数据库,可使用USE语句。 语法格式: USE database_name 其中,database_name是使用的数据库名称。 说明: USE语句只在第一次打开数据库时使用,后续都是作用在该数据库中。如果要使用另一个数据库,需要重新使用USE语句打开另一个数据库。 3.3.2修改数据库 修改数据库使用ALTER DATABASE语句,下面介绍修改数据库的语法格式。 语法格式: ALTER DATABASE database { ADD FILE filespec | ADD LOG FILE filespec | REMOVE FILE logical_file_name | MODIFY FILE filespec | MODIFY NAME = new_dbname } 说明: database: 需要更改的数据库名称。 ADD FILE子句: 指定要增加的数据文件。 ADD LOG FILE子句: 指定要增加的日志文件。 REMOVE FILE子句: 指定要删除的数据文件。 MODIFY FILE子句: 指定要更改的文件属性。 MODIFY NAME子句: 重命名数据库。 【例3.8】在tes2数据库中,增加一个数据文件testadd.ndf,初始大小为10MB,最大大小为50MB,按5MB增长。 ALTER DATABASE test2 ADD FILE ( NAME = 'test2add', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11. MICSQLSERVER\MSSQL\DATA\test2add.ndf', SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5MB ) 3.3.3删除数据库 删除数据库使用DROP DATABASE语句。 语法格式: DROP DATABASE database_name 其中,database_name是要删除的数据库名称。 【例3.9】使用TSQL语句删除test3数据库。 DROP DATABASE test3 3.4小结 本章主要介绍以下内容。 (1) 数据库是SQL Server存储和管理数据的基本对象,从逻辑数据库和物理数据库两个角度进行讨论。 (2) 从用户的观点看,组成数据库的逻辑成分称为数据库对象,SQL Server数据库由存放数据的表以及支持这些数据的存储、检索、安全性和完整性的对象所组成。 SQL Server的数据库对象包括表(table)、视图(view)、索引(index)、存储过程(stored procedure)、触发器(trigger)等。 SQL Server的数据库有两类: 一类是系统数据库; 另一类是用户数据库。SQL Server在安装时创建4个系统数据库: master、model、msdb和tempdb。用户数据库是由用户创建的数据库。 (3) 从系统的观点看,数据库是存储逻辑数据库的各种对象的实体,它们存放在计算机的存储介质中,从这个角度称数据库为物理数据库。SQL Server 的物理数据库架构包括页和区、数据库文件、数据库文件组等。 页和区是SQL Server数据库的两个主要数据存储单位。每页的大小是8KB,每8个连接的页组成一个区,区的大小是64KB。 SQL Server采用操作系统文件来存放数据库,使用的数据库文件有主数据文件、辅助数据文件、日志文件3类。 SQL Server提供了两类文件组: 主文件组和用户定义文件组。 (4) 使用SQL Server Management Studio的图形用户界面创建SQL Server数据库包括创建数据库、修改数据库、删除数据库。 (5) 使用TSQL语句创建SQL Server数据库包括使用CREATE DATABASE语句创建数据库、使用ALTER DATABASE语句修改数据库、使用DROP DATABASE语句删除数据库。 习题3 一、 选择题 1. 在SQL Server中创建用户数据库,其主数据文件的大小必须大于。 A. master数据库的大小B. model数据库的大小 C. msdb数据库的大小D. 3MB 2. 在SOL SeIver中,如果数据库tempdb的空间不足,可能会造成一些操作无法进行,此时需要扩大tempdb的空间。下列关于扩大tempdb空间的方法,错误的是。 A. 手工扩大tempdb中某数据文件的大小 B. 设置tempdb中的数据文件为自动增长方式,每当空间不够时让其自动增长 C. 手工为tempdb增加一个数据文件 D. 删除tempdb中的日志内容,以获得更多的数据空间 3. 在SQL server中创建用户数据库,实际就是定义数据库所包含的文件以及文件的属性。下列不属于数据文件属性的是。 A. 初始大小B. 物理文件名 C. 文件结构D. 最大大小 4. SQL Server数据库是由文件组成的。下列关于数据库所包含的文件的说法中,正确的是。 A. 一个数据库可包含多个主数据文件和多个日志文件 B. 一个数据库只能包含一个主数据文件和一个日志文件 C. 一个数据库可包含多个辅助数据文件,但只能包含一个日志文件 D. 一个数据库可包含多个辅助数据文件和多个日志文件 5. 在SQL Server系统数据库中,存放用户数据库公共信息的是。 A. masterB. modelC. msdbD. tempdb 二、 填空题 1. 从用户的观点看,组成数据库的称为数据库对象。 2. SQL Server的数据库对象包括表、、索引、存储过程、触发器等。 3. SQL Server 的物理数据库架构包括页和区、、数据库文件组等。 4. SQL Server数据库的每个页的大小是8KB,每个区的大小是。 5. SQL Server使用的数据库文件有主数据文件、辅助数据文件、3类。 三、 问答题 1. SQL Server有哪些数据库对象? 2. SQL Server数据库中包含哪几种文件? 3. 简述使用SQL Server Management Studio的图形用户界面创建SQL Server数据库包含的内容。 4. 使用TSQL语句创建数据库包含哪些语句? 四、 应用题 1. 使用图形用户界面创建mydb数据库,主数据文件为mydb.mdf,初始大小为7MB,增量为15%,最大大小为150MB; 日志文件为mydb_log.ldf,初始大小为1MB,增量为8%,增长无限制。 2. 使用TSQL语句创建mydb数据库,主数据文件的初始大小、增量、增长和日志文件初始大小、增量、增长与第1题相同。 实验3创建数据库 1. 实验目的及要求 (1) 理解SQL Server数据库的基本概念。 (2) 掌握使用TSQL语句创建数据库、修改数据库、删除数据库的命令和方法,具备编写和调试创建数据库、修改数据库、删除数据库的代码的能力。 2. 验证性实验 使用TSQL语句创建商店实验数据库storeexpm,数据库storeexpm在实验中多次用到,主数据文件为storeexpm.mdf,初始大小为5MB,增量为1MB,增长无限制; 日志文件为storeexpm_log.ldf,初始大小为1MB,增量为10%,增长无限制。 (1) 创建数据库storeexpm。 CREATE DATABASE storeexpm ON ( NAME='storeexpm', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA\storeexpm.mdf', SIZE=5MB, MAXSIZE=UNLIMITED, FILEGROWTH=1MB ) LOG ON ( NAME='storeexpm_log', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA\storeexpm_log.ldf', SIZE=1MB, MAXSIZE=UNLIMITED, FILEGROWTH=10% ) (2) 修改数据库storeexpm,首先增加数据文件storeexpmadd.ndf,再删除数据文件storeexpmadd.ndf。 ALTER DATABASE storeexpm ADD FILE ( NAME = 'storeexpmadd', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MICSQLSERVER\MSSQL\DATA\storeexpmadd.ndf', SIZE=10MB, MAXSIZE=150MB, FILEGROWTH=2MB ) ALTER DATABASE storeexpm REMOVE FILE storeexpmadd (3) 删除数据库storeexpm。 DROP DATABASE storeexpm 3. 设计性实验 使用TSQL语句创建图书借阅实验数据库librarypm,主数据文件为librarypm.mdf,初始大小为10MB,增量为10%,最大大小为200MB; 日志文件为librarypm_log.ldf,初始大小为2MB,增量为1MB,最大大小为50MB。 (1) 创建数据库librarypm。 (2) 修改数据库librarypm,首先增加数据文件librarypmbk.ndf和日志文件librarypmbk_log.ldf,再删除数据文件librarypmbk.ndf和日志文件librarypmbk_log.ldf。 (3) 删除数据库librarypm。 4. 观察与思考 (1) 在数据库storeexpm已存在的情况下,使用CREATE DATABASE语句创建数据库library,查看错误信息。怎样避免数据库已存在又再创建的错误? (2) 能够删除系统数据库吗?