ACCP V4.01
第二章
SQL Server数据库表管理
ACCP V4.02
回顾
数据库的作用
数据库的发展过程以及当前流行的数据库
数据库基本概念:数据存储方式、实体和记录、
数据库和数据库表、数据冗余和数据完整性
使用企业管理器创建组、注册、用户
在企业管理器中创建数据库
收缩、移动和配置数据库的选项
ACCP V4.03
本章目标
使用企业管理器创建数据库表
设置表的主键、外键和建立表之间的关系
为表增加约束
ACCP V4.04
再论数据完整性 2-1
数据完整性可靠性 准确性
ACCP V4.05
再论数据完整性 2-2
数据存放在表中
“数据完整性的问题大多是由于设计引起的”
创建表的时候,就应当保证以后数据输入是正确的
—— 错误的数据、不符合要求的数据不允许输入创建表:保证数据的完整性 = 实施完整性约束
ACCP V4.06
完整性包括 …2 -1
输入的类型是否正确?
—— 年龄必须是数字
输入的格式是否正确?
—— 身份证号码必须是 18位
是否在允许的范围内?
—— 性别只能是”男”或者”女”
是否存在重复输入?
—— 学员信息输入了两次
是否符合其他特定要求?
—— 信誉值大于 5的用户才能够加入会员列表
……
列值要求(约束)
整行要求(约束)
ACCP V4.07
完整性包括 …2 -2
域完整性实体完整性引用完整性自定义完整性
ACCP V4.08
实体完整性河南新乡赵可以0010016
河南新乡张丽鹃0010015
江西南昌雷铜0010014
湖南新田吴兰0010013
山东定陶李山0010012
…,地址姓名学号江西南昌雷铜0010014
×
约束方法:唯一约束、主键约束、标识列
ACCP V4.09
域完整性河南新乡赵可以0010016
河南新乡张丽鹃0010015
江西南昌雷铜0010014
湖南新田吴兰0010013
山东定陶李山0010012
…,地址姓名学号湖北江门李亮8700000000
×
约束方法:限制数据类型、检查约束、外键约束、
默认值、非空约束
ACCP V4.010
引用完整性河南新乡赵可以0010016
河南新乡张丽鹃0010015
江西南昌雷铜0010014
湖南新田吴兰0010013
山东定陶李山0010012
…地址姓名学号
980010021数学
×
约束方法:外键约束科目 学号 分数 …
数学 0010012 88
数学 0010013 74
语文 0010012 67
语文 0010013 81
数学 0010016 98
ACCP V4.011
自定义完整性
AV121322乔峰CV0016
AV372133玄痛CV0015
AV378291沙悟净AV0014
AV378290猪悟能AV0013
AV378289孙悟空AV0012
…,会员证用户姓名用户编号约束方法:规则、存储过程、触发器帐号 姓名 信用 …,
00192 孙悟空 7
00288 猪悟能 6
12333 段誉 8
90111 虚竹 40
93000 岳不群 -10
×
触发器:检查信用值
ACCP V4.012
表操作在企业管理器中演示打开表、数据输入等操作 …
ACCP V4.013
创建数据库表 -1
ACCP V4.014
SQL Server的数据类型分类 备注和说明 数据类型 说明二进制数据类型 存储非子符和文本的数据 Image 可用来存储图像文本数据类型 字符数据包括任意字母、符号或数字字符的组合
Char 固定长度的非 Unicode 字符数据
Varchar 可变长度非 Unicode 数据
Nchar 固定长度的 Unicode 数据
Nvarchar 可变长度 Unicode 数据
Text 存储长文本信息
Ntext 存储可变长度的长文本日期和时间 日期和时间在单引号内输入 Datetime 日期和时间数字数据 该数据仅包含数字,包括正数、负数以及分数
int
smallint
整数
float
real
数字货币数据类型 用于十进制货币值 Money
Bit数据类型 表示是 /否的数据 Bit 存储布尔数据类型
ACCP V4.015
思考
电话号码一般使用什么数据类型存储?
性别一般使用什么数据类型存储?
年龄信息一般使用什么数据类型存储?
照片信息一般使用什么数据类型存储?
薪水一般使用什么数据类型存储?
ACCP V4.016
创建数据库表 -2
ACCP V4.017
思考
学员姓名允许为空吗?
家庭地址允许为空吗?
电子邮件信息允许为空吗?
考试成绩允许为空吗?
ACCP V4.018
创建数据库表 -3
ACCP V4.019
思考
在主键列输入的数值,允许为空吗?
一个表可以有多个主键吗?
在一个学校数据库中,如果一个学校内允许重名的学员,
但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗?
ACCP V4.020
选择主键的原则
最少性
尽量选择单个键作为主键
稳定性
尽量选择数值更新少的列作为主键
ACCP V4.021
创建数据库表 -4
表中没有合适的列作为主键怎么办?
ACCP V4.022
思考
标识列允许为字符数据类型吗?
如果标识列 A的初始值为 1,增长量为 2,则输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始?
ACCP V4.023
创建数据库表 -5
ACCP V4.024
创建数据库表 -6
演示建立主 -外键关系 ……
ACCP V4.025
关系图演示关系图 ……
ACCP V4.026
主表和从表
1,当主表中没有 对应 的记录时,不能 将记录添加到 子 表
—— 成绩表中不能出现在学员信息表中不存在的学号;
2,不能 更改主表中的值 而 导致 子 表中的记录孤立
—— 把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;
3,子表 存在与 主表对应的 记录,不能从 主表中删除 该行
—— 不能 把 有成绩的 学员删除了
4,删除主表前,先删子表
—— 先删学员成绩表、后删除学员信息表
ACCP V4.027
创建数据库表 -7
演示建立检查约束 ……
ACCP V4.028
创建数据库表完毕!
输入数据项,验证主键、主外键关系、检查约束 ……
ACCP V4.029
导入 -导出数据演示导出数据为 EXCEL文件 ……
ACCP V4.030
总结
SQL Server创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程
实体完整性数据行不能存在重复,引用完整性要求子表中的相关项必须在主表中存在
域完整性实现了对输入到特定列的数值的限制
SQL Server中存在五种约束,分别是:主键约束、外键约束、检查约束、默认约束和唯一性约束(唯一性约束将在后续课程中使用 SQL语句实现)
ACCP V4.031
总结
创建数据库表需要:确定表的列名、数据类型、是否允许为空,还需要确定主键、必要的默认值、标识列和检查约束
如果建立了主表和子表的关系,则:
—— 子表中的相关项目的数据,在主表中必须存在;
—— 主表中相关项的数据更改了,则子表对应的数据项也应当随之更改;
—— 在删除子表之前,不能够删除主表;