1、第6章 数据表,数据表是数据库中最重要的数据对象,数据库中的数据全部保存在数据表中,用户对数据的操作也主要集中在数据表上。在SQL Server 2005数据库中,数据表分为用户定义数据表、临时表、已分区表和系统表。,6.1 用CREATE TABLE语句创建表,创建数据库后,就可以在数据库中创建数据表了。数据存储于表中,表存储于数据库文件中,任何拥有创建数据库权限的用户都可以进行该操作。在SQL Server 2005数据库系统中,可以使用CREATE TABLE语句创建表。,6.1.1 一个创建表的小实例,首先来看一个创建数据表的小实例:示例:以下示例用于设计数据表,以保存人员的基本信息,
2、这在人力资源数据库、客户关系数据库中十分常见。人员信息一般包括姓名、出生年月、地址、电话等基本信息。(具体内容请参照书。),6.1.2 基本语法,使用CREATE TABLE语句创建表是数据库管理员的常见工作,该语句功能十分的强大,其参数据较多、语法结构也比较的复杂,但提供了更高的灵活性。(具体内容请参照书。),6.1.3 创建自动编号列,自动编号列是SQL Server 2005数据库提供的自动功能,用于建立自动增加数值的数据列,在4.5.3节中讲述了使用SQL Server Management Studio工具建立它的过程,用户可以使用IDENTITY关键字在T-SQL语句中建立,(具体
3、内容请参照书。),6.1.4 创建非空列,列是否为空决定表中的行是否可为该列包含空值。空值不同于零,也不同于空白或长度为零的字符串。NULL(空)的意思是没有输入,出现NULL通常表示值未知或未定义。,6.1.5 字段的默认值,如果插入行时没有为列指定值,默认值指定列中使用的值,用户可以通过在CREATE TABLE语句中使用DEFAULT关键字来创建默认值定义。,6.1.6 选择表存放文件组,不同的数据表可以保存在不同文件组中,这为用户提供了非常有用的策略。将不同重要程度的数据表,保存在不同的磁盘的不同的文件组中,这不仅有利于提高数据表的读写性能,更加有利于根据文件的重要程度实施保存和备份策
4、略,对于文件组的详细说明将在第18章详细的说明。,6.1.7 使用Check约束,创建表时,用户可以创建CHECK约束作为表定义的一部分。如果表已经存在,则可以添加CHECK约束,表和列可以包含多个CHECK约束。,6.1.8 设置字段的排序规则,排序规则是根据特定语言和区域设置的标准,指定对字符串数据进行排序和比较的规则。用户可以在CREATE TABLE语句中设置字段的排序规则。,6.2 用ALTER TABLE语句修改表,对表的结构进行修改,是SQL Server 2005数据库管理员的常用的操作,用户可能通过ALTER TABLE语句,重新定义数据表的结构。,6.2.1 基本语法,使用
5、ALTER TABLE通过更改、添加或删除列和约束,或者启用或禁用约束和触发器,从而修改表的定义,SQL Server 2005数据库的ALTER TABLE语句提供了丰富的参数项,本节中仅列出常用的语法结构。,6.2.2 修改字段属性,示例:本节列举一个示例,使用ALTER TABLE ALTER COLUMN修改数据表中的字段的数据类型,由int型更改为decimal型,具体操作步骤请参考如下过程。(具体内容请参照书。),6.2.3 添加字段,示例:本节列举一个示例,使用ALTER TABLE ADD修改数据表,添加一个允许空值的列,(具体内容请参照书。),6.2.4 删除字段,示例:本节
6、列举一个示例,使用ALTER TABLE DROP COLUMN修改数据表,从表中删除一个数据列,具体操作请参考如下步骤。(具体内容请参照书。),6.2.5 添加约束,本节列举多个示例分别使用ALTER TABLE为数据库加入CHECK约束、DEFAULT约束等特性。 1添加CHECK约束的示例 2添加一个DEFAULT约束的示例 3添加多个包含约束列的示例 4添加FOREIGN KEY约束的示例(具体内容请参照书。),6.2.6 禁用/启用CHECK约束,在执行一些特定操作(例如INSERT操作、UPDATE操作和复制处理)时,实现禁用现有的CHECK约束,将极大提高导入数据等操作的执行效率
7、。(具体内容请参照书。),6.2.7 删除约束,示例:以下示例,使用ALTER TABLE DROP CONSTRAINT修改数据表,删除UNIQUE约束,具体操作步骤请参考如下过程。(具体内容请参照书。),6.2.8 设置主键,示例:本节列举一个示例,对6.1.1节中建立的数据库,使用ALTER TABLE WITH DROP CONSTRAINT删除数据表的主键约束,再使用ADD CONSTRAINT关键字为数据表添加主键约束,具体操作步骤请参考如下过程。(具体内容请参照书。),6.3 用DROP TABLE删除数据表,当用户不再需要数据表的数据时,可以使用DROP TABLE语句将其删除
8、,删除可以释放表的所有数据、索引、触发器、约束所使用的空间。,6.3.1 DROP TABLE的语法结构,删除DROP TABLE语句的语法结构如下所示。 DROP TABLE database_name . schema_name . | schema_name . table_name ,.n ; ,6.3.2 使用DROP TABLE删除数据表,示例:以下示例将从当前数据库中删除6.1.1节中建立的表及其数据和索引。 USE AdventureWorks GO DROP TABLE dbo.Employees GO 代码说明: DROP TABLE后跟表名称,提示命令成功能完成即可。,6.4 临时表,临时表与永久表相似,但临时表存储在tempdb数据库中,当不再使用时会自动删除。临时表有两种类型:本地临时表和全局临时表。(具体内容请参照书。),6.4.1 创建临时表的示例,用户可以使用CREATE TABLE语句创建临时表。,6.4.2 删除临时表的示例,用户也可以显示的删除临时表。(具体内容请参照书。),