|
发表于 2022-9-22 10:48:26
|
显示全部楼层
数据库的结构

文件组
- 文件组(File Group)是将多个数据文件集合起来形成的一个整体
- 主要文件组+次要文件组
- 一个数据文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用
- 日志文件不分组,它不属于任何文件组

<hr/>SQL Server 2012默认并不安装示例数据库,需要手工下载安装,下载地址为:
用SQL命令创建数据库
CREATE DATABASE 数据库名称
[ON
[FILEGROUP 文件组名称]
( NAME=数据文件逻辑名称,
FILENAME=&#39;路径+数据文件名&#39;, SIZE=数据文件初始大小,
MAXSIZE=数据文件最大容量,
FILEGROWTH=数据文件自动增长容量, )]
[LOG ON
( NAME=日志文件逻辑名称,
FILENAME=&#39;路径+日志文件名’, SIZE=日志文件初始大小,
MAXSIZE=日志文件最大容量,
FILEGROWTH=日志文件自动增长容量, )]
[COLLATE 数据库校验方式名称]
[FOR ATTACH]
- 用[ ]括起来的语句,表示在创建数据库的过程中可以选用或者不选用,例如,在创建数据库的过程中,如果只用第一条语句“CREATE DATABASE 数据库名称”,DBMS将会按照默认的“逻辑名称”、“文件组”、“初始大小”、“自动增长”和“路径”等属性创建数据库。
- FILEGROWTH”可以是具体的容量,也可以是UNLIMITED,表示文件无增长容量限制。
- “数据库校验方式名称”可以是Windows校验方式名称,也可以是SQL校验方式名称。
- “FOR ATTACH”表示将已经存在的数据库文件附加到新的数据库中。
- 用( )括起来的语句,除了最后一行命令之外,其余的命令都用逗号作为分隔符。
<hr/>[例3-1] 用SQL命令创建一个教学数据库Teach,数据文件的逻辑名称为Teach_Data,数据文件存放在E盘根目录下,文件名为TeachData.mdf,数据文件的初始存储空间大小为10MB,最大存储空间为500MB,存储空间自动增长量为10MB;日志文件的逻辑名称为Teach_Log,日志文件物理地存放在E盘根目录下,文件名为TeachData.ldf,初始存储空间大小为5MB,最大存储空间为500MB,存储空间自动增长量为5MB。

<hr/>修改用户数据库

- “常规”选项卡中包含数据库的状态、所有者、创建日期、大小、可用空间、用户数、备份和维护等信息。
- “文件”选项卡中包含数据文件和日志文件的名称、存储位置、初始容量大小、文件增长和文件最大限制等信息。
- “文件组”选项卡中可以添加或删除文件组。但是,如果文件组中有文件则不能删除,必须先将文件移出文件组,才能删除文件组。
- “选项”选项卡中可以设置数据库的许多属性,如排序规则、恢复模式、兼容级别等。
- “更改跟踪”选项卡可以设定是否对数据库的修改进行跟踪。
- “权限”选项卡可以设定用户或角色对此数据库的操作权限。
- “扩展属性”选项卡可以设定表或列的扩展属性。在设计表或列时,通常通过表名或列名来表达含义,当表名或列名无法表达含义时,就需要使用扩展属性。
- “镜像”选项卡可以设定是否对数据库启用镜像备份。镜像备份是一种高性能的备份方案,但需要投入一定的设备成本,一般用于高可靠性环境。
- “事务日志传送”选项卡设定是否启用事务日志传送。事务日志传送备份是仅次于镜像的高可靠性备份方案,可以达到分钟级的灾难恢复能力,实施成本远小于镜像备份,是一种经济实用的备份方案。
用SQL命令修改数据库
ALTER DATABASE 数据库名称
ADD FILE(
具体文件格式)
[,…n]
[TO FILEGROUP 文件组名]
|ADD LOG FILE(
具体文件格式)
[,…n]
|REMOVE FILE 文件逻辑名称
|MODIFY FILE(
具体文件格式)
|ADD FILEGROUP 文件组名
|REMOVE FILEGROUP 文件组名
|MODIFY FILEGROUP 文件组名
{ READ_ONLY|READ_WRITE,
| DEFAULT,
| NAME = 新文件组名}
}
其中,“具体文件格式”为:
( NAME = 文件逻辑名称
[ , NEWNAME = 新文件逻辑名称]
[ , SIZE = 初始文件大小]
[ , MAXSIZE = 文件最大容量]
[ , FILEGROWTH = 文件自动增长容量]
) 各主要参数说明如下:
- ADD FILE:向数据库中添加数据文件。
- ADD LOG FILE:向数据库中添加日志文件。
- REMOVE FILE:从数据库中删除逻辑文件,并删除物理文件。如果文件不为空,则无法删除。
- MODIFY FILE:指定要修改的文件。
- ADD FILEGROUP:向数据库中添加文件组。
- REMOVE FILEGROUP:从数据库中删除文件组。若文件组非空,无法将其删除,需要先从文件组中删除所有文件。
- MODIFY FILEGROUP:修改文件组名称、设置文件组的只读(READ_ONLY)或者读写(READ_WRITE)属性、指定文件组为默认文件组(DEFAULT)。
ALTER DATABASE命令可以在数据库中添加或删除文件和文件组、更改数据库属性或其文件和文件组、更改数据库排序规则和设置数据库选项。应注意的是,只有数据库管理员(DBA)或具有CREATE DATABASE权限的数据库所有者才有权执行此命令。
<hr/>[例3-2] 修改Teach数据库中的Teach_Data文件增容方式为一次增加20MB。

[例3-3] 用SQL命令修改数据库Teach,添加一个次要数据文件,逻辑名称为Teach_Datanew,存放在E盘根目录下,文件名为Teach_Datanew.ndf。数据文件的初始大小为100MB,最大容量为200MB,文件自动增长容量为10MB。

[例3-4] 用SQL命令,从Teach数据库中删除例3-2中增加的次要数据文件。

<hr/>删除用户数据库
DROP DATABASE
数据库名称[,...n]
[例3-5] 删除数据库Teach。

<hr/>分离

分离数据库文件

附加


<hr/>数据表的创建和使用

[例3-6] 用SQL命令建立一个学生表S。

缺省值为“男”
<hr/>定义数据表的约束

完整性约束的基本语法格式
[CONSTRAINT <约束名> ] <约束类型>① NULL/NOT NULL约束
[例3-7] 建立一个S表,对SNo字段进行NOT NULL约束。

② UNIQUE约束(唯一约束)
[例3-9] 建立一个S表,定义SN+Sex为唯一键,此约束为表约束。

③ PRIMARY KEY约束(主键约束)
1.用于定义列约束
CONSTRAINT <约束名> PRIMARY KEY [例3-10] 建立一个S表,定义SNo为S的主键,建立另外一个数据表C,
定义CNo为C的主键。定义数据表S:

定义数据表C:

2.用于定义表约束
[CONSTRAINT <约束名>] PRIMARY KEY (<列名>[{,<列名>}]) [例3-11] 建立一个SC表,定义SNo+CNo为SC的主键。

④ FOREIGN KEY约束(外键约束)

[CONSTRAINT<约束名>] FOREIGN KEY REFERENCES <主表名> (<列名>[{,<列名>}])[例3-12] 建立一个SC表,定义SNo,CNo为SC的外部键。

⑤ CHECK约束
[CONSTRAINT <约束名>] CHECK (<条件>) [例3-13] 建立一个SC表,定义Score的取值范围为0~100之间。

<hr/> 修改数据表
① ADD方式
ALTER TABLE <表名> ADD <列定义> | <完整性约束定义>[例3-15] 在S表中增加一个班号列和住址列。

*使用此方式增加的新列自动填充NULL值,所以不能为增加的新列指定NOT NULL约束
[例3-16] 在SC表中增加完整性约束定义,使Score在0~100之间。

②ALTER方式
ALTER TABLE <表名>
ALTER COLUMN <列名> <数据类型> [NULL | NOT NULL] [例3-17] 把S表中的SN列加宽到12个字符。

- 不能改变列名;
- 不能将含有空值的列的定义修改为NOT NULL约束;
- 若列中已有数据,则不能减少该列的宽度,也不能改变其数据类型;
- 只能修改NULL/NOT NULL约束,其他类型的约束在修改之前必须先将约束删除,然后再重新添加修改过的约束定义。
③ DROP方式
ALTER TABLE<表名> DROP CONSTRAINT <约束名> 只用于删除完整性约定因素
[例3-18] 删除S表中的主键。

<hr/>删除基本表
DROP TABLE <表名>只能删除自己建立的表,不能删除其他用户所建的表
 |
|