1、,数据库表的建立与删除,回顾,数据库的作用 数据库的发展过程以及当前流行的数据库 数据库基本概念:数据存储方式、实体和记录、数据库和数据库表、数据冗余和数据完整性 使用SQL Server管理平台创建组、注册 在SQL Server管理平台中和T-SQL语句创建、删除数据库,本章目标,使用SQL Server管理平台创建和删除数据库表 使用T-SQL Server语句命令行创建和删除数据库表 设置数据库表的主键、外键和建立表之间的关系 为数据库表增加约束,数据完整性,数据完整性,+,=,数据存放在表中 “数据完整性的问题大多是由于设计引起的” 创建表的时候,就应当保证以后数据输入是正确的错误的
2、数据、不符合要求的数据不允许输入,创建表:保证数据的完整性 = 实施完整性约束,完整性包括,输入的类型是否正确? 出生日期不是字符 输入的格式是否正确? 身份证号码是18位或15位 是否在允许的范围内? 性别只能是”男”或者”女” 是否存在重复输入? 学生信息输入了两次 是否符合其他特定要求? 班级编号要受班级表的控制,完整性包括,实体完整性,约束方法:唯一约束、主键约束、标识列,域完整性,约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束,参照完整性,约束方法:外键约束,SQL Server管理平台的表操作,在对象资源管理器中演示打开表、数据输入等操作,创建数据库表-数据类型,SQ
3、L Server的数据类型,思考,电话号码一般使用什么数据类型存储? 性别一般使用什么数据类型存储? 年龄信息一般使用什么数据类型存储? 照片信息一般使用什么数据类型存储? 工资一般使用什么数据类型存储?,创建数据库表-空约束,学号允许为空吗? 姓名允许为空吗? 家庭地址允许为空吗? 电子邮件信息允许为空吗? 考试成绩允许为空吗?,思考,创建数据库表-主键,在主键列输入的数值,允许为空吗? 一个表可以有多个主键吗? 在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗?,思考,最少性 尽量选择单个键作为主键稳定性 尽量选择数
4、值更新少的列作为主键,选择主键的原则,表中没有合适的列作为主键怎么办?,创建数据库表-标识列,标识列允许为字符数据类型吗? 如果标识列A的初始值为1,增长量为2,则输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始?,思考,标示列的实现必须注意:,1 标识列的数据类型必须是整型 2 定义成标识列后,需要分别指定标识种子和标识增量,默认值为1 3 输入该列数据时,第一次以标识种子开始,以后以标识增量增加数值 4 当删除某一条记录时,替他所有标识列的值不变,当增加一条新记录时,仍以前一条输入的标示列的值为基础,按标识增量增加。,创建数据库表-默认约束,创建数据库表外键,演示建立
5、主-外键关系,创建数据库表外键,演示建立主-外键关系,演示关系图,关系图,1、当主表中没有对应的记录时,不能将记录添加到子表成绩表中不能出现在学员信息表中不存在的学号;2、不能更改主表中的值而导致子表中的记录孤立把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;3、子表存在与主表对应的记录,不能从主表中删除该行不能把有成绩的学员删除了4、删除主表前,先删子表先删学员成绩表、后删除学员信息表,主表和从表,演示建立检查约束,创建数据库表检查约束,T-SQL 语句命令的表操作,create table ( 列名1 列的数据类型及宽度等特征,列名2 列的数据类型及宽度等特征, ),T-SQ
6、L 语句命令的表操作,主键约束,空约束,默认约束,检查约束,唯一性约束,外键约束,输入数据项,验证主键、主外键关系、检查约束,创建数据库表约束,如果用户想自己给以约束定义一个名称,则需要把每一个约束修改为constraint 用户定义的约束名形式create table tblstudent (stud_id char (8)constraint pk_tblstud primary key,stud_name varchar(8) not null,stud_sex char(2) constraint df_stud default 男 constraint ck_stud check (
7、stud_sex in (男, 女)),Birth datetime,enroll datetime,identity_id varchar(18)constraint uq_stud unique,class_id char(6)constraint fk_stud foreign key references tblclass(class_id) ),总结,SQL Server创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程 实体完整性数据行不能存在重复,引用完整性要求子表中的相关项必须在主表中存在 域完整性实现了对输入到特定列的数值的限制 SQL Server中存在五种约束,分别是:主键约束、外键约束、检查约束、默认约束和唯一性约束,创建数据库表需要:确定表的列名、数据类型、是否允许为空,还需要确定主键、必要的默认值、标识列和检查约束 如果建立了主表和子表的关系,则: 子表中的相关项目的数据,在主表中必须存在; 主表中相关项的数据更改了,则子表对应的数据项也应当随之更改; 在删除子表之前,不能够删除主表;,