1、数 据 库 原 理 及 应 用( SQL Server 2005)授课教师: *第 7章 表的创建与约束机制http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn-
2、http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/*第 7章 表的创建与约束机制 任务目标 : 掌握 T-SQL语句创建表的方法; 掌握使用 SSMS创建表的方法; 掌握 T-SQL语句对表结构修改的方法; 掌握使用 SSMS修改表结构的方法; 掌握 T-SQL语句对表中数据进行操作; 会利用 SSMS对表中数据进行操作; 理解并掌握 5种约束机制基本概念; 会
3、使用 T-SQL语句和利用 SSMS创建约束的方法。http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/
4、http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/*第 7章 表的创建与约束机制7.1 数据表的基本概念7.2 表的设计与创建7.3 管理表7.4 数据的插入、更新和删除7.5 SQL Server约束机制本章小结习题与实验http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ htt
5、p:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/*7.1 数据表的
6、基本概念 表是用来存储数据和操作数据的逻辑结构。关系数据库中的所有数据都存储在表中。因此表是 SQL Server 数据库中最为重要的组成部分。表是由行和列组成,最多可以有 1024列,每行对应实体集的一个实体,也称为记录,每列代表一个属性,也称为字段。 SQL Server中,表分为系统表和用户表两类。1系统表 默认情况下,每个数据库都有一组系统表,系统表主要记录所有服务器活动的信息,大多数系统表的表名以 sys开头。系统表中的信息组成了系统使用的数据字典。任何用户都不能直接修改系统表,也不允许直接访问系统表中的信息,如要访问其中的内容,最好通过系统存储过程或系统函数来访问。2用户表 用户表
7、是由用户自定义建立的表,用来存储用户特定的数据,又可分为永久表和临时表两种。http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ ht
8、tp:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/*7.1 数据表的基本概念( 1)永久表 永久表存储在用户数据库中,用户数据通常存储在永久表中,如果用户没有删除永久表,永久表及其存储过程将永久存在。( 2)临时表 临时表存储在 tempdb数据库中,当不再使用时,系统会自动删除。临时表又可分为本地临时表和全局临时表两种。 本地临时表:表名以 #开头,仅对当前连接数据库的用户有效,当用户断开连
9、接时,本地临时表自动删除。 全局临时表:表名以 #开头,对所有连接数据库的用户有效,当所有用户断开连接,全局临时表才自动删除。http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/
10、www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/*7.2 表的设计与创建 设计表时,要事先确定需要什么样的表,表中有哪些数据,表中各字段的数据类型及其属性,建表一般经过定义表结构、设置约束、输入记录等步骤,其中设置约束既可以在定义表结构时进行,也可以在定义表结构完成之后进行。1定义表结构 确定表的各列的列名及其数据类型、数据长度、是否允许为空
11、等。 定义表结构时要注意:7.2.1表的设计*7.2 表的设计与创建( 1)允许空:决定某列在表中是否允许为空值。空值是不等于零、空白或零长度的字符串。( 2)默认值:当在表中插入该列为空值的行时,用此默认值。设置该值能够起到默认输入的作用,减少输入数据的工作量。如设置性别的默认值为 “男 ”。( 3)标识列:设置为标识的列,可以有系统自动操作计数(自动编号),不用用户输入,对于一些具有递增或递减自动编号性质的列,如订单号、发票号等可以设置此附加属性。将一个字段设置为标识列,其数据类型必须是以下类型之一:int、 bigint、 smallint、 tinyint、或小数位数为 0的 deci
12、mal、numeric字段。该字段不允许为空,且不能有默认值。( 4)计算列:计算字段是一个虚拟的字段,它并未将计算结果实际存储在表中,而只是在运行时才计算出结果。在设置计算字段时,不需要指定该字段的数据类型,当保存表结构,SQL Server会自动决定计算字段的数据类型。7.2.1表的设计*7.2 表的设计与创建 2设置约束 约束定义了关于允许什么数据进入数据库的规则,是分配给表或表中某列的一个属性。使用约束,主要目的在于防止列中出现非法数据,可以自动维护数据库中的数据完整性。数据完整性是指数据的正确性、完备性和一致性,是衡量数据库质量好坏的重要标准。使用INSERT、 DELETE、 UP
13、DATE语句修改数据库内容时,数据的完整性可能会遭到破坏。可能会将无效的数据添加到表中,如将学生考试成绩输入成负数。为了解决类似的问题, SQL Server提供了对数据库中表、列实施数据完整性的方法。 完整性的类型主要包括:7.2.1表的设计*7.2 表的设计与创建( 1)域完整性 域完整性是指一个列的输入有效性,是否允许空值。通常使用有效性检查强制域完整性,也可以通过限定列中允许的数据类型、格式或可能值的范围来强制域完整性。( 2)实体完整性 实体完整性是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称之为主键。也就是说
14、,表中主键在所有行上必须取值唯一且不能为空值。7.2.1表的设计*7.2 表的设计与创建( 3)参照完整性 参照完整性也叫引用完整性。参照完整性总是保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。 在 SQL Server中约束是强制数据完整性的首选方法,它是强制数据完整性的 ANSI标准方法。每种数据完整性类型,使用单独的约束类型进行强制。约束确保在列中录入有效的数据值,并且能维护表之间的关联关系。具体的约束类型及实现方法将在 7.5节做详细介绍。3输入记录 表结构设计好之后,就可以向表中输入数据了。输入记录时,必须遵循所设置的约束条件,否则,服务器将拒绝接受所输入的不非法数据。 按照学生成绩管理系统数据库( SGMS)实际问题的需要,设计了 9张表,分别为: student、 course、coursetype、 teacher、 users、 department、 class、speciality、 grade,表结构见附录。7.2.1表的设计