基本概念
- 数据库:DataBase 按照一定数据结构来组织,存储和管理数据的仓库。存储在一起的相关的数据的一个集合
- 数据库管理系统:DataBase Management System 为管理数据库而设计的一个电脑软件系统
分为两种:- 关系型数据库:建立在模型基础上的数据库 SqlServer MySql Oaracle
- 非关系型数据库:不同点:不适用SQL作为查询语言
- 数据库系统: 数据库和数据库管理系统组成
数据库的组成
- 数据库:文件和文件组组成
- 数据库文件:
- .mdf:主要数据文件 存放数据和数据库的初始化信息。每个数据库有且只有一个主要数据文件。
- .ndf:次要数据文件 存放除了主要数据文件以外的所有数据的文件。次要数据文件并不是必须的,可以没有,如果有,可以是一个,也可以是多个
- .ldf:事务日志文件 存放用于恢复数据库所有日志信息。每个数据库至少有一个日志文件,也可以有多个。
- 文件组:
- 是数据库文件的一种逻辑管理单位,它将数据库文件分成不同的文件组,方便管理和分配。
- 主文件组 Primary 主要数据文件和没有明确指派给其他文件组的文件。
- 用户自定义的文件组 Create DataBase 或 alter database 语句中 fileGroup关键字指定的文件组。
- 设计原则:
- 文件只能是一个文件组的成员
- 文件或文件组不能由一个以上的数据库使用
- 数据和日志信息不能属于同一文件或文件组
- 日志不能作为文件组的一部分
数据库常用对象
1. 表: 包含数据库中所有数据的对象,由行和列组成,用于组织和存储数据。
2. 字段: 表中的列,一个表可以有多个列,有自己的属性:数据类型(决定了该字段存储哪中类型的数据),大小(长度)。
3. 视图: 表(虚拟表)一张或多张表中导出的表,用户查 看数据的一种方式,结构和数据的是建立在对表的查询基础之上的。
4. 索引: 为了给用户提供一种快速访问数据的途径,索引是依赖于表而建立,检索数据时不用对整个表进行扫描,可以快速找到所需的数据。
5. 存储过程: 是一种为了完成特定功能的SQL语句的集合(可以有查询,插入,修改,删除),编译后,存储在数据库中,以名称进行调用,当调用执行时,这些操作就会被执行。
6. 触发器: 在数据库中,属于用户定义的SQL事务命令集合,针对于表来说,当对表执行增删改操作时,命令就会自动触发而去执行。
7. 约束: 对数据表中的列,进行的一种限制。可以更好的规范表中的列。(对一个表中的属性操作的限制叫做约束)
- 主键约束:
- 不允许重复元素,避免了数据的冗余
- 外键约束:
- 通过外键约束从语法上保证了本事物所关联的其他事物一定是存在的。
- 事物与事物之间的关系是通过外键来体现的
- check约束:
- 保证事物的取值在合法的范围之内
- default约束:
- 保证事物属性一定会有一个值
- 唯一约束(nuique):
- 保证事物属性的取值不允许重复,但允许其中有一行且只能有一行为空
8. 缺省值: 对表中的列可以指定一个默认值,当进行插入时,如果没有为这个列插入值,那么就好自动以预先设置的默认值自动补充。
数据类型分类
-
数值型:
-
整数型:
- bigint (8字节)> int(4字节) > smallint (2字节) > tinyint(1字节)
-
浮点型:
-
float 近似数值,存在精度损失 real近似数组 = float(24)
-
decimal(p,s) 精确数值, 不存在精度损失
p:指定小数的最大位数,小数点的左侧和右侧的数字总量不超过p。范围 1~38,默认18
s: 指定小数点右侧的小数位数,只有在指定了精度的情况下才能指定s,默认值0
-
-
货币类型: smallmoney (4字节)< money(8字节)精确到万分之一
-
-
字符型:
-
Character 字符串
- char 固定长度 8000字符
- varchar(n) 可变长度 8000字符
- varchar(max) 可变长度
- text 可变长度 最多2GB
-
Unicode字符串:(可以避免中文乱码)
- nchar(n) 固定长度 4000
- nvarchar(n) 可变长度 4000
- nvarchar(max) 可变长度
- ntext 最多2GB
-
-
前面带n,存储汉字,英文,数字长度都是1,存储2个字节
-
前面不带n,存储英文,数字就是1个长度,中文2个长度
-
日期型:
- datetime 精度高 3.33毫秒
- datetime2 高精度 100纳秒
- smalldateime 精度1分钟
- date 仅存储日期
-
其他类型:
- uniqueidentifier 存储全局标识符
- uniqueidentifier guid 全球唯一标识符
创建表及主外键
1.工具表创建
一个表中会存很多记录,需要一个列来唯一标识一条数据。
主键:
- 什么样的列可以设置为主键:
值不能重复,不能为空 - 什么叫标识列?
一个列设置成标识列,它就不能再手动插入,插入时,自动生成的。这个列,类型必须是整形 - 标识列
标识种子(第一条记录标识列的值) 增量
2. 创建主键
联合主键 唯一标识
3.创建外键
外键:
- 一般在两个表之间要建立关联的时候创建
- 一个列创建为外键,它在另外一个表中必须是主键
- 两个表一但建立外键关系,外键表里的对应的外键列,它的值必须是它对应的主键表里的主键值,如果你想插入一个不存在的值,你是插入不进去的