SQL 命令对数据库的操作
1. 数据库的结构
- 对于数据库:
- 从逻辑上看,描述信息的数据存放在数据库中由DBMS统一管理。
- 从物理上看,描述信息的数据是以文件的形式存储在物理磁盘上,由操作系统统一管理。
- 数据库的存储结构
- 利用SQL Server 创建数据库时,会在物理磁盘上创建相应的操作系统文件。数据库中所有的数据,对象,和数据库操作日志都在这些文件中。
- 至少会创建两个文件:数据文件和事务日志文件。
- 数据库的所有物理文件
- 在逻辑上通过数据库名联系在一起,当成一个整体。
- 在物理上是若干个存储文件。
1). 数据文件 : 存放数据库数据和数据可对象的文件。
- 一个数据库可以有一个或多个数据文件,一个数据文件只能属于一个数据库。
- 当有多个数据文件时,有一个被定义为主数据文件,其他数据文件被称为次数据文件。
- 主数据文件:扩展名为 .mdf 用来存储数据库的启动信息和部分或全部数据,一个数据库只能有一个主数据文件。
- 次数据文件:扩展名为 .ndf 用来存储主数据文件未存储的其他数据。
① 数据文件可以不断的扩充,不受操作系统文件大小的限制。
② 数据文件可以存储在不同的硬盘中,这样可以同时对几个硬盘进行并行存取,提高了数据的处理能力。
2). 事务日志文件: 保存用于恢复数据库的日志信息,扩展名 .ldf ,每个数据库必须至少有一个事务日志文件。
- 待补充
3). 文件组 :将多个数据文件集合起来形成一个整体,每个文件组有一个组名。
- 待补充
2. 创建用户数据库(SQL命令创建)
格式:
create database 数据库名
[on
[filegroup]
(
name = 数据文件逻辑名,
filename = '路径+数据文件名',
size = 数据文件的初始大小,
maxsize = 数据文件的最大容量,
filegrowth = 数据文件自动增长容量
)]
[log on
(
name = 日志文件逻辑名称,
filename = '路径+日志文件名',
size = 日志文件初始大小,
maxsize = 日志文件的最大容量,
filegrowh = 日志文件自动增长容量
)]
[collate 数据库校验方式名称]
[for attach]
- 使用 [ ] 括起来的语句,表示创建数据库时可写可不写。如果只有一条创建数据库的命令,则DBMS会按默认是的属性创建数据库。
- filegrowth 可以指定具体的增长容量,也可以表示文件无增长容量限制(unlimited)。
- 数据库校验方式名称 可以是Windows校验方式名称,也可以是SQL校验方式名称。
- for attach 表示将已经存在的数据库文件附加到新的数据库中。
- 用 ( ) 括起来的语句,除了括号内最后一行命令之外,其他命令都要用逗号作为分隔符。
实例:
create database Teach
on
(
name = Teach_data,
filename = 'E:\TeachData.mdf',
size = 10,
maxsize = 100,
filegrowth = 10
)
log on
(
name = Teach_log,
filename = 'E:\TeachLog.ldf',
size = 10,
maxsize =100,
filegrowth = 10
)
3. 修改用户数据库
格式:
--选择需要修改的数据库
alter database 数据库名
-- 向数据库中添加数据文件
add file (
name = 数据文件逻辑名称,
filename = '路径' + 数据文件名,
size = 初始文件大小,
mixsize = 文件最大容量,
filegroup = 数据文件的自动增长容量
)
--将创建的文件添加到特定的分组中
to filegroup 文件组名
-- 向数据库中添加事务日志文件
log file (
name = 数据文件逻辑名称,
filename = '路径' + 数据文件名,
size = 初始文件大小,
mixsize = 文件最大容量,
filegroup = 数据文件的自动增长容量
)
-- 删除逻辑文件,文件不为空则无法删除
remove file 文件逻辑名
-- 修改数据文件
modify file(
name = 文件逻辑名,
[newname = 新的文件逻辑名,]
[filename = '路径' + 数据文件名,]
[size = 初始文件大小,]
[mixsize = 文件最大容量,]
[filegroup = 数据文件的自动增长容量]
)
--添加文件组
add filegroup 文件组名
--删除文件组,文件组不为空则无法删除
remove filegroup
--修改文件组的名称,设置文件的只读或读写属性,或指定文件组为默认文件组,或重命名
modify filegroup 文件组名
{
read_only | read_write,
default,
name = 新文件名
}
实例:
4. 删除用户数据库
格式:
--删除一个或多个数据库
drop database 数据库名[,数据库名,...]
实例:
5. 查看用户数据库
5.1 使用系统存储过程查看数据库信息
Sp_* 表示System process 表示系统存储过程
- 使用系统存储过程查看数据库结构
格式:
--不指定数据库名则会显示所有的数据库信息,执行时需要在语句前添加 exec
Sp_hepldb [[@dbname=] 'name']
实例:
- 使用系统存储过程显示文件信息
格式:
Sp_heplfile [[@filename=] 'name']
实例:
- 使用系统存储过程显示文件组信息
格式:
Sp_heplgroup [[@filegroup=] 'name']
实例: