数据库和表
3.1基本概念
1、逻辑数据库(数据元素之间的逻辑关系)(1)数据库对象
组成数据库的逻辑成分,包括表、视图、索引、存储过程、触发器、约束等。
- 完全限定名(对象的全名)
服务器名.数据库名.数据库架构名.对象名server.database.scheme.object
- 部分限定名(省略完全限定名中的某些部分)
server...object
scheme.object
object
- 系统数据库和用户数据库
(1)系统数据库
用于存储SQL Server有关的系统信息,如果删除,SQL Server将无法正常启动。
master∶记录SQL Server实例的所有系统信息;
model∶为新建的数据库提供模板;
msdb∶用于SQL Server代理计划报警和作业;
tempdb存储临时表和临时存储过程。
每个数据库都包含主数据文件(.mdf)和主日志文件(.Idf)
(2)用户数据库
用户创建的数据库,结构与系统数据库相同。
3、物理数据库
是存放数据的实体,描述数据在存储介质上的物理组织
(1)页和区
页是SQL Server中用于数据存储的基本单位,每个页大小为8KB;
每页开头是96B用于存储有关页的系统信息的标头;
数据库表中的每行数据都不能跨页存储,即每一行数据字节个数不能超过8192个;
区是用于管理空间的基本单位,每8个连接的页组成一个区(64K);
区用于控制表和索引的存储。
(2)数据库文件
· 主数据文件(mdf)用于存储数据,并且包含了数据库的启动信息,每个数据库有且只有一个主文件;
· 辅助数据文件(.ndf)∶ 用于保存未在主文件中的其他数据,可有可无;
·日志文件(.ldf)∶用于保存恢复数据库所需的日志信息,每个数据库至少有一个日志文件;
(3)数据库文件组
· 主文件组∶ 包含主数据文件和未指派给其他组的数据文件;
· 用户定义的文件组(可有可无)。
PS∶文件组的成员只能是数据文件。
4、表
由行和列构成的用于表示数据及关系的集合。
· 表结构(表型)∶组成表的字段名及数据类型;
· 记录∶表中的一行数据称为一条记录;
·字段∶ 构成记录的每个数据项称为字段;
·关键字∶能唯一标识记录的某个字段或字段的组合;
· 主键∶若表中有多个候选关键字,可选其中一个作为主键。
3.2操作数据库
- 界面方式操作数据库
- 命令方式操作数据库
(1)创建数据库
CREATE DATABASE db_name
【ON 子句】-->指定数据库文件和文件组属性
【LOG ON 子句】-->指定日志文件属性
e.g.创建数据库DB1,数据文件data1.mdf位于主文件组中,data2.ndf在文件组FG1中
CREATE DATABASE DB1
ON
(
NAME = "datal",
FILENAME = "F: \data\sql_data\datal.mdf",
SIZE=20MB
MAXSIZE=UNLIMITED,
FILEGROWTH=10%
)
,
FILEGROUP FG1
(
NAME = "data2",
FILENAME = "F: \data\sql_data\data2.ndf"
)
LOG ON
(
NAME="datal_log",
FILENAME = "F:\data\sql_data\datal_log.ldf"
)
(2)修改数据库
ALTER DATABASE db_name
ADDFILE子句:添加数据文件
ALTER DATARASE DR1
ADD FILE
(
NAME = "data4",
FILENAME = "F:\data\sql_data\data4.ndf",
SIZE = 20MB,
MAXSIZE=200MB.
FILEGROWTH=10%
)
TO FILEGROUP FG1
G0
ADD LOG FILE子句:添加日志文件
ALTER DATABASE DB1
ADD LOG FILE
(
NAME = "data2_log",
FILENAME = "F:\data\sql_data\data2_log.ldf",
SIZE=10MB,
MAXSIZE=100MB,
FILEGROWTH=10MB
)
GO
REMOVE FILE子句:删除文件
ALTER DATABASE DB1
REMOVE FILE data4
GO
ADD FILEGROUP子句:添加文件组
ALTER DATABASE DB1
ADD FILEGROUP FG2
REMOVE FILEGROUP子句:删除文件组
ALTER DATABASE DB1
REMOVE FILEGROUP FG2
PS∶若文件组不为空,则不可直接删除
MODIFY FILE子句:修改文件属性
ALTER DATABASE DB1
MODIFY FILE
(
NAME = "data2",
SIZE=100MB,
MAXSIZE=500MB,
FILEGROWTH=10%
)
MODIFY FILEGROUP子句∶修改文件组属性
ALTER DATABASE DB1
MODIFY FILEGROUP FG1
READ_ONLY
GO
MODIFY NAME子句∶ 修改数据库名字
ALTER DATABASE DB1
MODIFY NAME=DB2
GO
SET子句:设置数据库属性
ALTER DATABASE DB2
SET
READ_ONLY
(3)数据库快照
CREATE DATABASE DB3
ON
(
NAME = "datal",
FILENAME = "F:\data\sql_data\data_1.mdf"
),
(
NAIE = "data2",
FILENAME = "F:\data\sql_data\data_2.ndf"
)
AS SNAPSHOT OF DB2
PS:
- 在创建数据库快照时,文件属性中的逻辑文件名须跟源数据库中的文件名一致;
- 在创建数据库快照时,无需指定日志文件属性,即数据库快照只保存数据文件。
- 在创建数据库快照时,不能给数据文件指定文件组。
(4)删除数据库
DROP DATABASE db_name
DROP DATABASE DB2