数据库 :SQL Server
一、SQL Server 数据库有几类文件。扩展名分别是什么?
-
主数据文件:mdf 有且仅有一个,所有数据库的起点,包含指向其它数据库文件的指针。大小>=3M
-
辅助数据文件:ndf 数量>=0
-
事务日志文件:ldf 先写日志后操作数据库。 数量>=1 大小>=512KB 日志:数据文件=1:3
-
数据文件组:数据文件的逻辑集合,只包含数据文件,不包含日志文件。
优点:1、存放大容量的对象。2、隔离用户对文件的依赖。3、速度 4、安全
- 主文件组:Primary
- 用户定义的文件组:自取 数量>=0
二、数据库的创建
- 一台服务器可创建的数据库个数:32767 = 2^15-1
2.1 、手动创建
数据库.右键=》创建数据库=》输入数据库名称;文件的所有属性都可以手动自定义 (数据库:db_name)
dbName.右键=》属性。可以查看数据库的各种属性
2.2、T-sql创建(默认)
先连接数据库,创建一个db_name数据库
CRETA DATABASE 学生管理
2.3、自定义创建数据库(单个)
CREATE DATABASE 学生管理
ON PRIMARY
(
NAME='学生管理', -- 数据库名称
FILENAME='D:\SQL\学生管理.mdf', -- 数据库物理地址
SIZE=5MB, -- 数据库初始大小
MAXSIZE=20MB, -- 数据库最大容量
FILEGROWTH=5MB -- 增长率
)
2.4、创建LOG(单个)
LOG ON -- 建立日志文件
(
NAME='学生管理日志', -- 主日志文件的逻辑名
FILENAME='D:\SQL\学生管理日志.ldf', -- 主日志文件的物理名
SIZE=2MB, -- 日志文件吃书大小
FILEGROWTH=1MB -- 日志文件的增长率
)
2.5、数据库的创建(多个)
创建多个用逗号隔开即可 ,
CREATE DATABASE 教师管理
ON PRIMARY
(
NAME='教师管理1', -- 数据库名称
FILENAME='D:\SQL\教师管理1.mdf', -- 数据库物理地址
SIZE=5MB, -- 数据库初始大小
MAXSIZE=20MB, -- 数据库最大容量
FILEGROWTH=5MB -- 增长率
),
( -- ndf 次要数据文件
NAME='教师管理2', -- 数据库名称
FILENAME='D:\SQL\教师管理2.ndf', -- 数据库物理地址
SIZE=5MB, -- 数据库初始大小
MAXSIZE=20MB, -- 数据库最大容量
FILEGROWTH=15% -- 增长率
)
2.6、LOG的创建(多个)
LOG ON -- 建立日志文件
(
NAME='教师管理1日志', -- 主日志文件的逻辑名
FILENAME='D:\SQL\教师管理1日志.ldf', -- 主日志文件的物理名
SIZE=2MB, -- 日志文件吃书大小
FILEGROWTH=1MB -- 日志文件的增长率
),
(
NAME='教师管理2日志', -- 主日志文件的逻辑名
FILENAME='D:\SQL\教师管理2日志.ldf', -- 主日志文件的物理名
SIZE=2MB, -- 日志文件吃书大小
FILEGROWTH=15% -- 日志文件的增长率
)
三、数据库的相关操作
3.1、手动操作
db_name.右键=》属性=》文件(修改数据库的逻辑名称)
3.2、命令修改数据库-ADD
ALTER DATABASE 学生管理
ADD FILE
(
NAME = '学生管理test',
FILENAME = 'D:\SQL\test\学生管理test.mdf',
SIZE = 5MB,
MAXSIZE =20MB,
FILEGROWTH = 5MB
)
3.3、给数据库添加日志文件-ADD
ALTER DATABASE 学生管理test
ADD LOG FILE
(
NAME = '学生管理test_log',
FILENAME = 'D:\SQL\test\学生管理test_log.ldf',
SIZE = 5MB,
MAXSIZE =20MB,
FILEGROWTH = 5MB
)
3.4、修改数据库中的属性
ALTER DATABASE 学生管理test
MODIY FILE
(
NAME = '学生管理',
FILENAME = 'D:\SQL\test\学生管理.mdf',
SIZE = 5MB,
MAXSIZE =20MB,
FILEGROWTH = 5MB
)
3.5、添加分组-ALTER
ALTER DATABASE 学生管理_备份
ADD FILEGROUP 学生组 -- 给数据库添加学生分组
ALTER DATABASE 学生管理_备份
ADD FILE
( -- 辅助数据文件
NAME = '学生1',
FILENAME = 'D:\SQL\test\学生1.ndf',
SIZE = 5MB,
MAXSIZE =20MB,
FILEGROWTH = 5MB
),
( -- 辅助数据文件
NAME = '学生2',
FILENAME = 'D:\SQL\test\学生2.ndf',
SIZE = 5MB,
MAXSIZE =20MB,
FILEGROWTH = 5MB
)
TO FILEGROUP 学生组 -- 把两个辅助数据文件添加分组
3.6、修改默认分组-MODIFY
ALTER DATABASE 学生管理_备份
MODIFY FILEGROUP 学生组 DEFAULT
3.7、移除文件-REMOVE
ALTER DATABASE 学生管理_备份 REMOVE FILE 学生1 -- 删除文件
-- 删除默认学生分组 注意:默认分组和PRIMARY不能被删除
-- 先设置数据的默认分组为PRIMARY
ALTER DATABASE 学生管理_备份 MODIFY FILEGROUP [PRIMARY] DEFAULT -- 区分关键字和名称用[] 中括号
-- 即可删除其他分组
ALTER DATABASE 学生管理_备份 REMOVE FILEGROUP 学生组
3.8、修改数据库的名称
ALTER DATABASE 学生管理_备份 MODIFY NAME = 学生管理
3.9、删除数据库-DROP
DROP DATABASE 学生管理 -- 不可恢复数据文件和日志文件一并删除
DROP DATABASE 学生管理,教师管理 -- 一次删除多个
3.10、数据库的分离-Detach
- 手动:学生管理.右键=》任务=》勾选删除连接、更新
分离数据库:逻辑上的分离,并不会删除数据库
SP_DETACH_DB 学生管理
3.11、数据库的附加-Attach
- 数据库.右键=》附加=》添加=》找到路径.mdf
附加数据库:从被分离的数据库中中添加数据库到数据库管理系统(没有分离的,则添加失败)
文件中包含主数据文件超过16个就需要用FOR ATTACH 的子句CREATE DATABASE来代替
SP_ATTACH_DB 学生管理 , FILENAME = 'D:\SQL\test\学生管理.mdf'
3.12、以附加的形式来创建数据库
只是多了一个FOR 参数
-- 先分离
DROP DATABASE 学生管理
-- 附加创建数据管理
CREATE DATABASE 学生管理_附加
ON PRIMARY
(
NAME='学生管理', -- 数据库名称
FILENAME='D:\SQL\学生管理.mdf', -- 数据库物理地址
SIZE=5MB, -- 数据库初始大小
MAXSIZE=20MB, -- 数据库最大容量
FILEGROWTH=5MB -- 增长率
)FOR ATTACH