数据库的组成
SQL Server数据库由一组操作系统文件组成,这些文件被划分为两类:数据文件和日志文件。
1.数据文件: 包含数据和对象,如表、索引、存储过程和视图。
数据文件类型 | 特点 |
---|---|
主数据文件 | 包含数据库启动信息,以及数据库中其他文件的位置等信息扩展名为.mdf |
次要数据文件 | 次要数据文件是可选的,由用户定义并存储用户数据。数据库中可以没有,也可以有多个。扩展名为.ndf |
2.日志文件: 用于存放恢复数据库的所有日志信息,扩展名为.ldf。每个数据库至少有一个日志文件,也可以有多个日志文件。
3.逻辑文件名和物理文件名:
文件名类型 | 定义 |
---|---|
逻辑文件名(logical_file_name) | 在所有数据库语句中引用物理文件时所使用的名称,名称唯一且符合标识符命名规则 |
物理文件名(os_file_name) | 包含目录路径的物理文件的名称,必须符合操作系统命名规则 |
4.文件组的分类:
SQL Server中有两种类型的文件组:主文件组和用户定义的文件组。
名称 | 特点 |
---|---|
主文件组(默认文件组) | 由系统定义的一个文件组,其中包含了主要数据文件和所有没有明确分配给其他文件组的其他数据文件 |
用户定义文件组 | 由用户自己创建,将相关数据文件组织起来,便于管理和分配 |
5.数据库文件属性:
- 文件名及其位置
- 初始大小
- 增长方式
- 最大大小
创建数据库
全部默认设置的数据库:
create database 数据库名; --数据文件和日志文件默认大小为8MB
一个数据文件一个日志文件的数据库:
create database 数据库名
on
( name = 逻辑文件名,
filename = '存放位置\逻辑文件名',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度(单位可以是MB,也可以是*%) )
log on
( name = 逻辑文件名,
filename = '存放位置\逻辑文件名',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度(单位可以是MB,也可以是*%) )
多个数据文件多个日志文件的数据库:
--三个数据文件,其中一个主要数据文件位于主文件组primary,另外两个位于datagroup文件组
--两个日志文件
create database 数据库名
on primary
( name = 逻辑文件名1,
filename = '存放位置\物理文件名1',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度(单位可以是MB,也可以是*%) ),
filegroup datagroup
( name = 逻辑文件名2,
filename = '存放位置\物理文件名2',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度(单位可以是MB,也可以是*%) ),
( name = 逻辑文件名3,
filename = '存放位置\物理文件名3',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度(单位可以是MB,也可以是*%) ),
log on
( name = 逻辑文件名4,
filename = '存放位置\物理文件名4',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度(单位可以是MB,也可以是*%) ),
( name = 逻辑文件名5,
filename = '存放位置\物理文件名5',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度(单位可以是MB,也可以是*%) )
操作数据库
- 扩大数据库空间
增加数据文件:
alter dstabase 数据库名
add file --添加日志文件时在file前面加上log
{
name = 逻辑文件名,
filename = '存放位置\物理文件名',
size = 初始大小,
maxsize = 最大大小,
filegrowth = 增长速度 )
修改文件初始大小:
alter database 数据库名
modify file
{
name = 数据文件名,
size = 修改后大小
)
- 收缩数据库空间
收缩数据库:
dbcc shrinkdatabase(数据库名字,可用空间占比)
收缩指定文件:
dbcc shrinkfile(文件名,收缩后目标大小)
- 管理数据库文件
删除数据文件:
alter database 数据库名
remove file 文件名
创建文件组:
alter database 数据库名
add filegroup 新文件组名
修改文件组为默认文件组:
alter database 数据库名
modify filegroup A default --将文件组A设置为默认文件组
移动数据库文件:
alter database 数据库名
modify file ( name = 文件名字,
filename = ' ');
- 删除数据库
删除单个数据库:
drop database 数据库名
删除多个数据库:
drop database 数据库A,数据库B......
- 分离和附加数据库
分离数据库:
execute sp_detach_db ' 数据库名','true/false ' --第二个参数为跳过还是运行“更新统计信息”
附加数据库:
create database 数据库名
on( filename = ' ')
for attach
小结
数据库的操作算的上是基础了,给定一个数据库,按照要求完成对应操作是数据库的入门级操作,对于各操作的T-SQL语句,我们无需刻意记忆,通过具体的例子在使用中强化才是正解。