一:SQL Server的数据存储结构
1、 文件类型
a) 数据库在磁盘上是以文件为单位存储的,由数据文件和事务日志文件组成
b) 一个数据库至少应该包含一个数据文件和一个事务日志文件
c) 存储数据的文件叫做数据文件,数据文件包含数据和对象
d) 存储事物日志的文件叫做事务日志文件(又称日志文件)
e) Sql server 2016数据库具有四种类型的文件
- 主数据文件:包含数据库的启动信息,指向数据库中的其他文件(.mdf)
- 次要数据文件:除主数据文件以外的其他数据文件都是次要数据文件(.ndf)
- 事务日志文件:包含恢复数据库所有事务日志的信息(.ldf)
- 文件流数据文件:可以使基于sql server的应用程序能在文件系统中存储非结构化的数据。
文件流将sql server数据库引擎和NTFS集成在一起。
Sql server数据库引擎管理文件流字段和存储在NTFS格式文件系统中的实际文件
2、 数据文件
a) 数据文件由若干个64kb大小的区(extent)组成,每个区由8个8kb的连续页(page)组成
b) Sql server能识别的最小存储单位是页,磁盘I/O操作在页级执行
c) 在sql server中创建了表以后,对象就被分配到区中
3、 事务日志
a) 事务是一个或多个T-SQL语句的集合,要么执行成功,要么完全不执行
b) 每个数据库都有事务日志,用于记录所有事务的sql语句,当发生灾难时,通过事务日志记录的T-SQL语句可以恢复数据库
c) 事务日志的存储不是以页为单位,而是一条条大小不等的日志记录为单位。
二:数据库管理
1、 创建数据库
a) 启动SSMS——右键数据库——新建数据库——名称为“class”——默认创建数据库的用户为所有者
b) 初始大小——自动增长——路径
2、 扩展数据库
a) 扩展数据库时,必须使数据库的容量至少增加1MB
b) 启动SSMS——右键“class”——属性——文件——修改初始大小——自动增长——取消自动增长——确定
c) 启动SSMS——右键“class”——属性——文件——添加——设置属性——确定
3、 收缩数据库
a) 手动收缩数据库
- 收缩数据库
- 启动SSMS——右键“class”——任务——收缩——数据库——确定
- 收缩文件
- 启动SSMS——右键“class”——任务——收缩——文件——确定
- 收缩数据库
b) 自动收缩数据库
- 启动SSMS——右键“class”——属性——选项——自动收缩(true)——确定
4、 分离和附加数据库
a) 分离:将数据库从sql server实例中移除,数据文件和日志文件还在
- 启动SSMS——右键“class”——任务——分离——确定
b) 附加:启动SSMS——右键数据库——附加——添加——附加为(改库名称)——所有者(修改所有者)——确定
5、 删除数据库
a) 不能删除系统数据库
b) 一旦删除数据库,即被永久删除
c) 启动SSMS——右键“class”——删除——关闭现有连接——确定
三:表的基本概念
表是包含数据可中所有数据的数据库对象,每行代表一条唯一的记录,每列代表记录中的一个字段。
Sql server中的表包括两个组件:
列:每列代表由表建模的对象的某个属性
行:每行代表由表建模的对象的一个单独的实例
1、 数据完整性
a) 数据完整性指数据的精确性和可靠性
b) 是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入/输出造成无效操作或错误信息而提出的
c) 数据完整性分为四类:
- 实体完整性:
- 将行定义为特定表的唯一实体
- 通过UNIQUE(唯一)索引、UNIQUE约束或PRIMARY KEY(主键)约束,强制表的表示列或逐渐的完整性
- 域完整性
- 指特定列的项的有效性。
- 可以强制域完整性限制类型、限制格式、显示可能值的范围
- 实体完整性:
a) 域完整性限制类型:通过使用数据类型
b) 限制格式:通过使用CHECK约束和规则
c) 限制可能值的范围:通过使用FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则
- 引用完整性
- 输入或删除行时,引用完整性保留表之间定义的关系
- 引用完整性通过FOREIGN KEY(外键)和CHECK(检查)约束
- 引用完整性确保建值在所有表中一致
- 强制引用完整性时,将防止用户执行以下操作
- 引用完整性
a) 在主表中没有关联行的情况下在相关表中添加或更改行
b) 在主表中更改值(可导致相关表中出现孤立行)
c) 在有匹配的相关行的情况下删除主表中的行
- 用户定义完整性
- 定义不属于其他任何完整性类别的特定业务规则。
- 所有完整性类别都支持用户定义完整性
- 用户定义完整性
2、 主键
a) 唯一表示表中的行数据,一个主键值对应一行数据
b) 主键由一个或多个字段组成,其值具有唯一性不允许取空值(NULL),一个表只能有一个主键
c) 如果主键由多个列组成,则所有列的值得组合必须是唯一的
四:使用SSMS操作数据表
创建表的过程主要就是定义表中各个列的过程
行则是在向表中写入数据时产生的
1、 数据类型
a) 是数据的一种属性,用于指定对象可保存的数据的类型
b) Sql server中的数据类型可以归纳为下列类别:精准数字、近似数字、日期和时间、字符串、Unicode字符串、二进制字符串、其它数据类型
2、 默认值
a) 插入行时,没有为列指定值,则该列使用默认值
b) 如果没有默认值,并将该列保留为空白,则
- 如果设置了允许空值的选项,则将向该列插入NULL
- 如果没有设置允许空值,则该列保持空白,但无法保存行
3、 标识列
a) 每个表,均可创建一个包含系统生成的序号值的标识列,该序号值以唯一方式标识表中的每行
b) 只能为每个表创建一个标识列
c) 标识列三个特点:
- 列的数据类型为不带小数的数值类型
- 在进行插入操作时,该列的值由系统按一定规律生成,不允许空值
- 列值不重复,具有标识表中每行的作用
d) 创建标识列,需要指定三个内容:
- 类型(type):标识列类型必须是数值类型。小数位必须为零
- 种子(seed):指派给表中第一行的值,默认为1
- 地增量(increment):相邻两个标识两之间的增量,默认为1
4、 检查约束:CHECK约束
a) 通过限制放入列中的值,check约束可以强制域的完整性。
b) Check约束通过不基于其他列中的数据的逻辑表达式确定有效值
c) 通过任何逻辑运算符返回true和false的逻辑表达式创建check约束
5、 视图模式管理表
a) 创建表
- 启动SSMS——展开“class”——右键“表”——新建——表
b) 修改表结构
- 启动SSMS——展开“class”——展开“表”——右键表——设计
c) 编辑表
- 启动SSMS——展开“class”——展开“表”——右键表——编辑前200行
d) 删除表
- 启动SSMS——展开“class”——展开“表”——右键表——删除
6、 T-SQL语句管理表
启动SSMS——右键“class”——新建查询
a) 创建表
Create table 表名
(
列名1 数据类型(大小),
列名2 数据类型(大小),
列名3 数据类型(大小),
)
b) 添加列
Alter table 表名
Add 列名 数据类型(大小)
c) 修改列的数据类型
Alter table 表名
Alter colun 列名 数据类型(大小)
d) 删除列
Alter table 表名
Drop column 列名
e) 删除表
Drop table 表名