第四章数据库管理和使用内容摘要:

删除数据文件和日志文件 37 在 SQL Server 2020中,用户可以通过添加数据文件和日志文件扩展数据库,也可以通过删除数据文件和日志文件来缩小数据库。 添加文件在前面的内容中已经讲过,相对比较容易,而删除文件相对比较复杂。 删除数据文件和日志文件时要求它们必须是空文件。 因此删除数据文件时需将数据转移到其它文件组的数据文件中去。 而日志文件不能转移,要清除掉非活动日志,必须删除日志或者备份日志,当日志文件为空时,就可以删除此日志文件了。 添加和删除数据文件和日志文件 38 使用 Management Studio完成数据文件、日志文件添加、删除的操作步骤如下: ( 1)采用前面的方法打开 【 数据库属性 】 对话框。 ( 2)如果是添加文件,可单击【 添加 】 按钮,出现一个如图 的界面,在 【 数据库文件 】 列表中,填充相应的字段就可以添加新的数据文件或者是日志文件。 如果要删除文件,可在 【 数据库文件 】 列表中选择需要删除的文件,点击 【 删除 】 按钮就可以了。 图 添加文件 ( 3)如果要对文件组进行操作,选择 【 数据库属性 】 页面左边的 【 文件组 】选项,完成对文件组的添加、删除操作。 (三 ) 删除数据库 39 当数据库不再需要时,可以删除数据库。 但系统数据库不能够删除。 在删除数据库后需要及时备份 master数据库,因为删除操作会更改 master数据库的内容。 使用 Management Studio删除数据库的具体步骤如下: ( 1)在 【 对象资源管理器 】 窗口中选中需要删除的数据库,点击鼠标右键,弹出菜单,选择 【 删除 】 命令。 ( 2)出现 【 删除对象 】 对话框,如图。 通过选择复选框决定是否删除数据库备份和还原历史纪录信息,以及关闭现有连接。 图 【 删除对象 】 对话框 ( 3)单击 【 确定 】 按钮,完成数据库删除操作。 (四 ) 数据库对象介绍 40 在 SQL Server 2020中,数据库对象定义了数据库内容的结构。 常见的数据库对象包括: 表( Table) 数据库中的表与日常生活中使用的表格类似,它也是由行( Row) 和列( Column)组成的。 列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。 行包括了若干列信息项。 一行数据称为一个或一条记录,它表达有一定意义的信息组合。 一个数据库表由一条或多条记录组成,没有记录的表称为空表。 每个表中通常都有一个主关键字,用于唯一地确定一条记录。 索引( Index) 索引是根据指定的数据库表列建立起来的顺序。 它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。 视图( View) 视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,保存的是一条查询命令,在数据库中并不实际存在。 视图中的数据是由查询数据库表产生的,它可以限制用户只能看到和修改的他有权看的数据,从而控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。 数据库对象介绍 41 图表( Diagram) 在 SQL Server中图表其实就是数据库表之间的关系示意图。 利用它可以编辑表与表之间的关系。 缺省值( Default) 缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。 规则( Rule) 规则是对数据库表中的数据信息进行限制 ,常用于描述企业的业务规则。 比如:@hire_date=39。 19801139。 and @hire_date=getdate()表示需要的雇佣日期在 1980年 1月1日到现在之间。 触发器( Trigger) 触发器是一个用户定义的 SQL 事务命令的集合。 当对一个表进行插入、更改、删除时,这组命令就会自动触发执行。 存储过程( Stored Procedure) 存储过程是为完成特定的功能而汇集在一起的一组 SQL 程序语句,经编译后存储在数据库中的 SQL 程序。 用户( User) 所谓用户就是有权限访问数据库的人。 第四节 使用 TSQL管理数据库 42 前面介绍了用 Management Studio管理数据库,下面介绍如何使用 TSQL命令来管理数据库。 创建 数据库 修改数据库 删除数据库 (一 ) 创建数据库 43 使用 TransactSQL语句创建数据库的语法格式如下: 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 = 39。 os_file_name39。 [ , SIZE = size [ KB | MB | GB | TB ] ] [ , 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 } } 创建数据库 44 对创建数据库语句的部分参数说明如下: database_name:新数据库的名称。 数据库名称在 SQL Server 的实例中必须唯一,并且必须符合标识符规则。 最多可以包含 128 个字符。 ON: 指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。 当后面是以逗号分隔的、用以定义主文件组的数据文件的 filespec 项列表时,需要使用 ON。 主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的 filegroup 项列表(可选)。 PRIMARY: 用来定义主要数据文件。 一个数据库只能有一个主文件。 LOG ON: 指定显式定义用来存储数据库日志的磁盘文件(日志文件)。 LOG ON 后跟以逗号分隔的用以定义日志文件的 filespec 项列表。 如果没有指定 LOG ON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的 25% 或 512 KB,取两者之中的较大者。 不能对数据库快照指定 LOG ON。 创建数据库例题 45 例 41: 在服务器上建立一个数据库 MyDatabase,包含 3个 40MB的数据文件, 2个 20MB的日志文件,和一个文件组。 文件组包含两个文件,文件存放路径为 “ F:\data”。 打开 Management Studio建立和目标服务器的连接以后,单击工具栏上的 【 新建查询 】 按钮,在查询编辑器中输入如下语句:(其中“ ――” 符号后的中文语句为注释语句,可以不用录入,但是建议在编写代码时学会编写注释语句) USE master。 GO 判断是否存在名称为 MyDatabase的数据库,如果有,则删除; IF DB_ID (N39。 Mydatabase39。 ) IS NOT NULL DROP DATABASE Mydatabase。 GO CREATE DATABASE Mydatabase 46 创建数据库例题 ON PRIMARY ( NAME = mydb1, FILENAME = 39。 F:\data\39。 , SIZE = 40MB, MAXSIZE = 100, FILEGROWTH = 15% ), FILEGROUP mydbgroup ( NAME = mydb2, FILENAME = 39。 F:\data\39。 , SIZE = 40MB, MAXSIZE = 100, FILEGROWTH = 5 ) ( NAME = mydb3, FILENAME = 39。 F:\data\39。 , SIZE = 40MB, MAXSIZE = 100, FILEGROWTH = 5 ) LOG ON ( NAME = mydb_log1, FILENAME = 39。 F:\data\39。 , SIZE = 20MB, MAXSIZE = 50, FILEGROWTH = 5 ), ( NAME = mydb_log2, FILENAME = 39。 F:\data\39。 , SIZE = 20MB, MAXSIZE = 50, FILEGROWTH = 5 )。 GO 47 单击 按钮,就会完成数据库的创建,如图 ,创建的数据库存放在指定的位置,如图。 创建数据库例题 图 创建数据库 48 创建数据库例题 图 存放在相应位置的数据库文件 (二 ) 修改数据库 49 数据库的当前使用者可以更改为连接上数据库的任何用户。 但是不能更改master、 model和 tempdb或者分发数据库的所有者。 使用 TransactSQL语言更改数据库所有者的语法如下: sp_changedbowner [ @loginame = ] 39。 login39。 [ , [ @map= ] remap_alias_flag ] 参数说明: [ @loginame = ] 39。 login39。 : 当前数据库的新所有者的登录 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(失败) 50 修改数据库例题 例 42: 将登录名 Albert 作为当前数据库的所有者,并映射到已分配给旧的数据库所有者的 Albert 现有别名。 EXEC sp_changedbowner 39。 Albert39。 修改数据库 51 扩大数据库的 TSQL语句的语法格式为: ALTER DATABASE database_naem MODIFY FILE (NAME = logical_file_name, MAXSIZE = max_size|UNLIMITED) 参数 logical_file_name 指的是要扩大的数据库文。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。