SQL 命令对数据库的操作

1. 数据库的结构

  1. 对于数据库:
  • 从逻辑上看,描述信息的数据存放在数据库中由DBMS统一管理。
  • 从物理上看,描述信息的数据是以文件的形式存储在物理磁盘上,由操作系统统一管理。
  1. 数据库的存储结构
  • 利用SQL Server 创建数据库时,会在物理磁盘上创建相应的操作系统文件。数据库中所有的数据,对象,和数据库操作日志都在这些文件中。
  • 至少会创建两个文件:数据文件事务日志文件
  1. 数据库的所有物理文件
  • 在逻辑上通过数据库名联系在一起,当成一个整体。
  • 在物理上是若干个存储文件。

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]
  1. 使用 [ ] 括起来的语句,表示创建数据库时可写可不写。如果只有一条创建数据库的命令,则DBMS会按默认是的属性创建数据库。
  2. filegrowth 可以指定具体的增长容量,也可以表示文件无增长容量限制(unlimited)。
  3. 数据库校验方式名称 可以是Windows校验方式名称,也可以是SQL校验方式名称。
  4. for attach 表示将已经存在的数据库文件附加到新的数据库中。
  5. 用 ( ) 括起来的语句,除了括号内最后一行命令之外,其他命令都要用逗号作为分隔符。

实例:

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 表示系统存储过程

  1. 使用系统存储过程查看数据库结构
    格式:
--不指定数据库名则会显示所有的数据库信息,执行时需要在语句前添加 exec
Sp_hepldb [[@dbname=] 'name']

实例:

  1. 使用系统存储过程显示文件信息
    格式:
Sp_heplfile [[@filename=] 'name']

实例:

  1. 使用系统存储过程显示文件组信息
    格式:
Sp_heplgroup [[@filegroup=] 'name']

实例: