第三章 关系数据库标准语言——SQL

4

主题

6

帖子

16

积分

新手上路

Rank: 1

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



文件组

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


<hr/>SQL Server 2012默认并不安装示例数据库,需要手工下载安装,下载地址为:
用SQL命令创建数据库

CREATE DATABASE 数据库名称
[ON
[FILEGROUP 文件组名称]
(  NAME=数据文件逻辑名称,
  FILENAME='路径+数据文件名',  SIZE=数据文件初始大小,
  MAXSIZE=数据文件最大容量,
  FILEGROWTH=数据文件自动增长容量, )]
[LOG ON
(  NAME=日志文件逻辑名称,
  FILENAME='路径+日志文件名’,  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 <表名>只能删除自己建立的表,不能删除其他用户所建的表

0

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2025-2-17 15:46:03 | 显示全部楼层
打酱油的人拉,回复下赚取积分
回复

举报

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表