1、数据库的基本概念
- 数据库通常是一个由行和列组成的二维表
- 数据表中的行通常叫做记录或元祖
- 数据表中的列通常叫做字段或属性
2、主键和外键
- 主键:定义主键可以保证数据的完整性
- 外键:一个关系数据库通常包含多个表,通过外键,可以将这些表连接
3、数据库的完整性
- 实体完整性规则:主键不为空
- 域完整性规则:指定某一数据对某一个列是否有效或确定是否允许空值
- 引用完整性规则:如果两个表互相关联,那么引用完整规则要求不允许引用不存在的元祖
- 用户定义完整性规则:针对某一数据的约束条件
4、安装:可看:https://www.cnblogs.com/-xuan/p/9998103.html
5、启动数据库
- 服务(win + R,services.msc,)-->右击SQL server(MSSQLSERVER),开启
- SQL server配置管理器(安装完成后点击桌面左下角,选择Microsoft SQL server 2016中打开),SQL服务-->SQL server(MSSQLSERVER)
- 使用SSMS启动或者停止
6、注册服务器(方便日后管理):打开SSMS连接后,右击实例,注册即可
7、在SQL server中,数据库分为两种
- 系统数据库:
- master 数据库:记录系统级别的信息
- model 数据库:用作实力上创建所有数据库的模板
- msdb数据库:用于SQL server代理计划警报和作业
- tempdb数据库:表示一个数据空间,用于保存临时的对象或中间结果集,SQL server每次启动数据库tempdb都会重新创建
- 用户数据库:
二、数据库和表的管理
1、文件类型
- 主数据文件:包括文件的启动信息,每个数据库都有且只有一个主数据文件,扩展名为*.mdf
- 次要(辅助)数据文件:可以白数据库内动保存到其他计算机或磁盘,扩展名为*.ndf
- 日志文件:最低必须有一个,可以很多,数据误删除可以使用日志文件进行恢复,扩展名为*.ldf
- 文件流:储存非结构化数据,如图片、音频、视频等二进制文件; 数据流主要将SQL server数据库引擎和NTFS集成在一起。
2、数据文件:数据文件由若干个64kb大小的区(Extend)组成,每个区由8个8kb的连续页(Page)组成
3、扩展数据库:可以通过右击数据库——>点击属性——>文件 进行数据库的扩展
4、收缩数据库:分为手动收缩和自动收缩
- 手动收缩分为:收缩数据库和收缩文件
- 收缩数据库:右击数据库——>任务——>收缩——>数据库,对整个数据库进行收缩
- 收缩文件:右击数据库——>任务——>收缩——>文件,对某个文件收缩
- 自动收缩:可以通过右击数据库——>点击属性——>选项——>自动收缩 改为True
5、分离数据库和附加:用于数据库的迁移
6、数据类型
Character 字符串:
| 数据类型 | 描述 | 存储 |
|---|---|---|
| char(n) | 固定长度的字符串。最多 8,000 个字符。 | n |
| varchar(n) | 可变长度的字符串。最多 8,000 个字符。 | |
| varchar(max) | 可变长度的字符串。最多 1,073,741,824 个字符。 | |
| text | 可变长度的字符串。最多 2GB 字符数据。 |
Unicode 字符串:
| 数据类型 | 描述 | 存储 |
|---|---|---|
| nchar(n) | 固定长度的 Unicode 数据。最多 4,000 个字符。 | |
| nvarchar(n) | 可变长度的 Unicode 数据。最多 4,000 个字符。 | |
| nvarchar(max) | 可变长度的 Unicode 数据。最多 536,870,912 个字符。 | |
| ntext | 可变长度的 Unicode 数据。最多 2GB 字符数据。 |
Binary 类型:
| 数据类型 | 描述 | 存储 |
|---|---|---|
| bit | 允许 0、1 或 NULL | |
| binary(n) | 固定长度的二进制数据。最多 8,000 字节。 | |
| varbinary(n) | 可变长度的二进制数据。最多 8,000 字节。 | |
| varbinary(max) | 可变长度的二进制数据。最多 2GB 字节。 | |
| image | 可变长度的二进制数据。最多 2GB。 |
Number 类型:
| 数据类型 | 描述 | 存储 |
|---|---|---|
| tinyint | 允许从 0 到 255 的所有数字。 | 1 字节 |
| smallint | 允许从 -32,768 到 32,767 的所有数字。 | 2 字节 |
| int | 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。 | 4 字节 |
| bigint | 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 | 8 字节 |
| decimal(p,s) |
固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。 p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。 s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。 |
5-17 字节 |
| numeric(p,s) |
固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。 p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。 s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。 |
5-17 字节 |
| smallmoney | 介于 -214,748.3648 和 214,748.3647 之间的货币数据。 | 4 字节 |
| money | 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。 | 8 字节 |
| float(n) | 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 | 4 或 8 字节 |
| real | 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 | 4 字节 |
Date 类型:
| 数据类型 | 描述 | 存储 |
|---|---|---|
| datetime | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 | 8 bytes |
| datetime2 | 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 | 6-8 bytes |
| smalldatetime | 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 | 4 bytes |
| date | 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 | 3 bytes |
| time | 仅存储时间。精度为 100 纳秒。 | 3-5 bytes |
| datetimeoffset | 与 datetime2 相同,外加时区偏移。 | 8-10 bytes |
| timestamp | 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。 |
7、默认值:如果没有指定数据,则使用默认值
8、标识列的三个特点及指定的三个内容
- 三个特点
- 列的数据类型为不带小数的数值类型
- 该列有一定顺序产生,不允许为空
- 列值不重复,具有标识表中每行的内容,每个表只能有一个
- 三个内容
- 类型:必须是数值类型,当选择decimal和numeric时,小数位必须为0
- 种子:第一行的值,默认为1
- 递增量:相邻两个表示值之间的增量
9、T-SQL语句管理
- 创建表创建表
1 CREATE TABLE 表名( 2 第一列 数据类型() 3 第二列 数据类型() 4 ... 5 ) 6 7 可以指定以下内容 8 identity(1,1) 标识列,种子为1,递增值为1 9 not null 制定该列不能为空 10 primary key 指定主键 11 check(条件) 对该列做约束