970 likes | 1.11k Views
第四章 数据库管理和使用. 本章主题. 数据库是什么?数据库由什么构成?它存储在何处? 如何定义系统的类型,是关系的还是分析的? 如何通过 SSMS 、向导或查询编辑器窗口创建数据库 如何在查询编辑器窗口设置数据库选项 如何查看数据库的细节 如何用 SSMS 和查询编辑器窗口修改、移除、分离数据库. 数据库管理和使用. 数据库是表的集合,含有数据和一些其他的对象,如视图、索引、存储过程、用户自定义函数和触发器等。因此,对数据库的管理是一项很重要的任务。本章将从 SQL Server 2005 数据库的管理和使用方法讲起,主要包括:
E N D
本章主题 • 数据库是什么?数据库由什么构成?它存储在何处? • 如何定义系统的类型,是关系的还是分析的? • 如何通过SSMS、向导或查询编辑器窗口创建数据库 • 如何在查询编辑器窗口设置数据库选项 • 如何查看数据库的细节 • 如何用SSMS和查询编辑器窗口修改、移除、分离数据库
数据库管理和使用 • 数据库是表的集合,含有数据和一些其他的对象,如视图、索引、存储过程、用户自定义函数和触发器等。因此,对数据库的管理是一项很重要的任务。本章将从SQL Server 2005数据库的管理和使用方法讲起,主要包括: • SQL Server 2005数据库基础和系统数据库、示例数据库介绍。 • 使用Management Studio创建、修改和删除数据库。 • 使用T-SQL创建、修改和删除数据库。 • 分离与附加数据库。 • 数据库的备份与还原。 • 通过本章学习,读者可以掌握数据库管理的基本操作。
数据文件 日志文件 A B 数据库的存储结构 文件组 D C 第一节 基本概念
(一) 数据文件 • 在数据库中,文件是数据库物理存储的概念,每个SQL Server 2005 数据库最少包括两个文件:一个数据文件和一个日志文件。数据文件里包含数据和对象,如表、索引、视图和存储过程等。 • 数据文件,包括主要数据文件(Primary)、次要数据文件(Secondary)。 • 主要数据文件。主要数据文件是数据库的起点,指向数据库中文件的其它部分。它包含有数据库的启动信息和数据库中其它文件的指针。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是“.mdf”。 • 次要数据文件。次要数据文件包含除主要数据文件外的所有数据文件。主要包括用户定义的用于存储用户数据的文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件,它们可以通过存放在不同的存储器上来存储数据。另外,如果数据库超过了单个Windows 文件的最大大小,可以使用次要数据文件,这样数据库就能继续增长。次要数据文件的推荐文件扩展名是“.ndf”。
(二) 日志文件 在数据库中,日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是“.ldf”。 注意:默认情况下,数据和事务日志被放在同一个驱动器上的同一个路径下。这是为处理单磁盘系统而采用的方法。但是,在生产环境中,这可能不是最佳的方法。建议将数据文件和日志文件放在不同的磁盘上。
(三) 组文件 • 为了更好地实现数据库文件的组织,SQL Server 引入了文件组(filegroup)的概念。 • 每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。 • 通过设置文件组,可以有效地提高数据库的读写性能。例如,可以分别在三个磁盘驱动器上创建三个文件Data1.ndf、Data2.ndf 和Data3.ndf,然后将它们分配给文件组fgroup1。然后,可以明确地在文件组fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,从而提高了性能。 • SQL Server 2005提供了三种文件组类型。它们分别是主要文件组(Primary)、用户定义文件组(user_defined)和默认文件组(default)。 • 主要文件组。每个数据库有一个主要文件组,主要文件组包含主要数据文件和一些没有放入其它文件组的次要数据文件。所有系统表都被分配到主要文件组中。 • 用户定义文件组。由用户创建的文件组。用户在首次创建数据库或以后修改数据库时明确创建的任何文件组。 • 默认文件组。如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。
组文件 默认情况下,主要文件组是默认文件组,除非使用ALTER DATABASE语句进行了更改。系统对象和系统表属于PRIMARY文件组。 注意: (1)一个文件或文件组不能由多个数据库使用。例如,任何其他数据库都不能使用包含sales 数据库中的数据和对象的文件sales.mdf 和sales.ndf。 (2)一个文件只能是一个文件组的成员。 (3)日志文件不能属于任何文件组。 (4)被包含在文件组里的数据文件不会自动增长长度,除非整个文件组里所有的数据文件都已经被填充满。
(四) 数据库的存储结构 1.数据库的基本结构 数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。 (1)物理数据层。这是数据库的最内层,是物理存储设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。 (2)概念数据层。这是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。 (3)逻辑数据层。这是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。数据库不同层次之间的联系是通过映射进行转换的。
数据库的存储结构 2.数据库的存储结构 数据库的存储结构是指数据在物理存储设备上的存储方式,即数据的物理数据层。在数据库中数据存储采用页的存储方式,这些数据页包含了表中的行,其中: (1)每个数据页包含8KB的信息。每八个相连的页面称为一个扩展盘区。 (2)数据行不是以特定的顺序存储的,而且数据页也没有特定的顺序。 (3)在链接列表中数据页并不是链接的。 (4)当行插入到已满的数据页时,就会拆分数据页。 在数据存储结构的基础上,SQL Server采用两种方式访问数据: (1)扫描表中所有的数据页,称为“表扫描”,它会从表的起始处开始扫描,对表中的所有行从头到尾进行逐页扫描。 (2)使用索引。 使用索引检索数据的效率要较第一种方法要高一点,索引在后面的章节中将讲到。
第二节 SQL Server 2005的系统数据库与示例数据库 Master 数据库 Model 数据库 系统数据库 Msdb 数据库 Tempdb 数据库 Resource 数据库 示例数据库
(一) 系统数据库 在所有数据库中都有一组系统数据库。SQL Server 2005包含以下几个系统数据库:master、model、msdb、tempdb(和Resource数据库),如图4.1所示。而Resource数据库不可见,那是因为Resource数据库是只读数据库,它包含了SQL Server 2005 中的所有系统对象。SQL Server 系统对象(例如sys.objects)在物理上持续存在于Resource 数据库中,但在逻辑上,它们出现在每个数据库的sys 架构中。 在所有数据库中都有一组系统表,SQL Server使用这些系统表来维护数据库。系统表中存储了所有列的信息、所有用户的信息以及许多其他信息(即元数据)。不同于以往版本的SQL Server,在SQL Server 2005中,系统表的安全性有了改进和增强,系统表不再能直接访问,而只能通过视图访问,如图4.2所示“打开表”选项为灰色。也不能在系统数据库上定义触发器。 图4.1 系统数据库 图4.2系统表不能直接访问
(1) 隐藏系统数据库 鉴于系统数据库的重要性,用户可以在必要时隐藏SQL Server Management Studio中的系统数据库,具体步骤如下: (1)选择菜单栏中的【工具】|【选项】命令; (2)出现【选项】对话框,如图4.3所示,在左侧的【环境】|【常规】页中,选中【在对象资源管理器中隐藏系统对象】,再单击【确定】按钮; (3)这时会出现警告对话框,如图4.4所示,提示SQL Server Management Studio必须重新启动更改才会生效,单击【确定】按钮; (4)关闭并重新启动SQL Server Management Studio,系统数据库已经被隐藏。 图4.4 提示对话框 图4.3 【选项】对话框
(2) 系统数据库的各种类型 1.master数据库 master 数据库记录SQL Server 系统的所有系统级信息。这包括实例范围的元数据(例如登录帐户)、端点、链接服务器和系统配置设置。此外,master 数据库还记录了所有其他数据库的存在、数据库文件的位置以及SQL Server 的初始化信息。因此,如果master 数据库不可用,则SQL Server 无法启动。在SQL Server 2005 中,系统对象不再存储在master 数据库中,而是存储在Resource 数据库中(后面将提到Resource 数据库)。 使用master 数据库时,由于master数据库的重要性,要尽量注意执行以下的操作,防止数据库崩溃: 始终有一个master 数据库的当前备份可用。 执行下列操作后,尽快备份master 数据库: ①创建、修改或删除任意数据库 ②更改服务器或数据库的配置值 ③修改或添加登录帐户 不要在master 中创建用户对象。否则,必须更频繁地备份master。 不要针对master数据库将TRUSTWORTHY 选项设置为ON(TRUSTWORTHY选项的作用是要求设置管理员权限)。
系统数据库的各种类型 2.model数据库 model数据库用作在SQL Server实例上创建的所有数据库的模板。因为每次启动SQL Server时都会创建tempdb,所以model数据库必须始终存在于SQL Server系统中。当发出CREATE DATABASE语句时,将通过复制model数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分。 如果修改model数据库,之后创建的所有数据库都将继承这些修改。就好像建立了一个模板,在以后创建数据库的时候都将继承这些模板的基本属性。 3.msdb数据库 msdb数据库由SQL Server代理用于计划警报和作业,也可以由其他功能(如Service Broker和数据库邮件)使用。
系统数据库的各种类型 • 4.tempdb数据库 • tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用,并可用于保存下列各项: • 显式创建的临时用户对象,如全局或局部临时表、临时存储过程、表变量或游标。 • SQL Server 2005数据库引擎创建的内部对象,例如,用于存储假脱机或排序的中间结果的工作表。 • 由使用已提交读(使用行版本控制隔离或快照隔离事务)的数据库中数据修改事务生成的行版本(行版本用于在修改行中存储的值时维护各个阶段的值,包括当前值、原始值和默认值。例如,在修改了行中的某列后,该行的行状态将为Modified,并且有两个行版本:Current(包含行的当前值)和Original(包含列修改前行的值))。 • 由数据修改事务为实现联机索引操作、多个活动的结果集(MARS) 以及AFTER 触发器等功能而生成的行版本。 • tempdb中的操作是最小日志记录操作。这将使事务产生回滚。每次启动SQL Server时都会重新创建tempdb,从而在系统启动时总是保持一个干净的数据库副本。在断开联接时会自动删除临时表和存储过程,并且在系统关闭后没有活动连接。因此tempdb中不会有什么内容从一个SQL Server会话保存到另一个会话。不允许对tempdb进行备份和还原操作。
系统数据库的各种类型 5.Resource数据库 Resource 数据库是只读数据库,它包含了SQL Server 2005 中的所有系统对象。SQL Server 系统对象(例如sys.objects)在物理上持续存在于Resource 数据库中,但在逻辑上,它们出现在每个数据库的sys 架构中。Resource 数据库不包含用户数据或用户元数据。 Resource 数据库可比较轻松快捷地升级到新的SQL Server 版本。在早期版本的SQL Server 中,进行升级需要删除和创建系统对象。由于Resource 数据库文件包含所有系统对象,因此,现在仅通过将单个Resource 数据库文件复制到本地服务器便可完成升级。同样,回滚Service Pack 中的系统对象更改只需使用早期版本覆盖Resource 数据库的当前版本。 Resource 数据库存储在数据库服务器的物理文件名是mssqlsystemresource.mdf 和mssqlsystemresource.ldf。默认情况下,这些文件位于<驱动器>:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ 这个位置。每个SQL Server实例都具有一个(也是唯一的一个)关联的mssqlsystemresource.mdf 文件,并且实例间不共享此文件。
(二) 示例数据库 在Microsoft SQL Server 2000中微软为用户提供了Northwind示例数据库和Pubs示例数据库。让用户在学习SQL Server的时候能够通过示例数据库的使用快速的掌握数据库的使用方法。在Microsoft SQL Server 2005中,微软引入了Adventure Works Cycles 公司。AdventureWorks、AdventureWorksDW是SQL Server 2005中的示例数据库(如果在安装过程中已选择了安装它们的话)。这些数据库基于一个自行车生产公司,以一种简单的、易于理解的方式来展示SQL Server 2005的新功能,如Reporting Services、 CLR(公共语言运行时)特性以及许多其他特性。尽管示例数据库不是为新手准备的,但在学习完基础知识后,使用它们也不会有困难。 以下是微软公司对示例数据库的说明:Adventure Works Cycles,是AdventureWorks 示例数据库所基于的虚构公司,是一家大型跨国生产公司。公司生产金属和复合材料的自行车,产品远销北美、欧洲和亚洲市场。公司总部设在华盛顿州的伯瑟尔市,拥有299 名雇员,而且拥有多个活跃在世界各地的地区性销售团队。
示例数据库 • 在2000 年,Adventure Works Cycles 购买了位于墨西哥的小型生产厂Importadores Neptuno。Importadores Neptuno 为Adventure Works Cycles 产品生产多种关键子组件。这些子组件将被运送到伯瑟尔市进行最后的产品装配。2001 年,Importadores Neptuno 转型成为专注于旅行登山车系列产品的制造商和销售商。 • 实现一个成功的财务年度之后,Adventure Works Cycles 希望通过以下方法扩大市场份额:专注于向高端客户提供产品、通过外部网站扩展其产品的销售渠道、通过降低生产成本来削减其销售成本。 • 在SQL Server 2005中,示例数据库包括: • AdventureWorks 示例OLTP 数据库 • AdventureWorksDW 示例数据仓库 • AdventureWorksAS 示例Analysis Services 数据库 • 这些数据库用在SQL Server 联机丛书的代码示例以及随产品一起安装的配套应用程序和代码示例中。
示例数据库 默认情况下,SQL Server 2005 中不安装AdventureWorks (OLTP)、AdventureWorksDW(数据仓库)、AdventureWorksAS(Analysis Services) 示例数据库以及附带示例。可以从Microsoft下载中心下载这些示例和示例数据库,或者在安装过程中或安装完成后按照以下过程安装示例数据库和示例。 (1)运行SQL Server 2005安装程序; (2)在“要安装的组件”页上选择【工作站组件、联机丛书和开发工具】,如图4.5; (3)单击【高级】,然后展开【文档、示例和示例数据库】,如图4.6; (4)选择【示例代码和应用程序】,如图4.7; (5)展开【示例数据库】,然后选择要安装的示例数据库。
示例数据库 图4.5工作站组件、联机丛书和开发工具 图4.6 文档、示例和示例数据库 图4.7 示例代码和应用程序
第三节 使用Management Studio管理数据库 Microsoft SQL Server 2005为用户提供了强大的图形界面工具Management Studio,通过它,用户可以方便的完成对数据库的创建、修改和删除等操作。下面介绍如何使用Management Studio创建数据库。 创建数据库 修改数据库 删除数据库 数据库对象介绍
(一) 创建数据库 在Microsoft SQL Server Management Studio中,可以使用图形工具创建数据库,具体步骤如下: (1)依次选择【开始】|【程序】|【Microsoft SQL Server 2005】|【SQL Server Management Studio】,打开SQL Server Management Studio窗口,点击【连接】按钮,连接到目标服务器。 (2)连接上目标服务器以后,在界面左边的【对象资源管理器】窗口中的【数据库】节点上单击鼠标右键,弹出快捷菜单,选择【新建数据库】命令。 (3)出现【新建数据库】窗口,如图4.8所示,在【数据库名称】栏输入要创建的数据库名称,在这里以Student命名数据库。在【所有者】文本框中输入数据库的所有者(注:可以采用默认值,以当前登录账号为所有者;也可以点击【所有者】输入框右边的图标自行选择)。在【数据库文件】编辑框中的【逻辑名称】列输入文件名,在【初始大小】列设置文件初始值大小,在【自动增长】列设置自动增长值大小(当数据文件或日志文件满时,系统会根据此处的设置自动增大文件的容量)。
创建数据库 (4)在【路径】列设置文件的保存目录,单击【路径】列后的按钮,出现【定位文件夹】对话框,选择保存文件的目录。如果不需要改变以上各列的设置,请保持其默认值(注:系统默认值为SQL Server安装路径)。 (5)在【新建数据库】窗口中选择【选择页】中的【选项】,如图4.9所示,设置数据库的配置参数。 图4.8 【新建数据库】窗口
创建数据库 (6)可以根据系统的要求,添加新的文件组,步骤如下:点击【新建数据库】窗口的【文件组】选项,单击【添加】按钮,就会增加一个文件组,在【名称】列输入文件组的名称,如图4.10所示。新创建的文件组包含0个文件。 图4.9 【选项】页面
创建数据库 (7)如果要添加新的文件,按照以下步骤执行:单击【添加】按钮,在【数据库文件(F)】框中会增加一条数据文件,在【逻辑名称】列中输入数据文件的名称。单击【文件组】,会出现在第6步创建的文件组,默认为主要文件组(Primary),如图4.11所示。 图4.10 【文件组】页面
创建数据库 (8)所有属性设置完毕以后,单击【确定】按钮,系统开始创建数据库,创建成功以后,在【对象资源管理器】中可以看到创建成功的数据库Student。 图4.11 新增数据库文件
(二) 修改数据库 数据库在创建好以后,有时并不能满足用户的需求,这时就需要对数据库进行修改。这一节将讲述怎样用Management Studio修改数据库,调整数据库的基本属性,包括数据库参数选项配置、数据库扩大、文件及文件组管理、更改数据库所有者等。 更改数据库所有者 添加和删除数据文件和日志文件 收缩数据库 扩大数据库
(1) 更改数据库所有者 要修改Student数据库的文件属性,首先在【对象资源管理器】中鼠标右击【Student】,选择【属性】,弹出【数据库属性】窗口,如图4.12,点击【所有者】右边的按钮,出现【选择数据库所有者】窗口,如图4.13,点击【浏览】按钮,出现图4.14所示窗口,选择连接数据库的用户以后,点击【确定】按钮,达到更改数据库所有者的目的。 图4.12 数据库属性窗口
更改数据库所有者 图4.13 选择数据库所有者窗口 图4.14 查找对象窗口
(2) 扩大数据库 随着数据库中数据的增加,数据库中的数据文件和日志文件的空间有可能被占满,此时就需要为数据文件和日志文件分配更多的空间。SQL Server 2005可以根据创建数据库时设定的增长参数自动扩大数据文件和日志文件。当然,用户也可以手动调整数据库数据文件和日志文件的大小。下面使用Management Studio来手动扩大数据库。具体步骤如下: 图4.15 更改Student数据文件的自动增长设置 (1)在【对象资源管理器】中鼠标右击【Student】,选择【属性】,弹出【数据库属性】窗口。 (2)在【数据库属性】窗口中选择【文件】选项,选择要修改的【数据库文件(F)】中【自动增长】列的按钮,出现如图4.15所示的对话框(注:这里修改Student数据文件)。 (3)更改【文件增长】选项:可以把数据库数据文件的增长方式选择为按百分比或者按照MB增长;更改【最大文件大小】选项:可以把文件设置为固定大小,也可以设置为无限制增长。设置好以后,单击【确定】按钮。
(3) 收缩数据库 SQL Server 2005允许用户通过压缩数据库把不使用的空间释放出来,数据文件和日志文件都可以缩小。用户可以手工缩小数据文件,也可以自动周期性缩小数据库文件。 数据库的缩小是有限制的,数据库不会缩小到小于初始创建时的数据库大小,例如,一个初始大小为10MB的数据库,现在容量为100MB,那么以后在缩小数据库的时候最小只能到10MB。 但是可以使用DBCC SHRINKFILE语句可以把单个的数据文件压缩至比初始值还小。这个操作只能分别对每个数据文件单独操作,不能对整个数据库操作。 日志文件的收缩受到文件边界的限制,虚拟日志文件的大小决定可收缩的程度,日志文件不会缩小到小于日志文件的初始大小。在SQL Server 2005中,可以使用DBCC SHRINKDATABASE 或者DBCC SHRINKFILE语句来压缩日志文件,但在操作前,要把需要缩小的日志文件的虚拟日志文件设置为非活动状态。
收缩数据库 使用Management Studio缩小数据库的操作步骤如下: (1)在【对象资源管理器】中鼠标右击“Student”数据库,选择【任务(T)】|【收缩(S)】,如图4.16所示。 (2)在图4.16中,如果要对整个数据库进行收缩,可选择子菜单中的【数据库(D)】命令,出现如图4.17所示的对话框。选择图中【收缩操作】下的复选框,激活调节框,就可以根据需要调节最大可用空闲空间,单击【确定】按钮完成对数据库的收缩操作。 图4.16 收缩数据库和文件
收缩数据库 图4.17 【收缩数据库】对话框 (3)如果要对数据库文件进行收缩,可以选择子菜单中的【文件(F)】命令,出现如图4.18所示的对话框。按照图中的相应的收缩方法,对文件进行收缩操作。完成后单击【确定】按钮完成对文件的收缩操作。
收缩数据库 (4)除了上面介绍的数据库收缩方法以外,SQL Server 2005还为用户提供了自动收缩数据库的方法。在数据库的属性页中将【自动收缩】选项设置为“True”即可。如图4.19所示。 图4.18 【收缩文件】对话框
收缩数据库 图4.19 设置数据库自动收缩功能
(4) 添加和删除数据文件和日志文件 在SQL Server 2005中,用户可以通过添加数据文件和日志文件扩展数据库,也可以通过删除数据文件和日志文件来缩小数据库。添加文件在前面的内容中已经讲过,相对比较容易,而删除文件相对比较复杂。删除数据文件和日志文件时要求它们必须是空文件。因此删除数据文件时需将数据转移到其它文件组的数据文件中去。而日志文件不能转移,要清除掉非活动日志,必须删除日志或者备份日志,当日志文件为空时,就可以删除此日志文件了。
添加和删除数据文件和日志文件 使用Management Studio完成数据文件、日志文件添加、删除的操作步骤如下: (1)采用前面的方法打开【数据库属性】对话框。 (2)如果是添加文件,可单击【添加】按钮,出现一个如图4.20所示的界面,在【数据库文件】列表中,填充相应的字段就可以添加新的数据文件或者是日志文件。如果要删除文件,可在【数据库文件】列表中选择需要删除的文件,点击【删除】按钮就可以了。 图4.20 添加文件 (3)如果要对文件组进行操作,选择【数据库属性】页面左边的【文件组】选项,完成对文件组的添加、删除操作。
(三) 删除数据库 当数据库不再需要时,可以删除数据库。但系统数据库不能够删除。在删除数据库后需要及时备份master数据库,因为删除操作会更改master数据库的内容。使用Management Studio删除数据库的具体步骤如下: (1)在【对象资源管理器】窗口中选中需要删除的数据库,点击鼠标右键,弹出菜单,选择【删除】命令。 (2)出现【删除对象】对话框,如图4.21所示。通过选择复选框决定是否删除数据库备份和还原历史纪录信息,以及关闭现有连接。 图4.21 【删除对象】对话框 (3)单击【确定】按钮,完成数据库删除操作。
(四) 数据库对象介绍 在SQL Server 2005中,数据库对象定义了数据库内容的结构。常见的数据库对象包括: 表(Table) 数据库中的表与日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于唯一地确定一条记录。 索引(Index) 索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。 视图(View) 视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,保存的是一条查询命令,在数据库中并不实际存在。视图中的数据是由查询数据库表产生的,它可以限制用户只能看到和修改的他有权看的数据,从而控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。
数据库对象介绍 图表(Diagram) 在SQL Server中图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。 缺省值(Default) 缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。 规则(Rule) 规则是对数据库表中的数据信息进行限制,常用于描述企业的业务规则。比如:@hire_date>='1980-1-1' and @hire_date<=getdate()表示需要的雇佣日期在1980年1月1日到现在之间。 触发器(Trigger) 触发器是一个用户定义的SQL 事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动触发执行。 存储过程(Stored Procedure) 存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。 用户(User) 所谓用户就是有权限访问数据库的人。
第四节 使用T-SQL管理数据库 前面介绍了用Management Studio管理数据库,下面介绍如何使用T-SQL命令来管理数据库。 修改数据库 创建数据库 删除数据库
(一) 创建数据库 使用Transact-SQL语句创建数据库的语法格式如下: [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ] ) [ ,...n ] } <filegroup> ::= { FILEGROUP filegroup_name [ DEFAULT ] <filespec> [ ,...n ] } <external_access_option> ::= { DB_CHAINING { ON | OFF } | TRUSTWORTHY { ON | OFF } } CREATE DATABASE database_name [ ON [ PRIMARY ] [ <filespec> [ ,...n ] [ , <filegroup> [ ,...n ] ] [ LOG ON { <filespec> [ ,...n ] } ] ] [ COLLATE collation_name ] [ WITH <external_access_option> ] ] [;] <filespec> ::= { ( NAME = logical_file_name , FILENAME = 'os_file_name' [ , SIZE = size [ KB | MB | GB | TB ] ]
创建数据库 • 对创建数据库语句的部分参数说明如下: • database_name:新数据库的名称。数据库名称在SQL Server 的实例中必须唯一,并且必须符合标识符规则。最多可以包含128 个字符。 • ON:指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。当后面是以逗号分隔的、用以定义主文件组的数据文件的<filespec> 项列表时,需要使用ON。主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的<filegroup> 项列表(可选)。 • PRIMARY:用来定义主要数据文件。一个数据库只能有一个主文件。 • LOG ON:指定显式定义用来存储数据库日志的磁盘文件(日志文件)。LOG ON 后跟以逗号分隔的用以定义日志文件的<filespec> 项列表。如果没有指定LOG ON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的25% 或512 KB,取两者之中的较大者。不能对数据库快照指定LOG ON。
创建数据库例题 例4-1:在服务器上建立一个数据库MyDatabase,包含3个40MB的数据文件,2个20MB的日志文件,和一个文件组。文件组包含两个文件,文件存放路径为“F:\data”。 打开Management Studio建立和目标服务器的连接以后,单击工具栏上的【新建查询】按钮,在查询编辑器中输入如下语句:(其中“――”符号后的中文语句为注释语句,可以不用录入,但是建议在编写代码时学会编写注释语句) USE master; GO -- 判断是否存在名称为MyDatabase的数据库,如果有,则删除; IF DB_ID (N'Mydatabase') IS NOT NULL DROP DATABASE Mydatabase; GO CREATE DATABASE Mydatabase
创建数据库例题 ON PRIMARY ( NAME = mydb1, FILENAME = 'F:\data\mydb1.mdf', SIZE = 40MB, MAXSIZE = 100, FILEGROWTH = 15% ), FILEGROUP mydbgroup ( NAME = mydb2, FILENAME = 'F:\data\mydb2.ndf', SIZE = 40MB, MAXSIZE = 100, FILEGROWTH = 5 ) ( NAME = mydb3, FILENAME = 'F:\data\mydb3.ndf', SIZE = 40MB, MAXSIZE = 100, FILEGROWTH = 5 ) LOG ON ( NAME = mydb_log1, FILENAME = 'F:\data\mydb_log1.ldf', SIZE = 20MB, MAXSIZE = 50, FILEGROWTH = 5 ), ( NAME = mydb_log2, FILENAME = 'F:\data\mydb_log2.ldf', SIZE = 20MB, MAXSIZE = 50, FILEGROWTH = 5 ); GO
创建数据库例题 单击按钮,就会完成数据库的创建,如图4.22,创建的数据库存放在指定的位置,如图4.23。 图4.22 创建数据库
创建数据库例题 图4.23 存放在相应位置的数据库文件
(二) 修改数据库 • 1.更改数据库所有者 • 数据库的当前使用者可以更改为连接上数据库的任何用户。但是不能更改master、model和tempdb或者分发数据库的所有者。使用Transact-SQL语言更改数据库所有者的语法如下: • sp_changedbowner [ @loginame = ] 'login' • [ , [ @map= ] remap_alias_flag ] • 参数说明: • [ @loginame = ] 'login':当前数据库的新所有者的登录ID。login 的数据类型为sysname,无默认值。login 必须是一个已有的SQL Server 登录名,或者是Microsoft Windows 用户。如果login 已通过数据库内现有的别名或用户安全帐户访问了数据库,则该登录名不能成为当前数据库的所有者。为了避免发生上述情况,请首先删除当前数据库内的别名或用户。 • [ @map = ] remap_alias_flag:值true 或false,它指示已分配给旧的数据库所有者(dbo) 的现有别名是映射到了当前数据库的新所有者,还是已被删除。remap_alias_flag 的数据类型为varchar(5),默认值为 NULL。这指示旧的dbo 的任意现有别名都映射到当前数据库的新所有者。false 指示删除旧的数据库所有者的现有别名。 • 返回代码值:0(成功)或1(失败)
修改数据库例题 例4-2:将登录名Albert 作为当前数据库的所有者,并映射到已分配给旧的数据库所有者的Albert 现有别名。 EXEC sp_changedbowner 'Albert'