2022年asp与sql网页数据库程序设计- 2.pdf
-
资源ID:27188835
资源大小:1.65MB
全文页数:37页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年asp与sql网页数据库程序设计- 2.pdf
6 表的创建6-1 查看数据的内容6-2 数据类型6-3 创建表6-4 表索引的管理6-5 创建关联6-6 数据输入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计136 创建好数据库之后,接下来必须决定要在数据库内存放哪些信息,并且将这些信息加以整理规划,创建成一个或多个表。本章我们将介绍如何创建表,以及一些相关的设置。6-1 查看数据的内容在开始介绍表的创建之前,让我们先了解一下表的结构,查看表中的数据内容。在Enterprise Manager 中可以利用打开表功能查看整个表中包含的数据,打开表属性窗口视图的结构及相关信息。6-1-1使用“打开表”功能查看数据内容如果想要知道某表内所包含的信息内容,可以利用该表快捷菜单中的“打开表”命令来达成。在“打开表”菜单项中包含三个选项,选择“返回所有行”命令会完整地显示整个表的内容;选择“返回首行”命令,可以自行指定要显示的数据条数;选择“查询”命令则可以设置条件,筛选出符合条件的数据。图 6-1 选择“返回所有行”命令例如,假若我们想要看整个表的内容,可以在该表上按鼠标右键,在打开的快捷菜单中选择“打开表”|“返回所有行”命令,这时它就会打开一个表窗口,显示该表内包含的所有记录。图 6-2 为执行打开范例数据库pubs 中的 sales表所显示的画面,我们可以发现表就像是一个二维的表格一样,它是由多条具有相同数据结构的记录所构成的。表格中的每一行代表一条唯一的记录,而每一条记录都是由stor_id,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 37 页 - - - - - - - - - 第 6 章表的创建137 order_num,order_date 等信息项目所构成的(这些信息又称为数据列或字段)。图 6-2 表画面6-1-2查看表属性在表子目录下选取要查看的表后,按下工具栏上的属性工具按钮, 这时会打开如图6-3 所示的“表属性”对话框,由这个对话框中可以知道表的创建日期、 使用的文件组、 包含的数据条数 (数据行行数) 等信息, 以及列的结构。由下图的“表属性”对话框中,可以发现,定义表就等于是在定义表内所要包含的信息项目(列),定义每一个列的属性与规则,包含列的名称、数据类型、长度大小、是否允许NULL 等。其中,数据类型的设置与列允许的数据内容有关,在设置时应根据该列的数据特性、可能会包含的内容来决定。图 6-3 表属性名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计138 6-2 数据类型在 Microsoft SQL Server中,每一个列、局部变量、表达式以及参数等都具有其特定的数据类型(如 integer,character,money 等),用来指定该对象可以存放的数据类型,以及决定数据所占用的空间。SQL Server 2000 定义了许多的数据类型,用户可以根据数据的特性选择一种最适合的数据类型。例如,要存放文字的列,必须设置为文本类型的数据类型;要存放数字数据作数值运算的列,应该设置为数值类型的数据类型。SQL Server 2000 系统支持的数据类型说明如下。6-2-1数值数据数值数据可以用来做数值运算处理,当我们要存放纯数字的数据,或是要对存放的内容作数值运算时,可以将它定义成数值的数据类型。SQL Server 2000 提供许多可以存放数值数据的数据类型,如Int,Decimal,Real 等。这些数值数据类型的特性及数值范围说明如表6-1 所示。表 6-1 数据类型的特性及取值范围数据类型使用字节数据范围整数数值tinyint 1 Bytes 0 255 smallint 2 Bytes 32,768 32,767 int 4 Bytes 231 (2311) bigint 8 Bytes 263 (2631) 小数数值decimal (numeric) 最大至 38 Bytes ( 1038 +1)( 10381)浮点数值float 单精度: 4 Bytes ;双精度: 8 Bytes 1.79E + 308 1.79E + 308 real 4 Bytes 3.40E + 38 3.40E + 38 从表 6-1 中可以发现float 浮点数据类型可分为单精度与双精度两种,一般来说,除非是在进行科学运算需要较精确的值,需要用到双精度,否则一般使用单精度就足够了。另外,使用浮点数据类型可能会产生部分位数数据遗失的问题,例如,单精度数据类型,当数值位数超过7 位时,只会保留最前面的7名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 37 页 - - - - - - - - - 第 6 章表的创建139 位数字 (数值 123456789 保存成单精度后会变成123456700) ;双精度数据类型只会保留15 位数字。当我们要指定数值数据的数据类型时,可以先通过存放的数值数据是否包含小数来决定使用整数类型的数据类型,或是带有小数的数据类型,接着再根据数值范围选择一个最适当的数据类型。例如,年龄数据是一个数值数据,它通常是以正整数来表示,而且它的数值范围通常不会超过255, 为了节省空间我们可以将它定义成tinyint 数据类型;平均成绩数据为0100 之间的数值,通常保留两位小数,可以将它定义为5 Bytes 的 Decimal 数据类型( 19 位数) , 或是单精度浮点数据类型float 或 real。6-2-2货币数据货币数据是专门针对金额数据而定义的,它可以说是一种特殊的小数数值数据,固定为4 位小数。在SQL Server 中提供两种货币数据类型:money 与smallmoney,这两种货币数据类型的特性说明如表6-2 所示。表 6-2 两种货币数据类型的说明数据类型使用字节数据范围Money 4 Bytes 263( 263 1)smallmoney 8 Bytes 214.748,3648 +214,748.364 6-2-3日期数据日期数据是用来表示日期与时间,当我们要在表中存放日期时间信息,如出生日期、数据传入系统的时间等,就可以将列定义为日期时间数据类型。在SQL Server 中,根据占用的字节以及数据的精度,定义了两种日期时间数据类型 datetime 与 smalldatetime ,它们的特性说明如表6-3 所示。表 6-3 两种日期时间数据类型说明数据类型使用字节数据范围精度Datetime 4 Bytes 1753 年 1 月 1 日到9999 年 12 月 31 日三百分之一秒名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计140 续表数据类型使用字节数据范围精度smalldatetime 8 Bytes 1900 年 1 月 1 日到2079 年 6 月 6 日一分钟其实这种日期时间数据在系统中是以数值数据的形式存在的,数值整数的部分是用来指定该日期距离基准日的天数。例如,系统的基准日为1900/1/1,数值 30,表示从 1900/1/1 算起的第 30 天,也就是 1900/1/30;小数部分则是用来表示时间,例如,数值0.5 表示半天,也就是12:00。所以日期时间数值30.5就是指 1900 年 1 月 30 日的上午 12:00。6-2-4字符串数据前面介绍的数值数据类型(含货币数据)只能允许输入数字,而字符串数据内则可以包含文字、数字或其他的特殊符号,几乎所有可以在计算机上输入的信息都可以视为是字符串数据。在定义字符串数据类型时,必须指定一个数值,用来表示字符串数据的字符长度。在 char, varchar 与 text 等字符串类型中,不论是字母、数字或中文字,每一个字符都占用一个字节空间。1. char 数据类型char 数据类型是用来存放固定长度的字符串内容,其最大长度可达8,000个字符( 8K) 。当我们要保存长度固定的数据(如代号)时,可以将它定义为char 数据类型。当我们在char 数据类型内存入长度小于指定大小的字符串时,它将会自动在字符串后面补空格填满整个长度,使数据长度固定。2. varchar 数据类型varchar 数据类型较char 数据类型有弹性,它可以随着存放的数据长度大小自动调整其占用的数据空间,当存入的数据长度小于指定的大小时,它不会在数据后面补空格,而是以实际存入的数据长度保存。其最大长度可设置为8,000 个字符。当数据内容长度的变异性较大时,varchar 数据类型将是较好的选择,它可以减少不必要的空间浪费。例如,在产品数据的产品简述上,有些产品可能需名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 37 页 - - - - - - - - - 第 6 章表的创建141 要使用 200 到 300 个字来描述, 有些产品则只需要短短20 到 30 个字就可以介绍完,这时若将它定义为char 数据类型,每一个产品的产品简述都固定占用200 到 300 个字符长度;如果定义为varchar,则是占用实际输入的简述内容的字符长度。3. text 数据类型char 与 varchar 数据类型最大只能定义到存放8000 个字符( 8K) ,如果要存放的数据长度超过这个限制时,可以使用text 数据类型。 text 数据类型和varchar 数据类型一样, 都是一个可变长度的数据类型,它允许的最大长度限制为 2311(2,147,483,647)个字符。6-2-5Unicode 数据前面介绍的三种字符串类型是使用数据库的字符集来定义字符串的内容,当要将这些数据转移到其他使用不同字符集的数据库时,数据的转换可能会发生错误,产生乱码。为了使数据能够在不同数据库(字符集)间顺利地转移,可以使用Unicode 标准字符形式来定义字符串数据,所有的字符集的字符都有对应于这个标准的定义。Unicode 字符串类型包含nchar, nvarchar 与 ntext 三种数据类型, 分别对应前面的 char,varchar 与 text 数据类型。不过,这种Unicode 标准是以2 个字节代表一个字符,因此它可以允许的数据长度将会是非Unicode 字符串类型的一半,也就是最大长度4,000 个字符。 如果预计要保存的数据长度将会大于4,000个字符,就必须将数据类型定义为ntext。6-2-6Binary 数据Binary 数据是以十六进制的方式来表示数据,它可以接受1 9 的数字,与 AF 间的字母。通常我们可以利用它来表示图片或影像数据,或者是存放特殊格式化的文件数据,如Word,Excel,PDF 文件等。SQL Server 提供 binary,varbinary 以及 image 等三种存放Binary 数据的数据类型,其中binary 数据类型为一固定长度的数据类型,它会以固定的长度处理数据, 当数据长度不足时会自动填补到指定的固定长度。varchar 与 image 数据类型则是可变长度的数据类型,会随着数据内容调整长度。一般来说,使用varchar 数据类型应该已经足够,如果预期数据长度将会超过8KB ,就要改用image 数据类型。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计142 表 6-4 数据类型长度变动数据最大长度限制binary 固定长度8,000 个字节barbinary 可变长度8,000 个字节image 可变长度231 1 (2,147,483,647) 个字节6-2-7其他特殊数据类型前面介绍的几个数据类型,其定义内容非常明确,如要保存日期、时间数据就使用日期时间数据类型、要存放文字就使用字符串数据类型、要存放数值就使用数值类型的数据类型等。除了这些数据类型外,SQL Server 还提供了一些无法分类的特殊数据类型,将常用到的数据类型说明如下。1. bit 数据类型bit 数据类型就好像我们在程序语言中常用的Boolean 布尔数据类型一样,如果数据内容只有True 或 False,1 或 0 两个值时,可以将它定义为bit 数据类型。例如,在产品数据中,可以利用它来表示该货品是否为新上市;在人员基本数据中,可以利用它来表示人员性别为男生或女生等。实际上 bit 数据类型是以一个bit 的位空间来存放数据,它的内容只有可能是 0 或 1 两种,我们必须自行定义0 代表什么、 1 代表什么,例如,在“新上市”列中,可以定义数值为1 时表示 True(该货品为新上市) ,数值为0 表示False(货品非新上市) 。2. timestamp 数据类型timestamp 数据类型是一个binary 的递增数据类型,它会在数据行加入或更改时自动产生,产生的值在数据库中是唯一的,不会有重复,通常我们可以使用它来作为列的版本戳记。由于这个时间戳记会随着数据行的变动而更改,因此最好不要将它设置为表的索引键,而且在一个表中也应该只会有一个timestamp 数据类型的列。timestamp 列的内容是根据DBTS 函数所取得的目前数据库时间戳记数值而更新的,与数据行插入或更改的日期与时间没有直接的关系。如果用户想要自动记录表中数据修改的时间,应该要使用datetime 或 smalldatetime 数据类名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 37 页 - - - - - - - - - 第 6 章表的创建143 型,并利用事件触发程序来写入日期时间数据。3. uniqueidentifier 数据类型uniqueidentifier 数据类型是一个包含16 字节的十六进制数字,用来表示全域唯一标识项(GUID) 。这个 GUID 在不同的机器上、时间上都不同,因此对于一个跨国际、具有多台数据库服务器的企业,使用GUID 作为辨识码来唯一标示数据行,可以确保所有这些数据库数据的汇整不会发生数据重复的问题。在将列定义为uniqueidentifier数据类型时,必须将列的默认值设置为NEWID 函数,这样当数据列插入到表时,就会调用 NEWID 函数自动产生GUID值。4. sql_variant 数据类型sql_variant 数据类型可保存text,ntext,timestamp 与 sql_variant 以外的所有 SQL Server 支持的数据类型。 当用户无法确定表的某个列内将会存放哪种类型的数据类型时,可以将它定义为sql_variant 数据类型,允许它接受任何数据类型的数据,以避免在填入数据时产生数据类型不符的错误。6-3 创建表在规划好表的结构以及列使用的数据类型之后,接下来介绍如何将规划好的表创建起来。6-3-1表设计窗口在 Enterprise Manager 管理工具中,可以利用“表设计”窗口来定义表的列属性与数据特性。 “表设计”窗口的画面如下图所示,分为上下两个窗格,上面的窗格是用来定义表中每一个列的主要属性,如名称、数据类型、长度、是否允许NULL 等;下方的窗格则可以针对选取的列,定义该列的其他数据属性,如默认值、精度、小数位数等。另外,在窗口上方的工具栏上还有一些工具按钮可以管理表的索引键、定义表间的关系。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计144 图 6-4 创建表窗口1. 列主要属性“列名”字段:用来唯一标识表内每一个列的名称,指定的名称绝对不能与表内的其他列名相同,也不能是Transact-SQL 的保留字, 而且在指定的名称内不能包含空格或其他的特殊符号。“数据类型”字段:用来指定存放于该表内数据的数据类型,如果要存入的数据与指定的数据类型不符,将会产生类型不符的错误。可以根据要存放信息的数据特性,并根据前面介绍的数据类型说明,为列找到一个适合的数据类型。“长度”字段:用来指定列的字节数,随着指定的数据类型的不同,这个长度字段所代表的含义也会有所不同。在字符串数据类型中,这个字段值就代表字符串的长度,这时可以修改这个字段值,调整适当的字符串长度来存放数据。对于数值数据类型来说,其所占的字节数是固定的,因此无法更改这个字段值。“允许空”字段:用来设置是否允许这个列的内容为空,可以利用鼠标点取的方式选中或取消这个选项。当列被设置为允许为空值时,如果没有为这个列指定任何的数据,将会使用空作为默认值存放到列。反之,如果设置列不允许空,就必须自行为列指定默认值,否则在插入数据行时,若未指定任何数据给该列,将会发生错误。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 37 页 - - - - - - - - - 第 6 章表的创建145 2. 列的其他属性这些列属性是个别设置到各个列上的,而且随着列定义的数据类型的不同,部分的属性项目可能无法设置。“描述”字段:这个字段主要提供来作为列的批注说明,让管理者日后在维护时,可以更容易了解该列所存放的信息。可以在这个字段中,输入任何的字符串文字,当然也可以忽略不填。“默认值”字段:这个字段是设置当插入数据行而未指定列数据时存入列内的默认值。根据设置的数据类型,这个值可以是文字、数字或是日期时间数据,也可以是一个函数。例如,在uniqueidentifier 数据类型的列中,在这个默认值字段中指定函数NEWID ,取得 GUID 值。图 6-5 指定默认值“精度” 与“小数位数” 字段:这两个字段只有在属于Decimal 或 Numeric小数数据类型的列中设置,它们分别用来指定整个数值数据的数值位数与小数位数,默认为(18,0) ,表示该列可以存放18 位数的整数数据(因为小数字数为 0) 。在存放分数的列中,分数范围为0100,且要保留两位小数位置,可以将“精度”字段设置为5, “小数位数”字段设置为2。“标识”字段:用来设置是否要将列定义为标识列,自动产生列的内容。当我们将列设置为标识字段时,它会自动以“标识种子”字段的内容作为列的初始值,然后以每次增加“标识递增量”的方式,自动为新建的数据行指定该列内容。例如,在客户数据中,我们希望在新建客户数据时,自动产生客户编名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计146 号,可以将“客户编号”列的“标识”属性设置为True,并将“标识值增量”定义为 1,这样每一条加入的客户编号都会自动递增。只有在整数数据类型 (如int ,smallint ,tinyint )或无小数字数的decimal 或 numeric 数据类型,可以设置标识选项。图 6-6 精度及小数字数“是 RowGuid ”字段:这个字段只有在uniqueidentifier数据类型的列中才可以设置,若将它设为“是”,SQL 会自动将NEWID函数加入到默认值字段中,使得每当数据加入到表时,列自动取得GUID 值。图 6-7 定义标识列名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 37 页 - - - - - - - - - 第 6 章表的创建147 “公式”字段:当列的值与其他列的值有关联时,可以在公式字段上输入表达式, 自动计算列的内容。例如, 在产品销售订单中,可以由 “单价” 与“数量”取得“小计” 信息,因此可以在 “小计” 列的“公式” 字段上输入公式 “ (单价 *数量)” ,这样以后要加入数据时,只要输入单价及数量信息就可以自动计算得小计信息。图 6-8 使用公式字段自动计算列的值“排序规则”字段:是用来设置列的字串数据比对、排序方式,可以直接使用默认的“” ,沿用数据库的排序规则方式;或者是单击字段右方的按钮,打开如下图的列排序规则设置窗口,自行定义数据行的排序方式。图 6-9 排序规则设定窗口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计148 6-3-2使用表设计窗口创建表了解表设计窗口的设置项目后,接下来就直接以一个范例来说明如何使用表设计窗口来创建表,在这个范例中将会在“Trade”数据库中创建一个存放产品数据的“产品基本信息”表,表的列结构如表6-5 所示。表 6-5 产品基本信息表列名数据类型长度NULL 产品代号varchar 16 否产品名称varchar 50 否类别编号varchar 4 否产品简述varchar 200 是单价decimal 9 精度 18,小数位数2 是币别Char 2 是交货期char 10 是新上市bit 1 是备注varchar 50 是创建“产品基本信息”表的步骤如下:(1)展开“ Trade”数据库目录,并选取“表”目录,然后单击新建工具按钮, 或按鼠标右键打开快捷菜单,选择“新建表” 命令,如图 6-10 所示,这时它会打开一个“设计表”窗口。图 6-10 选择“新建表”命令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 37 页 - - - - - - - - - 第 6 章表的创建149 (2)在上方表主要属性窗格的第一列中,输入第一列的信息,在“列名”字段中输入“产品代号”字样,在“数据类型”字段中选择“varchar”项,在“长度”字段中输入数值“16” ,然后用鼠标取消“允许空”字段的选取,表示该列不能是空。图 6-11 定义第一个列的名称、数据类型与长度(3)重复步骤2 的动作,依序定义所有列的属性,其中在第五个“单价”列上,必须在下方窗格的“精度”字段中输入数值“18” ,在“小数位数”字段中输入数值“2” 。图 6-12 指定单价列的精度及小数位数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计150 (4)表的所有列都定义完成后单击工具栏上的保存按钮,然后在打开的“选择名称”对话框中输入创建的表名“产品基本信息”,并单击“确定”按钮,完成表的定义保存。图 6-13 指定表的名称完成上述四个步骤后,就已经初步完成了创建表“产本基本数据” 的动作,这时可以直接按下窗口的关闭按钮,关闭设计表。回到控制台窗口后,可以在表的子目录中找到我们刚创建的表“产本基本信息”。图 6-14 “产本基本信息”出现在表子目录中6-3-3创建表主键每一个表可以定义一个主键,这个主键可以是单一列,也可以是由多个列丛集而成,它主要是用来唯一标识每一个数据列,也就是说这个主键在表中具有唯一性,绝对不会有重复。例如,上面创建的“产品基本信息”表中,每一项产品应该要有它自己的产品代号,我们可以由产品代号来标识唯一的产品数据,因此可以将这个“产品代号”数据行设置为“产品基本信息”表的主键。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 37 页 - - - - - - - - - 第 6 章表的创建151 接下来,就直接以“产品基本信息”表为例,来说明如何创建表的主键。(1)首先在“表”子目录中找到要设置的表项目“产品基本信息”,按下鼠标右键,在打开的快捷菜单中选择“设计表”命令,打开它的“设计表”窗口。(2)用鼠标在上方的窗格中选择要定义为主键的列,这里选择“产品代号”列,然后在工具栏上按下创建主键工具按钮。图 6-15 选择要定义为主键的列(3)这时可以在列的前面看到钥匙图标标示,表示该列已经被定义为表的主键,最后再单击保存工具按钮,让设置真正发生作用。图 6-16 数据行已经被定义为主键名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计152 如果表内需要由多个列从集成主键,可以单击在设计窗口中利用Ctrl 或Shift 键选取多个列,然后再单击工具按钮创建主键,这样所有被选取的列的前面都会出现钥匙图标。如图6-17 所示的表,其主键是由stor_id,ord_num与 title_id 三个列所构成的。图 6-17 丛集主键定义好主键之后,SQL Server 就会自动维护主键的唯一性,不允许存在相同的值。不过,在定义主键时,必须注意不能将设置为允许空的列指定为表的主键。6-3-4使用 CREATE TABLE 指令创建表除了可以使用表设计窗口创建表外,也可以使用Transact-SQL 语法中的CREATE TABLE指令来创建表。完整的CREATE TABLE语法相当复杂,在这里将不详细描述它的细节,只针对常用的简单表设计作说明,让读者对这个指定有初步的认识。常用的 CREATE TABLE语法如下:CREATE TABLE 表名( 字段名数据类型 ( 长度 ) 其他字段属性 , . . ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 37 页 - - - - - - - - - 第 6 章表的创建153 在 CREATE TABLE 后面接着是要创建的表名,然后在小括号内依序定义每一个列的名称、数据类型、长度等字段属性,而在不同的字段定义中使用逗号隔开。例如,我们要在目前的数据库中创建一个名称为“币别信息”的表,用来存放货币信息, 这个币别信息表的结构如图6-18 所示, 包含币别代号、 币别名称与币别符号等三个字段,且以币别代号列作为其主键。图 6-18 “货币类别信息”表这时,可以在Query Analysis 窗口中,执行下列的SQL 语句来创建该表:CREATE TABLE 币别信息( 币别代号 char(2) PRIMARY KEY, 币别名称 varchar(10) , 币别符号 varchar(6) ) 语句中的“ PRIMARY KEY”是用来设置该列为主键,在这个关键词后可以加上 CLUSTERED或 NONCLUSTERED关键词,用来表示该索引键为丛集索引,或者非丛集索引,如果没有指定,默认为NONCLUSTERED非丛集索引。如果要为列指定默认值,可以在该列定义后面加上DEFAULT 关键词并指定默认值。其他可用的列属性关键词说明如表6-6 所示。表 6-6 列属性关键词说明关键字说明Null | Not Null 设置该列是否允许空, 默认为 NOT Null表示该列不允许为空DEFAULT 默认值设置该列的默认值,指定的默认值参数可能是数值、字符串、日期时间数据,或者是函数名称IDENTITY (种子,增量 ) 设置该列为标识列,内容值会自动递增产生。在设置时必须指定起始值与每次增加的值,如果没有指定默认从数值1 开始,每次增加1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计154 续表关键字说明ROWGUIDCOL 这个关键词对应于表设计窗口中的“为RowGuid ”字段,在 uniqueidentifier 数据类型的列上加入这个关键词,将会自动使用 NEWID 作为其默认值,自动取得GUID COLLATE 排序规则名称指定列使用的排序规则名称,如果没有使用,默认套用数据库的排序规则方式6-4 表索引的管理在表中可以为某些列制作索引,当我们要对该列执行数据查询操作时,它将会通过该列索引文件找到数据在表中的位置,并取得查询的结果。由于表的索引文件通常会比表本身小,所以通过索引搜寻数据的速度会比直接在表上查询的速度快,不过相对的创建索引文件会占用磁盘空间,且数据更新的速度可能会较慢。为经常用来查询的列创建索引,可以加速数据的查询动作,这对于包含有大量数据的表而言非常重要。不过,必须注意的是,如果要同时对两个或两个以上的列进行数据查询的动作,必须将这些要同时查询的列创建成一个丛集索引,而不是分别对每一个列创建各自的索引。6-4-1表设计工具属性页在 Enterprsie Manager 管理工具中,可以利用设计表窗口的“索引/键”功能来管理维护表的索引键及索引特性,执行这个 “索引 /键”功能会打开如6-19所示的属性窗口。在“索引名”字段内指定索引的名称,用来唯一识别表的各个索引;下方的清单用来指定索引所涵盖的列,以及列的数据排列方式。例如,上图的 “IX_产品类别”索引是使用表的“类别编号”列作为索引键,以“升序”的方式排列。如果要创建包含多个字段的索引,依序将涵盖的每个字段分列设置在列表中。其他各个索引设置项目的意义说明如表6-7 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 37 页 - - - - - - - - - 第 6 章表的创建155 图 6-19 “索引 /键”选项卡表 6-7 各索引设置项目的意义项目说明索引文件组用来指示索引文件要存放到哪一个文件组创建 UNIQUE 用来指示是否要确保索引数据的唯一性,选取该选项可以选择创建唯一条件约束或是唯一索引,如果数据本身具有唯一性,但索引列组合与主键不同时,可以选择创建唯一索引;如果要确保某一个不属于主键的列不会有重复的数据,可以选择创建唯一条件约束忽略重复键当选择创建唯一索引时,可以利用这个复选框设置是否要忽略重复的索引键,如果选择忽略,则当新建数据重复时,只会将违反唯一性的数据忽略,其他的数据则可以顺利存入表中填充因子指示索引页容量的填满因子。当设置的值大于0 时,可以使用下方的“填充索引”选项,使每个内部节点保持开放的空间。这个值的大小会影响执行的效率,通常在创建索引时不需要指定它,但当我们能精确地预测数据未来的变化情况时,这个选项将会很有用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计156 续表项目说明创建为 CLUSTERED 指示该索引为丛集索引或非丛集索引。丛集索引会对数据实际保存的位置做排序处理,当我们经常对列作数据范围查询时,使用丛集索引将会加快查询的速度,因为数据在附近不自动重新计算统计指示 SQL Server 使用先前创建的统计信息,而不重新计算。使用这个选项产生的结果可能不是最佳的,一般不建议使用6-4-2利用表设计工具属性创建索引接下来,我们就直接以一个例子来说明使用属性窗口创建索引的步骤。假设在“产品基本信息”表中我们经常会利用产品类别编号来查询产品数据,可以为“产品基本信息”表中的“类别编号”列创建一个索引“IX_ 产品类别”。创建的步骤如下:(1)首先打开“产品基本信息”的表设计窗口,然后按下工具栏上的管理索引 /键工具按钮,打开属性窗口。图 6-20 执行“管理索引 /键”功能(2)单击“新建” 按钮, 这时会自动产生一个默认的索引设置,如图 6-21所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 37 页 - - - - - - - - - 第 6 章表的创建157 图 6-21 单击“新建”按钮自动产生默认索引设置(3)在“索引名” 文本框中重新指定索引的名称“ IX_产品类别”,在“列”字段中选择“类别编号”列,其他的设置使用默认值。图 6-22 “索引 /键”选项卡名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 37 页 - - - - - - - - - ASP 与 SQL 网站数据库程序设计158 (4)设置完成后,单击“关闭”按钮,关闭属性窗口回到表设计窗口,并单击工具栏上的“保存”按钮,保存所有的设计更改,完成表索引的创建动作。另外,如果需要经常同时就产品的价格与币别进行数据查询,也可以将这两个列创建成索引,列清单中依序选定“单价”与“币别”列,设置的画面如图 6-23 所示。图 6-23 指定多个列在使用这个属性窗口维护表的索引设置时必须要小心,因为在这个窗口上进行的所有变动,都会立即记录下来,变动无法取消复原,除非在回到表设计窗口中不执行保存的动作,取消所有的表设计更改。6-4-3使用向导创建索引SQL 2000 中提供了一个“创建索引向导”,可用来协助数据库管理者为表创建索引,在这里,将利用这个创建索引向导,利用“产品基本信息”表中的“产品名称”列创建一个索引“IX_ 产品名称”。(1)在 Enterprise Manager 控制台的菜单中选择“工具”|“向导”命令,打开“选择向导”对话框,展开“数据库”目录,从中选取“创建索引向导”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 37 页 - - - - - - - - - 第