资源简介 (共36张PPT)第4章 数据库表的管理本章目标:理解数据完整性、主键和外键的概念及在数据库表中的应用掌握数据库表设计方法和设计要素,掌握基本的数据类型的用法掌握建立数据库表方法掌握查看表的信息、修改和删除数据表的方法掌握查看数据库表的依赖关系掌握添加、修改和删除表中数据的方法掌握数据库不同格式文件的导入与导出操作本章内容4.1表相关的几个概念4.2 设计表4.3 创建表4.4 表的管理和维护4.5 表数据的添加、修改和删除4.6 导入和导出数据4.1表相关的几个概念4.1.1数据完整性数据的完整性是指数据的准确性和一致性,主要用以保证数据库中数据的质量。它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入、输出造成无效操作或报错而提出的。数据的完整性主要分四类:1.实体完整性实体完整性,又称行完整性,用以保证表中的每一行数据在表中是唯一的。保证实体完整性的措施:PRIMARY KEY约束、UNIQUE约束或IDENTITY列。2.域完整性域完整性,又称列完整性,是指数据库中的数据列必须满足某种特定的数据类型和数据约束,其中约束又包括取值的范围和精度。域的完整性是用来保证数据表特定列输入的有效性与正确性,保证域完整性的措施:限制数据的类型或格式、CHECK约束、DEFAULT约束、NOT NULL约束或规则。3.参照完整性参照完整性,又称引用完整性,是建立在外键与主键或外键与唯一键之间的一种引用规则,是确保主表的数据和从表的数据的一致性,防止数据的丢失和无意义的数据在数据库中的扩散。4.用户定义完整性用户定义的不属于其他任何完整性类别的特定业务规则,称为用户定义完整性。所有完整性类别都支持用户定义完整性。4.1.2主键和外键1.主键(primary key)主键是指定表的一列或几列的组合来唯一标识实体,即能在表中唯一地指定一行记录,这样的一列或多列的组合称为表的主键(primary key,PK),定义数据表的主键列主要是确保表中行的数据能够通过主键进行区分,避免出现数据重复的记录,这也是实现实体完整性约束的主要工具。2.外键(foreign key)外键是定义一个列或多个列的组合为当前表的外键,该外键值引用其他表中的主键约束所映射列的列值。用于建立和加强两个表(主表和从表)的一列或多列数据之间的关联,当对表中添加、修改和删除数据时,通过参照的完整性保证主表和从表数据的一致性,能够在同一个数据库的两个表之间建立关联,并维护表与表之间的依赖关系。4.2 设计表4.2.1 表的设计要素在设计表时需要确定如下项目。(1)表的名称。(2)表中每一列的名称。(3)表中每一列的数据类型和长度。(4)表中的列是否允许空值、是否唯一、是否要进行默认值设置或添加用户定义约束。(5)表中需要的索引的类型和需要建立索引的列。(6)表间的关系,即确定哪些列是主键,哪些是外键。良好的表的设计需要能够精确的捕捉用户需求4.2.2 数据类型在SQL Server 2008中提供的系统内置数据类型,可分为整型数据类型、浮点数据类型、字符数据类型、日期和时间数据类型、货币数据类型、二进制数据类型和其他数据类型七个类型。如果用户有特殊的需要,还可以在系统数据类型的基础上创建用户自定义的数据类型。1.整型数据类型类型名称 取值范围及说明int -231~231-1之间的整型数据,存储大小为4字节smallint -215(-32,768)~215-1(32,767)之间的整型数据,存储大小为2字节bigint -263~263-1之间的整型数据,存储大小为8字节tinyint 0~255之间的整型数据,存储大小为1字节bit 可以取值为1、0或NULL。存储大小为1位,相等于逻辑数据类型,TRUE和FALSE可以转换为bit值,TRUE转换为1,FALSE转换为02.浮点数据类型类型名称 取值范围及说明real 存储范围为-3.40E+38~3.40E+38,数据精度为7位有效数字,存储大小为4字节float [(n)] 其中n为用于存储float数值尾数的位数(以科学记数法表示),因此可以确定精度和存储大小。n是介于1和53之间的某个值。n的默认值为53。此数据类型最大存储范围为–1.79E + 308 ~ 1.79E + 308decimal[(p[,s])] 固定精度和小数位数。使用最大精度时,有效值从-1038+1~1038-1。P(精度)为最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。1≤p≤38。默认精度为18。s(小数位数)小数点右边为可以存储的十进制数字的最大位数。0≤s≤p。仅在指定精度后才可以指定小数位数。默认的小数位数为0。最大存储大小基于精度而变化numeric[(p[,s] )] 功能上等价于decimal[ (p[ , s] )]3.字符数据类型类型名称 取值范围及说明char [(n)] 固定长度,非Unicode字符数据,长度为n个字节。1≤n≤8000,存储大小是n个字节varchar [(n | max) ] 可变长度,非Unicode字符数据。1≤n≤8000。max指示最大存储大小是231-1个字节。存储大小是输入数据的实际长度加2个字节text 长度可变的非Unicode数据,最大长度为231-1个字节。nchar [(n)] n个字符固定长度的Unicode字符数据。1≤n≤4000。存储大小为两倍n字节nvarchar[(n | max ) ] 可变长度Unicode字符数据。1≤n≤4000。max指示最大存储大小为231-1字节。存储大小是所输入字符个数的两倍+2个字节ntext 长度可变的Unicode数据,最大长度为231-1个字节。存储大小是所输入字符个数的两倍(以字节为单位)4.日期和时间数据类型类型名称 取值范围及说明date 指定年、月、日的值,格式为YYYY-MM-DD,表示0001年1月1日~9999年12月31日的日期,存储占3字节datetime 1753-01-01~9999-12-31的日期,00:00:00~23:59:59.997的时间,占用的存储空间大小为8个字节datetime2[(fractional seconds precision))] 1753-01-01~9999-12-31的日期,00:00:00~23:59:59.9999999的时间,占用的存储空间大小为6~8个字节datetimeoffset[(fractional seconds precision)] 用于定义一个与采用24小时制并可识别时区的一日内时间相组合的日期。0000年1月1日~9999年12月31日的日期和时间,默认值为10个字节的固定大小smalldatetime 1900-01-01~2079-12-31的日期和时间,时间表示精度为分钟,占用的存储空间大小为4个字节time[(fractional second precision) ] 定义一天中的某个时间。此时间不能感知时区且基于24小时制。固定5个字节5.货币数据类型类型名称 取值范围及说明money 取值范围为-922,337,203,685,477.5808~922,337,203,685,477.5807,占8个字节smallmoney 取值范围为-214,748,3648~-214,748,3647,占4个字节6.二进制数据类型名称 取值范围及说明binary[(n)] 固定长度为n字节的二进制数据。1≤n≤8000,数据的存储长度为n字节varbinary[(n)] n字节变长度为的二进制数据。1≤n≤8000,数据的存储长度为实际输数据长度+2字节7.其他数据类型类型名称 取值范围及说明geography 地理空间数据类型。此类型表示圆形地球坐标系中的数据geometry 平面空间数据类型。此类型表示欧几里得(平面)坐标系中的数据hierarchyid 是一种长度可变的系统数据类型。可使用该类型表示层次结构中的位置sql_variant 用于存储SQL Server支持的各种数据类型(不包括 text、ntext、image、timestamp和sql_variant)的值timestamp timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它记录数据库中数据修改发生的相对顺序。这一时间戳值在数据库中必须是唯一的uniqueidentifier 用于存储全局唯一标识符(GUID)xml 用于存放XML文档或者部分片段8.用户自定义数据类型用户自定义数据类型是在SQL Srever2008系统提供的基本数据类型基础上,根据实际需要由用户自己定义的数据类型。一般地,当多个表的列中要存储同样的数据,且想确保这些列具有完全相同的数据类型、相等的长度、是否为空的属性时,可以在这个数据库中使用用户自定义数据类型来定义一个符合要求的数据类型。如果在某个数据库中用户自定义了一个数据类型,那么在这个数据库中定义表结构时,表中列的数据类型就可以选择这个自定义的数据类型。(1)使用SQL Server Management Studio创建用户自定义数据类型【例4-1】在“学生选课”数据库中,创建一个用户自定义数据类型StudentId(是数据库表中的“学号”字段所用的数据类型)。(2)T-SQL语句调用系统存储过程创建用户自定义数据类型语法格式:sp_addtype [@typename=] type,[@phystype=] system_data_type[,[@nulltype=] ‘null_type’]USE 学生选课GOEXEC sp_addtype CourseId, ‘tinyint’, ‘not null’【例4-2】在“学生选课”数据库中,建立一个用户自定义数据类型CourseId(后面数据库表的列“课程号”所用的数据类型)。4.2.3 约束1.CHECK约束CHECK约束用于限制一列或多列输入的值的范围。往表中输入数据时,系统会依从逻辑表达式判断数据的有效性,也就是一个列的输入内容必须满足CHECK约束的条件,否则,数据无法正常输入,从而强制数据的域完整性2.DEFAULT约束若将表中某列定义了DEFAULT约束后,用户在插入新的数据行时,如果没有为该列指定数据,那么系统将默认值赋给该列,当然该默认值也可以是空值(NULL)。3.PRIMARY KEY约束表中经常用一列或多列的组合,其值能唯一标识表中的每一行。这样的一列或多列称为表的主键(Primary Key),通过它可以强制表的实体完整性。一个表只能有一个主键,而且主键约束中的列不能为空值且不能出现重复值。如将“学生”表的学号设为该表的主键,在录入记录时,学号不能为空,且两条记录的学号不能重复。如果主键约束定义在不止一列上,则其中某一列中的值可以重复,但主键约束定义中的所有列的组合的值必须唯一,且这些列的值都不能为空4.FOREIGN KEY约束外键(Foreign Key)是用于建立和加强两个表(主表与从表)的一列或多列数据之间的关联,当数据添加、修改或删除时,通过参照完整性保证两表之间数据的一致性。5.UNIQUE约束UNIQUE约束用于确保表中的两个数据行在非主键列中没有相同的列值。与PRIMARY KEY约束类似,UNIQUE约束也强制唯一性,为表中的一列或多列提供实体完整性。但UNIQUE约束用于非主键的一列或多列组合,且一个表可以定义多个UNIQUE约束,另外UNIQUE约束可以用于定义允许空值的列;而PRIMARY KEY约束只能用在唯一列上且不能为空值。4.2.3表的设计实例1.学生选课系统表的数据构序号 列名 数据类型 允许NULL值 约束1 学号 char(8) 不能为空 主键2 姓名 char(8) 不能为空3 性别 bit4 出生日期 smalldatetime5 班级 varchar(20)(2)教师表的结构设计序号 列名 数据类型 允许NULL值 约束1 工号 char(4) 不能为空 主键2 姓名 char(8) 不能为空3 性别 bit4 学历 varchar(10) 只能为“专科”、“本科”、“硕士研究生”、“博士研究生”5 职称 varchar(8) 只能为“助理讲师”、“讲师”、“副教授”、“教授”;默认为“讲师”(3)课程表的结构设计序号 列名 数据类型 允许NULL值 约束1 课程号 tinyint 不能为空 主键2 课程名 char(40) 唯一约束3 学时 tinyint 范围在36~804 学分 decimal(3,1) 范围在1.0~4.05 授课教师 char(4) 是教师表工号的外键(4)选课表的结构设计序号 列名 数据类型 允许NULL值 约束1 课程号 tinyint 主键(课程号,学号),其中课程号是课程表课程号的外键,学号是学生表学号的外键2 学号 char(8) 3 成绩 tinyint 范围在0~1002. 学生选课系统数据库的表的数据(1)学生表学号 姓名 性别 出生日期 班级10101001 张永峰 0 1993-8-1 电子商务10110101002 何小丽 1 1992-11-3 电子商务10110101003 张宇 0 1992-8-21 电子商务10110102001 王斌 1 1991-7-14 网络技术10110102002 包玉明 1 1993-11-15 网络技术10110102003 孙平平 0 1992-2-27 网络技术10110102004 翁静静 0 1992-5-9 网络技术10111101001 刘淑芳 0 1994-6-10 电子商务11111101002 王亚旭 1 1993-3-18 电子商务11111101003 高磊 1 1993-5-11 电子商务111(2)教师表工号 姓名 性别 学历 职称0001 吴亚飞 1 本科 讲师0002 李琦 1 硕士研究生 副教授0003 王艳红 0 硕士研究生 讲师0004 马志超 1 博士研究生 教授0005 万丽 0 硕士研究生 助理讲师(3)课程表课程号 课程名 学时 学分 授课教师1 文学欣赏 40 1.5 00012 中国历史文化 60 2 00033 视频编缉 70 2.5 00024 音乐欣赏 40 1.5 0005(4)选课表学号 课程号 成绩10101001 1 7310101001 3 8110101001 4 5110101002 1 7810101003 3 6910102001 1 5010102002 3 9510102002 4 7510102002 2 6810102003 1 8510102003 2 7810102003 3 6710102003 511101001 1 4911101001 2 6711101001 4 6211101002 1 6711101002 211101003 2 8811101003 3 9011101003 4 82 展开更多...... 收起↑ 资源预览