第1页:第4章数据库的管理
第4章数据库的管理
第2页:主要内容
主要内容
- SQL Server 2005系统数据库
- 数据库的创建与修改
- 数据库的附加与分离
- 数据库的导入与导出
第3页:SQL Server 2005系统数据库
SQL Server 2005系统数据库
- master
- model
- msdb
- tempdb
- resource
第4页:master系统数据库
master系统数据库
- master数据库记录了SQL Server 2005系统的所有系统级的信息,包括元数据(例如登录帐户)、端点、链接服务器和系统配置设备等,它还记录所有其他数据库的信息,如数据库文件的位置、初始化的信息等。
- 因此,如果master数据库被破坏或出现故障不可用,则SQL Server无法启动。
第5页:model系统数据库
model系统数据库
- model数据库为模板数据库,向用户提供各种模板。
- 如果修改了model数据库中的信息,那么在以后创建的新数据库中都会继承model数据的修改。
- 因此,可以通过model数据库修改的权限、数据库选项或为model数据库添加数据表、函数、存储过程等来设置以后要创建的新数据库的属性。
第6页:msdb系统数据库
msdb系统数据库
- msdb数据库是SQL Server代理用来安排警报和作业、记录SQL Server代理程序服务项目和操作员信息等的数据库,有关数据库备份和还原的记录也会写在该数据库中。
第7页:tempdb系统数据库
tempdb系统数据库
- tempdb数据库为保存临时或中间结果提供工作空间。
- 它是连接到SQL Server实例的所有用户都可以使用的全局资源,它保存所有临时表和临时存储过程,包含了所有的暂存数据表与暂存的预存程序。
- Tempdb临时数据库中可以保存的临时数据有:临时表、临时存储过程、数据库表变量、游标、排序的中间结果工作表、索引操作与触发器操作而生成的数据等。
- 服务器实例关闭时,将永久删除tempdb数据库中的数据。由于每次SQL Server 2005启动时都会重建tempdb数据库,所以tempdb数据库也会继承model数据库的对象。
第8页:resource系统数据库
resource系统数据库
- resource数据库是SQL Server 2005中新增加的数据库,它是一个只读数据库,其中包含了SQLServer 2005中所有系统对象。
- resource数据库与master数据库的区别在于master数据库存入的是系统级的信息而不是所有系统对象。resource数据库存放的这些系统对象在物理上是存在于resource数据库中,但在逻辑上它们却出现在每个数据库的sys架构中。
- 因此,resource数据库在Microsoft SQL ServerManagement Studio的对象资源管理器中是看不到的。
第9页:数据库的创建与修改
数据库的创建与修改
第10页:预备知识
预备知识
- 数据库的命名规则
- 数据库权限
- 数据库的所有者
- 数据库的上限量
- 数据库的文件及文件组
- 数据库的状态
第11页:数据库的命名规则
数据库的命名规则
- 数据库的命名规则取决于数据库兼容的级别。一般来说,SQL Server 7.0使用的是70级别,SQLServer 2000使用的是80级别,SQL Server 2005使用的是90级别。
- 数据库级别可以用存储过程sp_helpdb来查询。
第12页:兼容级别的设置
兼容级别的设置
- 名称长度不能超过128个字符,本地临时表的名称不能超过116个字符。
- 名称的第一个字符必须是英文字母、中文(或其他语言的字母)、下划线、符号“@”或“#”。
- 除第一个字符之外的其他字符,还可以包括数字、$。
- 名称中间不允许有空格或其他特殊字符。
- 名称不能是保留字。
第13页:错误的数据库命名
错误的数据库命名
123456My dbDb1&db2Tabledatabase
第14页:注意:由于在T-SQL中
注意:由于在T-SQL中
- 由于在T-SQL中,“@”表示局部变量,“@@”表示全局变量,“##”表示全局临时对象,所以不建议用这些符号作为数据库名称的开头。
- 虽然在SQL Server 2005中,保留字区分大小写,但也不建议用改过大小写的保留字作为数据库名。
第15页:权限:要想创建数据库
权限:要想创建数据库
(2)权限 要想创建数据库,必须至少拥有: Create database Create any database或alter any database的权限。
第16页:数据库的所有者
数据库的所有者
- 所有者是对该数据库具有完全操作的用户,默认的该数据库的所有者为创建该数据库的用户。
- 任何可以访问到SQL Server的连接的用户(可以是SQL Server登录帐户或Windows用户)都可以成为数据库的所有者。
第17页:数据库的上限
数据库的上限
- 在同一个实例中,最多可以创建32767个数据库,一旦超过这个数量,将不能再创建新的数据库。
第18页:数据库文件
数据库文件
- 每个SQL Server 2005的数据库至少包含二个文件:一个数据文件(.mdf)和一个日志文件(.ldf)。
第19页:数据库的数据文件中包
数据库的数据文件中包
- 数据库的数据文件中包含数据库的数据和对象,如表、视图、索引等。数据文件可以分为主要数据文件和次要数据文件两种。
第20页:数据文件
数据文件
- 每个数据库有且仅有一个主要数据文件,主要数据文件的扩展名为.mdf。主要数据文件包含数据库的启动信息,并指向数据库中的其它文件。
- 次要数据文件是可选的,一般是用户自定义,扩展名一般为.ndf。
第21页:用户数据和对象可以存、如果数据库很大
用户数据和对象可以存、如果数据库很大
- 用户数据和对象可以存储在主要数据文件和次要数据文件中,使用次要文件可以将数据分散在多个磁盘上以提高读取速度。
- 如果数据库很大,大到单个数据文件大小超过单个Windows文件的最大限量时,就必须使用次要数据文件,从而可以让数据库继续增长。
第22页:日志文件
日志文件
- 数据库的日志文件用于存储数据库的事务日志信息,事务日志是数据库的黑匣子,它记录了数据库的操作轨迹,包含了可用于恢复数据库的日志信息。
- 日志文件扩展名为.ldf,每个数据库至少有一个日志文件,日志文件也分主要日志文件和次要日志文件,但所有日志文件的扩展名都为.ldf。
第23页:文件组
文件组
- 文件组主要用于数据库文件的集中管理,通常可以将数据库文件集中起来放在文件组中,每个文件组有一个组名。文件组也有三种类型:主文件组、用户定义文件组、默认文件组。
- 每个数据库都有一个主要文件组,该文件组包含主要数据文件和未放入其他文件组的所有次要文件。在创建数据库时,如果我们没有定义文件组,SQL Server 2005会建立主文件组,所有的系统表都分配在主文件组中,如果主文件组没有空间了,就不能向系统表添加新目录信息了。
- 用户定义文件组是指在创建或修改数据库时,用户创建的文件组。创建了用户文件组后,我们可以任意分配数据文件。如果用户定义的文件组被填满,那么只有该文件组的用户表会受影响。
第24页:建库方法
建库方法
第25页:用Management Studio建库
用Management Studio建库
第26页:数据库创建
数据库创建
- 启动SQL Server Management Studio,在“对象资源管理器”窗口中选择【数据库】,右击【数据库】,在弹出的快捷菜单中选择【新建数据库】。
- 在“新建数据库”对话框的【常规】选项卡中设置数据库名称、所有者、使用全文索引、数据库文件、初始大小、自动增长、路径。
- 如果要添加文件组的话,可以在【选择页】窗口中选择“文件组”选项卡,然后单击【添加】按钮添加文件组,在新添加了文件组之后,以后在【常规】选项卡中添加的新文件就可以选择新添加的文件组作为其所属组了。
- 完成所有设置和单击【确定】按钮。
第27页:
第28页:
第29页:
第30页:数据库的修改与删除
数据库的修改与删除
- 修改:
- 在Microsoft SQL Server Management Studio中右击需要修改的数据库名,选择“属性”命令。
- 删除:
- 在Microsoft SQL Server Management Studio中右击需要修改的数据库名,选择“删除”命令。
第31页:例1:小黄等同学想开发一个教学管理
例1:小黄等同学想开发一个教学管理
- 小黄等同学想开发一个教学管理系统,在开发之前,需要为开发小组创建一个数据库,以便开发人员创建相关的数据表和其他结构,数据库的名设定为:teachingData,要求将数据库存放在服务器的C盘“teaching management”目录下。
第32页:问题1
问题1
- 如果在完成数据库的创建之后,发现主数据库使用默认的1MB的自动增长方式太小,希望修改自动增长方式为2M,且需要添加次要数据文件teachingData02.ndf,其初始化大小也设置为2M,应该如何修改?
第33页:使用T-SQL命令
使用T-SQL命令
(2)使用T-SQL命令 创建数据库P82 修改数据库P83 只有数据库管到员或具有CREATE DATABASE权限的数据库所有者才有权执行ATER DATABASE语句。 在实际操作中,ALTER DATABASE一次只能修改一种参数 删除数据库 DROP DATABASE { database_name} [ ,...n ] } 其中,database_name为数据库名。
第34页:例2:新建数据库mytest1
例2:新建数据库mytest1
例2 新建一数据库mytest1,要求将数据文件存放在D盘test目录下,日志文件存放在C盘mytest目录下,并要求将数据库文件的初始大小为5M,数据库文件的自动增长率为10%,日志文件的最大尺寸为10M。create database mytest1onprimary(name=mytest1,filename=‘d:\test\mytest1.mdf', size=5MB,filegrowth=10%)log on(name=mytest1_log,filename=‘c:\mytest\mytest1_log.ldf',maxsize=10MB)
第35页:数据库的附加与分离
数据库的附加与分离
- 在开发项目时,数据库设计人员往往是在自己的计算机上设计数据库,设计完成后,可以用分离与附加的方法,先从自己计算机上将数据库分离出来,然后复制、附加到数据库服务器上。
- 数据库的分离与附加操作也有二种方法,图形界面操作方式和命令方式。
第36页:在图形界面下进行分离与附加操作
在图形界面下进行分离与附加操作
- 分离
- 在Microsoft SQL Server Management Studio的【对象资源管理器】中右击要分离的数据库名,选择【任务】|【分离】。
- 附加
- 在Microsoft SQL Server Management Studio的【对象资源管理器】中右击【数据库】,选择【附加…】。
第37页:例2:小黄在家里电脑上完成了老师规
例2:小黄在家里电脑上完成了老师规
- 小黄在家里电脑上完成了老师规定的操作练习,建立了数据库“teachingData”,他想将相关的文件复制到U盘,递交给老师,但在复制过程中系统弹出如下图所示提示框,不允许小黄复制文件,小黄将认为可能是因为SQL Server正在使用的缘故,因此将其关闭,但系统仍不允许小黄复制文件,问:小黄就如何操作才能复制文件并将文件提交给老师?
第38页:解决方案
解决方案
- 首先,小黄应按照数据库分离的方法将数据库“teachingData”分离,然后将数据库相关文件(包括日志文件)复制到U盘中,并将U盘中的文件提交给老师。
第39页:问题:小黄到了学校机房
问题:小黄到了学校机房
- 小黄到了学校机房,想先看看自己U盘中的数据库文件是否正确,他插上U盘,,连接SQLServer 2005服务器后打开“Microsoft SQLServer Management Studio”,刷新【对象资源管理器】,但在【对象资源管理器】始终找不到“teachingData”,因此无法打开数据库进行查看,问小黄该如何进行操作才能打开他的数据库并进行查看。
第40页:解决方案
解决方案
- 小黄可以将他U盘中的数据库文件复制到机房的电脑中去,然后,将数据库附加到服务器中,然后刷新【对象资源管理器】,即可看到数据库teachingData,如果要查看可以在【对象资源管理器】中右击teachingData,选择【属性】命令进行查看。
第41页:命令方式进行分离与附加操作
命令方式进行分离与附加操作
- 分离
- 调用系统过程sp_detach_db来分离数据库:sp_detach_db [ @dbname= ] 'dbname'[ ,[ @skipchecks= ]'skipchecks' ][ , [ @KeepFulltextIndexFile= ]'KeepFulltextIndexFile' ]
第42页:分离命令的参数介绍
分离命令的参数介绍
- @dbname = ] 'dbname'
- 要分离的数据库的名称。dbname的数据类型为sysname,默认值为NULL。
- [ @skipchecks = ] 'skipchecks'
- 指定跳过还是运行UPDATE STATISTIC。skipchecks的数据类型为nvarchar(10),默认值为NULL。要跳过UPDATE STATISTICS,请指定true。要显式运行UPDATE STATISTICS,请指定false。
- 默认情况下,执行UPDATE STATISTICS以更新有关Microsoft SQL Server2005 Database Engine中的表数据和索引数据的信息。对于要移动到只读媒体的数据库,执行UPDATE STATISTICS非常有用。
- [ @KeepFulltextIndexFile = ] 'KeepFulltextIndexFile'
- 指定在数据库分离操作过程中不会删除与正在被分离的数据库关联的全文索引文件。KeepFulltextIndexFile的数据类型为nvarchar(10),默认值为true。如果KeepFulltextIndexFile为NULL或false,则会删除与数据库关联的所有全文索引文件以及全文索引的元数据。
第43页:例如
例如
- 例如,可以通过以下命令分离数据库mytest1。sp_detach_db mytest1
第44页:附加数据库的两种方式
附加数据库的两种方式
- 调用系统过程sp_attach_db附加数据库
- 使用CREATE DATABASE附加数据库
第45页:调用系统过程
调用系统过程
- 要附加到该服务器的数据库的名称。该名称必须是唯一的。dbname的数据类型为sysname,默认值为NULL。
- [ @filename1= ] ' filename_n '
- 数据库文件的物理名称,包括路径。filename_n的默认值为NULL。最多可以指定16个文件名。参数名称从@filename1开始,一直增加到@filename16。文件名列表至少必须包括主文件。主文件中包含指向数据库中其他文件的系统表。该列表还必须包括在数据库分离之后移动的所有文件。
第46页:CREATE DATABASE附加
CREATE DATABASE附加
- 可以使用CREATE DATABASE命令中的FORATTACH参数来附加数据库.
- 例如,附加数据库mytest1的命令语句如下:create database mytest1on(filename=‘c:\test\mytest1.mdf'),(filename='d:\mytest\mytest1_log.ldf')for attach
第47页:数据的导入与导出
数据的导入与导出
- 数据的导入
- 指从其他数据源中把数据复制到SQL Server数据库中。
- 数据的导出
- 指从SQL Server数据库中把数据复制到其他数据源中。
- 其他数据源可以
- :同版本或旧版本的SQL Server、Excel、Access、通过OLEDB或ODBC来访问的数据源、纯文本文件等。
第48页:导入与导出
导入与导出
- 在“Microsoft SQL Server Management Studio”的【对象资源管理器】中右击要导入数据的数据库名(例如“teachingData”),选择【任务】|【导入数据】命令。
- 在“Microsoft SQL Server Management Studio”的【对象资源管理器】中右击要导出数据的数据库名(例如“teachingData”),选择【任务】|【导出数据】命令。
第49页:小黄在开发“教学管理系统”的数据
小黄在开发“教学管理系统”的数据
例:小黄在开发“教学管理系统”的数据库过程中,在SQL Server 2005创建了数据库teachingData,他想利用同类学校的课程信息表中的课程代码和课程名称,但该表是Access数据库文件coursedata.mdb中的表course,问:他应如何操作才能在他的teachingData使用该表?解决方案:小黄应使用“SQL Server导入导出向导”将Access数据库文件coursedata.mdb中的表course导入到他的teachingData中去。
第50页:小结:数据库的创建与修改
小结:数据库的创建与修改
小结 数据库的创建与修改 创建:CREATE DATABASE 修改:ALTER DATABASE 数据库的附加与分离 附加:CREATE DATABASE…FOR ATTACH 分离:SP_DETACH_DB 'filename'
第51页:作业:完成上机实验一
作业:完成上机实验一
作业完成上机实验一
本页以图示呈现,正文文字较少,建议对照原课件图片查看。
第52页:实验报告要求
实验报告要求
- 基本信息(课程名、实验名、班级、学号、姓名等)
- 实验目的(实验中要求掌握的知识点)
- 实验环境(所有设备、软件环境)
- 实验内容(题目、操作步骤、实验结果)
- 相关知识(实验内容中所涉及的相关知识)
- 实验小结(本次实验操作技巧、注意事项等实验心得)
第53页:实验报告提交要求
实验报告提交要求
- 每个学生提交文件
- 实验报告
- 文件命名学号姓名_n说明
- n为第几次实验,学号必须是完整的学号例:08102040301曹伟东_1