1、第5章SQL Server 2008数据表和索弓I在SQL Server 2008 表是用来存储数据的对象。通常将同一类或者是相关数据存 放在一个数据表中。例如,所有的学生信息存放在一个表中,而成绩信息都存放到另一个 表中。用户可以通过多种方式访问数据库中的数据。掌握SQL Server 2008数据表的相关 知识是非常重要的。本章主要包括数据表的基础知识、数据表定义的管理、表中数据的管 理及索引的管理等知识。5.1 数据表简介为了更好地理解和掌握SQL Server 2008中数据表的设计与使用,本节首先简要介绍 数据表及其相关的基础知识。5.1.1 什么是数据表数据表是SQL Server
2、 2008的数据库对象,它存储着数据库的所有数据。在数据表中,数据以行和列的形式存储在规范化的二维表格中。SQL Server 2008数据表主要由行和列 构成。歹U:用来保存对象的某一类属性。每列又称为一个字段,每列的标题称为字段名。行:用来保存一条记录,是数据对象的一个实例,包括若干列信息项。如图5-1显示的是教务管理系统数据库(Practice_JWGL)中的学生信息表的部分截图。该表包含行和列的信息,其中,行表示数据,即学生实体;列表示数据域,即学生实体的 属性。YAMG SQL PCM_GL dbo.学生UQ&字号.名 住.(H雯、彳LpIjjP缙号(削即园 BJH 051110 y
3、HJImmHm蛇 m里女女女M里里 府依H篇 号到触场李育号 M673w)ss6ix加 h I 黑Z 11M1112口皿 m 0S3O68 8北 M M M M M M 11I611UUS 回 0505060606070070图5-1学生信息表5.1.2数据完整性定义表除了要定义每一列的名称、数据类型和长度之外,还可以为列定义一些其他属 第1篇基础知识性。这些属性也很重要,它们可以保证数据表数据的完整性和参照完整性。在SQL Server 2008中,用于保证以上两种完整性的相关技术有如下3种。1.约束约束是SQL Server 2008数据库中一种自动保持数据完整性的机制。约束可以定义在 列
4、上,也可以定义在表上。列约束只能对某一列起作用,表约束可以对表的多个列起作用。当表的多个列同时需要约束时,最好使用表约束。SQL Server 2008 中使用的约束类主要有 PRIMARY KEY、FOREIGN KEY,UNIQUE、CHECK和NOT NULLo这些约束将在第6章中详细介绍。2.规则(Rules 规则是为了保持向后兼容性而保留下来的技术,它与一些CHECK约束的功能类似。CHECK约束是首选的保证数据完整性的技术。CHECK约束比规则更简明,并且一列可以 使用多个约束,但是一列只能使用一个规则。另外,CHECK约束可以在创建表的时候指 定,而规则是一种分离定义的对象,然后
5、限制到列上。Q注意:在SQL Server未来的版本中,规则可能不再使用,所以用户应尽量避免使用规则。3.默认值默认值是指当用户在表中插入一行数据时,如果没有为某个(或某些)列指定值,这 个(或这些)列就使用这个默认定义的值。默认值可以是计算结果为常量的任何值,例如 常量、内置函数或数学表达式。说明:若要应用默认值,可以通过在CREATE TABLE中使用DEFAULT关键字来创建 默认值定义,这将为每一列分配一个常量表达式作为默认值。5.1.3 SQL Server 2008 特殊表SQL Server 2008除了提供用户定义的标准数据表外,还提供了一些特殊用途的表:分 区表、临时表和系统
6、表。1.分区表当数据表很大时,可以把数据分割成很多单元,放在同一个数据库的规格文件组中。用户可以通过分区快速地访问和管理数据的某些部分子集而不是整个数据表,从而便于管 理大表和索弓I。2.临时表SQL Server 2008有两种临时表:局部临时表和全局临时表。局部临时表只是对一个数 据库实例的一次连接中的创建者是可见的。当用户断开数据库的连接时,这些局部临时表 就会被删除。全局临时表创建后对所有的用户和连接都是可见的,并且只有所有的用户都 78第5章SQL Server 2008数据表和索引断开与临时表相关的数据表时,全局临时表才会被删除。3.系统表系统表用来保存一些服务器配置信息数据,用户
7、不能直接查看和修改这些系统表,只 有通过专门的管理员连接才能查看和修改。不同版本的数据库系统的系统表一般不同。在 升级数据库系统时,一些应用系统表的应用可能需要重写。在SQL Server 2008 所有 的系统表与基表都具有相同的逻辑结构,因此,用于检索和修改基表信息的Transact-SQL 语句,同样可以用于检索和修改系统表中的信息。有关系统表的详细信息,读者可以自行查看SQL Server 2008的帮助。下面简要介绍 几个最重要的系统表。Sysobjects表:SQL Server的主系统表,出现在每个数据库中。在数据库中创建的 每个对象(例如约束、默认值、日志、规则以及存储过程)都
8、对应一行。Syscolumns表:出现在master数据库和每个用户自定义的数据库中,对基表或者 视图的每个列和存储过程中的每个参数都含有一行记录。Sysindexes表:出现在master数据库和每个用户自定义的数据库中,它对每个索 引和没有聚簇索引的每个表都含有一行记录,它还对包括文本/图像数据的每个表 含有一行记录。Sysusers表:出现在master数据库和每个用户自定义的数据库中,它对整个数据 库中的每个 Windows NT用户、WindowsNT用户组、SQL Server用户或者SQL Server角色含有一行记录。Sysdatabases表:它对SQL Server系统上的
9、每个系统数据库和用户自定义的数据库 含有一行记录,只出现在Master数据库中。Sysdepends表:它对表、视图和存储过程之间的每个依赖关系都含有一行记录本,出现在Master数据库和每个用户自定义的数据库中。Sysconstraints表:对使用CREATE TABLE或者ALTER TABLE语句为数据库对 象定义的每个完整性约束都含有一行记录,包含约束映射,映射到数据库中拥有 该约束的对象。A注意:任何用户都不应直接更改系统表。如果使用DDL语句的INSERT、UPDATE和 DELETE语句来修改系统表的信息,对整个系统是非常危险的,所以应该使用系 统存储过程来代替。5.1.4规划
10、数据表在创建数据表之前,用户首先要做好表的设计工作,然后再创建表,最后输入数据。数据表的设计是非常重要的,若数据表设计得不合理,会十分浪费资源,并且有可能带来 不可估量的损失。在设计数据表时,必须确定表的使用目的、数据的类型以及可以访问每 个表的用户。在创建表及其对象之前,最好先确定表的下列特征:表要包含的数据的类型。表中的列数,每一列中数据的类型和长度(如果必要)。79第1篇基础知识 哪些列允许空值。是否需要使用以及何处使用约束、规则和默认值。所需索引的类型,哪里需要索弓I,哪些列是主键,哪些是外键。1.列的数据类型的选择为每一列分配数据类型,是设计表的第一步。用户可以为列分配的数据类型有S
11、QL Server 2008系统数据类型、系统数据类型的别名数据类型和用户自定义数据类型。2.自动生成列的编号或标识符每个表都可以通过系统生成的序列产生一个标识列。在同一个表中这些标识是不会重 复的,但是对于不同的表,则是可以相同的。在SQL Server 2008中,是通过在表设计器 中为该列设置“标识规范”属性来实现的。3.需要数据计算的列表中某列的值可能不会直接得到,而是需要通过某些列的计算得到。SQL Server 2008 支持直接的函数、数学表达式计算,但是不支持需要查询的计算。在没有说明的情况下,这些需要计算的列是虚列,物理表中不存在,每次查询时都需要重新计算。在SQL Serv
12、er 2008中,可以设置参数,把这些需要计算的列保存在物理表中。4.加强数据完整性在数据表的设计中,还经常需要考虑使用什么样的技术来保证数据的完整性。用户要 充分使用SQL Server 2008支持的约束、规则和默认值来保证数据的完整性。以上介绍了设计数据表时需要考虑的一些因素。当数据表设计完成之后,可以采用多 种方式创建数据表,如在SQL Server Management Studio中使用图形界面或者执行 Transact-SQL语句来创建数据表。5.1.5系统数据类型系统数据类型是SQL Server预先定义好的,可以直接使用。在实际使用中,SQL Server 会自动限制每个系统
13、数据类型的值的范围。当插入数据库中的值超过了数据类型允许的范 围,SQL Server系统就会报错。SQL Server 2008提供了 7类,共26种系统数据类型,如 图5-2所示。1.精确数字所谓精确数字,是指不带小数位的整数。(1)bit称为位数据类型,其数据有两种取值,即0和1。SQL Server在存储bit数据 类型时做了优化。如果一个表中有8个或更少的bit列时,用1个字节存放。如果有916 个bit列时,用2个字节存放。在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使 用,用来表示真、假或是、否等二值选择。80第5章SQL Server 2008数据表
14、和索引E 1系统数据类型S CJ精确数字Ibit tinyint smalii nt int bigint numeric decimal smallmoney money a近似数字 读 floatBm日期和时间 datetime 的 smalldatetime 三字符串 char varchar text臼A Unicode字符串 沔 nchar 次nvar char 网 ntextS 口二进制字符串 同 binary 可扰varbinary 鞘1 imageB CJ其他数据类型 sql_variant timestamp uni quei denti fi er xml图5-2 SQL
15、Server 2008系统数据类型(2)tinyint:每个tinyint类型的数据占用1个字节的存储空间,它可以存储从0255 范围的所有正整数。(3)smallint:每个smallint类型的数据占用2个字节的存储空间,其中,一个二进制 位表示整数值的正负号,其他15个二进制位表示整数值的长度和大小。可以存储在-2”(-32 768)(215-1)(32 767)范围的所有正负整数。(4)int(integer):每个int(或integer)数据类型值存储在4个字节中,其中,一个 二进制位表示整数值的正负号,其他31个二进制位表示整数值的长度和大小。int数据类 型可以存储在-231(
16、-2 147 483 648)(231-1)(2 147 483 647)范围的所有正负整数。(5)bigint:用于存储从2$?(-9 223 372 036 854 775 807)(263-1)(-9 223 372 036 854 775 807)之间的所有正负整数,每个bigint类型的数据占用8个字节的存储空间。(6)decimal和numeric:decimal数据类型和numeric数据类型完全相同,分为两种是 为了保持与ANSI标准兼容。这两种数据类型可以提供小数所需的实际存储空间,可以用217个字节来存储(-1038-1)(1038-1)之间的数值。也可以将其写为decim
17、al(p,s)的形式,其中,p表 示可供存储的数值的总位数,默认设置为18。s表示小数点后的位数,默认设置为0。注意:数值类型的总位数不包括小数,例如decimal(10,5),表示共有10位数,其中 整数5位,小数5位。(7)money:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一 个小数部分存储在两个4字节的整型值中。存储范围为-922 337 213 685 477.5808922 337 213 685 477.580 8,精度为货币单位的万分之一。(8)smallmoney:与money数据类型类似,但范围比money数据类型小,其存储范围 为214 748.3
18、46 8214 748.346 8。当为money或smallmoney的表输入数据时,必须在有效位置前面加一个货币单位符 号(如$或其他货币单位的记号)。81第1篇基础知识2.近似数字近似数据类型用于存储十进制小数。近似数值的数据在SQL Server中采用只入不舍的 方式进行存储。即当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有 效位上的数值加1,并进行必要的进位。(1)float:可以精确到第15位小数,其范围为(-1.79E-308)(1.79E+308)0如 果不指定float数据类型的长度,它占用8个字节的存储空间。float数据类型也可以写为 float(n)的形
19、式,n指定float数据的精度,n为115之间的整数值。当n取17时,实际是定义了一个real类型的数据,系统用4个字节存储它;当n取815时,系统认为 其是日oat类型,用8个字节存储它。(2)real:每个real类型的数据占用4个字节的存储空间,可以存储正的或者负的十 进制数值,最大可以有7位精确位数,它的存储范围在(-3.40E-38)(3.40E+38)。3.时间和日期SQL Server 2008支持的时间和日期数据类型主要有6种,分别是datetime smalldatetime date time、datetimeoffset datetime2o 下面主要讲解 datetim
20、e 和 smalldatetime 两种。(1)datetime:用于存储日期和时间的结合体。它可以存储在公元1753年1月1日零 时公元9999年12月31日23时59分59秒之间的所有日期和时间,其精确度可达三百 分之一秒,即3.33毫秒。datetime数据类型所占用的存储空间为8个字节,其中,前4个字节用于存储基于1900 年1月1日之前或者之后日期数。数值分正负,负数存储的数值代表在基数日期之前的日 期,正数表示基数日期之后的日期。时间以子夜后的毫秒存储在后面的4个字节中。当存储datetime数据类型时,默认的格式是MM DD YYYY hh:mm A.M./P.M。当插入 数据或
21、者在其他地方使用datetime类型时,需要用单引号把它括起来。默认的时间日期是 January1,1900 12:00 A.MO 可以接受的输入格式有 Jan4 1999、JAN4 1999、January 4 1999、Jan 1999 4、1999 4 Jan和1999 Jan 4。Datetime数据类型允许使用/、-和.作为不同时间单位 间的分隔符。(2)smalldatetime:与datetime数据类型类似,但其日期时间范围较小,它存储在1900 年1月1日2079年6月6日之间的日期。Smalldatetime数据类型使用4个字节存储数据,其中,SQL Server 2008
22、用两个字节存储日期1900年1月1日以后的天数,时间以子夜后 的分钟数形式存储在另外两个字节中。smalldatetime的精确度为1分钟。4.字符串字符数据类型是SQL Server中最常用的数据类型之一,它可以用来存储各种字母、数 字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号。(1)char:当用char数据类型存储数据时,每个字符和符号占用1个字节的存储空间。其定义形式为:char(n)82第5章 SQL Server 2008数据表和索引其中,n表示所有字符所占的存储空间,n的取值为1-8000。若不指定n值,系统默 认n的值为lo若输入数据的字符串长度
23、小于n,则系统自动在其后添加空格来填满设定好 的空间。若输入的数据过长,将会截掉其超出部分。如果定义了一个char数据类型,而且 允许该列为空,则该字段被当作varchar来处理。(2)varchar:用varchar数据类型可以存储长达8000个字符的可变长度字符串,和char 类型不同的是varchar类型的存储空间根据输入数据的实际长度而变化,其定义形式为:varchar(n)例如,定义varchar(20),则它对应的字段最多可以存储20个字节,如果数据的实际长 度不到20个字节,系统不会在其后添加空格,因此使用varchar类型可以节省空间。(3)text:用于存储大容量文本数据。当
24、要存储的字符型数据非常巨大,char和varchar 已经不能满足其存储要求(大于8000字节)时,应该选择text数据类型。Text数据类型 的容量可以在1(2311)(2 147 483 647)个字节范围之内,但实际应用时要根据硬盘 的存储空间而定。在定义text数据类型时,不需要指定数据长度,SQL Server会根据数据的长度自动为 其分配空间。5.Unicode字符串UnicodeC统一字符编码标准)字符集标准,用于支持国际上的非英语语种。每个Unicode 字符用两个字节为一个存储单位,所以Unicode数据类型所占用的存储空间是非Unicode 数据类型的两倍。(1)nchar
25、:其定义形式为nchar(n),其中n表示所有字符所占的存储空间,n的取值 为 1-4000。(2)nvarchar:其定义形式为nvarchar(n),其中n表示所有字符所占的存储空间,n 的取值为14000。(3)ntext:用于存储大容量文本数据。其理论上的容量为23-1(1 073 741 823)个 字节。6.二进制字符串SQL Server 2008支持的二进制字符串主要有以下3种:binary:其定义形式为binary(n),数据的存储长度是固定的,即n+4个字节,当输 入的二进制数据长度小于n时,余下部分填充0。二进制数据类型的最大长度(即 n的最大值)为8000,常用于存储图
26、像等数据。varbinary:其定义形式为varbinary(n)o数据的存储长度是变化的,它为实际所输 入数据的长度加上4字节。其他含义同binary。在输入二进制常量时,需在该常量前面加一个前缀Ox。image:用于存储照片、目录图片或者图画,其理论容量为23匚1(2 147 483 647)个字节。83第1篇基础知识7.其他数据类型SQL Server 2008支持的其他数据类型主要有以下几种:sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其他任何合法 的SQL Server数据。此数据类型极大地方便了 SQL Server的开发工作。timestamp
27、:也称作时间戳数据类型。timestamp是一种自动记录时间的数据类型,主要用于在数据表中记录其数据的修改时间。它提供数据库范围内的唯一值,反 映数据库中数据修改的相对顺序,相当于一个单调上升的计数器。当用timestamp定义的列在更新或者插入数据行时,此列的值会被自动更新,一个 计数值将自动添加到此timestamp数据列中。uniqueidentifier:也称作唯一标识符数据类型。uniqueidentifier用于存储一个16字 节长的二进制数据类型。它是SQL Server根据计算机网络适配器地址和CPU时钟 表产生的全局唯一标识符代码(Globally Unique Identi
28、fier,GUID),因此该数据 类型可以保证在全球范围内不同的计算机所产生的标识符是唯一的。xml:可以在SQL Server数据库中存储XML文档和片段。XML片段是缺少单个 顶级元素的XML实例。可以创建xml类型的列和变量,并在其中存储XML实例。请注意,xml数据类型实例的存储表示形式不能超过2 GBo可以选择将XML架构集合与xml数据类型的列、参数或变量相关联。集合中的架构 用于验证和类型化XML实例。在这种情况下,XML是类型化的。xml数据类型和关联的 方法有助于将XML集成到SQL Server的关系框架中。8.特殊数据类型SQL Server 2008支持的特殊数据类型主
29、要有以下两种:table:用于存储对表或者视图处理后的结果集。使用该数据类型可以利用变量存 储一个表,从而使函数或过程返回查询结果更加方便、快捷。cursor:数据类型是唯一不能分配给表列的系统数据类型,它只能用于变量和存储 过程参数。注意:上面给出的两种特殊数据类型不能分配给表列。5.1.6用户自定义数据类型SQL Server 2008允许用户自定义数据类型,用户自定义数据类型是建立在SQL Server 2008系统数据类型基础上的。当用户定义一种数据类型时,需要指定该类型的名称、建立 在其上的系统数据类型以及是否允许为空等。SQL Server 2008为用户提供了两种方法来创建自定义
30、数据类型,即使用SQL Server Management Studio图形界面或者通过系统存储过程sp_addtypeo1.使用SQL Server Management Studio创建用户定义数据类型例如,在SQL Server Management Studio中,定义一个名称为User ID的数据类型,84第5章SQL Server 2008数据表和索引具体操作步骤如下。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在SQL Server Management Studio中的“对象资源管理器”组件窗口中,依次展 开“数据库”|Pr
31、actice_JWGL|“可编程性”|“类型”节点。右击“用户定义数据类型”,在弹出的快捷菜单中选择“新建用户定义数据类型”命令,打开“新建用户定义数据类型”对话框。(3)在“架构”文本框中,直接输入或者使用旁边的浏览按钮来选择此数据类型所属 的架构,此处采用默认值dbo。在“名称”文本框中,输入自定义数据的名称User_ID。在“数据类型”文本框中,选择nvarchar数据类型。在“长度”文本框输入10。如果新建数 据类型允许空值,选择“允许NULL值”复选框,此处采用默认值不为空。完成设置后的“用户定义数据类型”对话框,如图5-3所示。图5-3”用户定义数据类型”对话框注意:默认值和规则不
32、能在SQL Server Management Studio中完成创建,必须使用 Transact-SQL语句来创建。(4)单击“确定”按钮,即可完成User_ID用户定义数据类型的创建操作。此时,即可在SQL Server Management Studio中的“对象资源管理器”组件窗口中的“数据库”|Practice_JWGL|“可编程性”|“类型”|“用户定义数据类型”节点下,看见一 个新的数据类型UserD。以后,这个数据类型可以在其他地方任意地使用了。2.利用系统存储过程创建用户自定义数据类型SQL Server 2008系统存储过程sp_addtype为用户提供了用Transact
33、-SQL语句创建自定 85第1篇基础知识义数据类型的途径,其语法形式如下:sp_addtype typename=type,phystype=system_data_typer nulltype=*null_type*,owner=,owner_name*命令中各参数说明如下所示。type:指定用户定义的数据类型的名称。system_data_type:指定相应的系统提供的数据类型的名称及定义。注意,不能使 用timestamp数据类型。当所使用系统数据类型有额外说明时,需要用单引号将其 括起来,例如,varchar(80y。null_type:指定用户自定义数据类型的null属性,其值可以为
34、null、not null或者 nonullo默认情况下,与系统默认的null属性相同。owner_name:指定用户自定义数据类型的所有者。用户自定义数据类型的名称在 数据库中应该是唯一的,但不同名称的用户自定义数据类型可以有相同的类型 定义。【实例5-1】自定义一个地址(address)数据类型,最多可以包含20个字符。Transact-SQL 代码如下:EXEC sp addtype address A*varchar(20),*not null,GO 一同样,删除用户自定义数据类型也有两种方法,即使用SQL Server Management Studio 图形界面或者通过系统存储过程
35、sp_droptypeo3.使用SQL Server Management Studio删除用户定义数据类型在SQL Server Management Studio图形界面中,右击“用户定义的数据类型”节点下 的某个用户定义数据类型,在弹出的快捷菜单中选择“删除”命令,打开“删除对象”对 话框,如图5-4所示。在该对话框中,可以单击“显示依赖关系”按钮查看数据库内是否 有对象依赖此数据类型。如果没有,则可以单击“确定”按钮删除该数据类型。图5-4“删除对象”对话框86第5章 SQL Server 2008数据表和索引4.利用系统存储过程删除用户自定义数据类型使用系统存储过程sp_dropty
36、pe删除自定义数据类型的语法如下:sp_droptype typename=,type,【实例5-2】删除自定义的地址(address 数据类型。Transact-SQL代码如下:EXEC sp droptype addressGO 一5.2数据表定义在设计完数据表后,接下来的任务就是创建数据表。用户可以使用SQL Server Management Studio图形化工具创建表,也可以使用Transact-SQL语句方便快速地创建数 据表。5.2.1 使用SSMS设计数据表使用SQL Server Management Studio图形工具,可以完成SQL Server 2008数据表的建
37、立、修改、查看和删除等绝大多数的工作,这是数据库管理员最常用的操作方式。1.创建数据表使用SQL Server Management Studio中的表设计器,用户可以方便地创建数据表,具 体操作过程如下。1 打开SQL Server Management Studio并连接到数据库引擎服务器。(2 在“对象资源管理器”中,依次展开“数据库”|Practice_JWGL节点。3 右击“表”节点,在弹出的快捷菜单中选择“新建表”命令,打开“表设计器”o 4 输入列名,选择数据类型,设置是否允许空以及通过下方的“列属性”窗口来设 置列的其他属性,如图5-5所示。技巧:注意观察图5-5中右侧的“属性
38、”窗口,该窗口显示了创建的数据表的一些属性 信息。用户还可以通过该窗口,设置数据表所存储的位置等信息。如果该窗口没 有显示,可以直接按F4键或者通过选择“视图”|“属性窗口”命令打开该窗口。(5 重复第(4 步过程,可以为数据表添加任意多个数据列。(6 单击工具栏上的按钮词或者选择“文件”|“保存”命令,打开“选择名称”对话 框。为数据表输入一个名称,如“学生信息”,单击“确定”按钮,即可完成数据表的创 建操作。用户可以在SQL Server Management Studio中的“对象资源管理器”窗口中,依次展 开“数据库”|Practice_JWGL 1“表”节点,查看刚才建立的数据表。8
39、7第1篇基础知识图5-5表设计器2.修改数据表数据库管理员可以根据需要,修改已经建立的数据表。对数据表的修改,主要包括修 改列属性、添加和删除列及修改约束等选项。修改数据表同样可以在“表设计器”窗口中 进行,具体操作过程如下。(1)打开SQL Server Management Studio并连接到数据库引擎服务器。(2)在“对象资源管理器”中,依次展开“数据库”|Practice_JWGL|“表”节点。(3)右击“学生信息”表,在弹出的快捷菜单中选择“设计”命令,打开“表设计器”窗口,如图5-6所示。注意:若选择的是“编写表脚本为”|CREATE到”|“新查询编辑器窗口”命令,则 打开“查询
40、编辑器”窗口,如图5-7所示。VANG SQL PCMS.WGL dboGS 亨 X图5-6“表设计器”窗口图5-7”查询编辑器”窗口88第5章 SQL Server 2008数据表和索引 4 用户可以在“表设计器”窗口中,对数据表的各个列及属性进行修改。(5 修改完成后,单击工具栏上的按钮画,保存对数据表的修改。3.重命名数据表在SQL Server Management Studio管理工具中,用户可以对创建后的数据表进行重命 名。具体操作过程如下。1 打开SQL Server Management Studio并连接到数据库引擎服务器。(2 在“对象资源管理器”中,依次展开“数据库”|P
41、ractice_JWGL|“表”节点。(3 右击“学生信息”表,在弹出的快捷菜单中选择“重命名”命令。(4 在数据表名的可编辑文本框中,输入新的数据表名称。5 按下Enter键或者单击其他数据表,即可完成数据表重命名操作。4.查看数据表属性在SQL Server Management Studio管理工具中,用户可以查看表的物理信息及常规设 置等属性信息,具体操作过程如下。1 打开SQL Server Management Studio并连接到数据库引擎服务器。2 在“对象资源管理器”中,依次展开“数据库”|Practice_JWGL|“表”节点。(3 右击“学生信息”表,在弹出的快捷菜单中选
42、择“属性”命令,打开“表属性”对话框,如图5-8所示。j m-学生值第良德日期名称容克对象选项*MSI WULU需胤号的保F苻口脚本 口新助当前连接塾线联势器熟据座YAMG-SQL-PCMSSQISERVEK2008PractictJHKJL ynuSQL-PCynSQLPals*2012/9/14 936 dbe学生信息FQ”确定 笠邑图5-8“表属性”对话框(4 用户可以查看“存储”选项页,“存储”选项页下的条目提供了有关空间使用的 详细情况。如“数据空间”显示了数据表在磁盘上说使用的空间数量;“索引空间”显示 89第1篇基础知识了数据表索引空间在磁盘上的大小;“行计数”显示了数据表中数据
43、行的数目。5 用户还可以在“权限”选项页中,对数据表的访问权限进行设置。(6 单击“确定”按钮,完成数据表的查看操作。5.删除数据表用户可以删除不再需要或者设计错误的数据表。删除表后,该表的结构定义、数据、全文索弓I、约束和索弓I都将从数据库中删除,原来存储该表及其索引的空间可以用来存储 其他数据表。使用SQL Server Management Studio删除数据表,具体操作过程如下。1 打开SQL Server Management Studio并连接到数据库引擎服务器。(2 在“对象资源管理器”中,依次展开“数据库”|Practice_JWGL|“表”节点。3 右击“学生信息”表,在弹
44、出的快捷菜单中选择“删除”命令,打开“删除对象”对话框。(4 单击“确定”按钮,即可完成删除数据表的操作。6.编写表脚本在SQL Server Management Studio管理工具中,用户可以依据图形化界面所设计后的 数据表的属性,来自动生成对应的Transact-SQL脚本语句,具体操作过程如下。1 打开SQL Server Management Studio并连接到数据库引擎服务器。(2 在“对象资源管理器”中,依次展开“数据库”|Practice_JWGL|“表”节点。(3 右击“学生信息”表,弹出快捷菜单,如图5-9所示。后 YANG-SQl-PCMSSQLSERVR2008(S
45、QL Sec a sxsa Qi ms-ffi(J matter 囹 U model S|J msdb ffi J tempdb国d EU伎岸S If Practice.JWGL MX美凄BH 裳s CJ同义通,可朝造db uJ Service Broke囹Li存储安 1囹 RportServ*r$M ffi ReportServertM 口安全性sLaXM曾建fitHG)1000 6tw)编毒前200行(E)编号表脚本为全文的l T a(A)E。)方 Bi(A)B9)PowerShiIKH)flr(F)属性(R)重命名(M)MMD)图5-9编写表脚本快捷菜单(4 选择相应的快捷菜单命令,即可
46、完成对应的编写表脚本操作。90第5章SQL Server 2008数据表和索引5.2.2 使用SSMS维护数据表数据库的系统管理员,日常工作中最基本的一项工作就是对数据表的维护。它包括修 改数据表的结构、改变表的排列顺序以及数据的备份等工作。SQL Server Management Studio提供了方便的图形化界面帮助用户完成这些工作。下面列举一些常见操作,说明其 具体的操作步骤。1.在数据表中插入新列用户可能在使用数据表一段时间以后,根据业务需求的变化增加数据表的字段,以记 录更加丰富的属性信息。使用SQL Server Management Studio X,可以方便地在表中增 加数据
47、列,即修改数据表的结构,具体操作过程如下:1 打开SQL Server Management Studio并连接到数据库引擎服务器。2 在“对象资源管理器”中,依次展开“数据库”|Practice_JWGL|“表”|“学生信 息”|列节点。(3 右击“列”节点,在弹出的快捷菜单中选择“新建列”命令,打开“表设计器”,并且光标定位在最后一行。4 输入要增加的字段的“列名”,选择“数据类型”,设置是否“允许空”以及通 过下方的“列属性”窗口来设置新增列的其他属性。5 重复第(4 步过程,可以为数据表添加任意多个新列。(6 单击工具栏上的按钮回,即可完成插入新列的操作。技巧:以上操作默认是在“表设计
48、器”的最后依次添加新列。用户也可以根据需要在不 同的位置插入新列,其方法是在“表设计器”中,右击某行,在弹出的快捷菜单 中选择“插入列”命令,即可在当前行前插入一个新的数据列,也可以通过选择“表设计器”|“插入列”命令来实现。2.改变数据表中列的排序规则数据列的“排序规则”用于将“列值”与其他列的值进行比较的各类操作中。如果SQL Server数据库实例中的所有用户都是使用的同一语常,则应选择支持该语言的排序规则。例如,如果所有用户都使用的是英语,则应选择英语排序规则。如果SQL Server数据库实 例中的用户使用不同的语言,则应挑选最能满足多个语种要求的排序规则。例如,如果用 户大多数使用
49、西欧语言,则应选用Latinl_ General排序顺序。使用SQL Server Management Studio工具,设置列的排序规则,具体操作过程如下。1 打开SQL Server Management Studio并连接到数据库引擎服务器。(2 在“对象资源管理器”中,依次展开“数据库”|Practice_JWGL|“表”节点。(3 右击“学生信息”表,在弹出的快捷菜单中选择“设计”命令,打开“表设计器”。(4 选择要设置“排序规则”的列,用户可以在该列的“列属性”视图中,查看到该 列的排序规则,如图5-序所示。(5 单击“排序规则”文本框右侧的省略号()按钮,打开“排序规则”对话框
50、,91第1篇基础知识如图5-11所示。YANG SQL PCMS_WGL dbo.TlOfi X列名 允在N3fl 75 二2(10)姓 M ndw(10)画性别 Mw(W)nS9 3r(10)gjW*ntfw(lfi)aE列性臼(常娘)长度 公认值或物定 敷搪RS 允许NJ值 日表设计若RowGuid 国标识规范 不用于复制大小E计算列现兔 蔺洁数据美型 且右非srx Son否否否否20排序规则数值库投认设置E全文现兔是DTS发布的 是合并发布的 是可索引的择序短则图5-11“排序规则”对话框图5-10“列属性”视图否S否是(6)为选定列设置好排序规则后,单击“确定”按钮,返回“表设计器”视