3.2 设计数据表
表是包含数据库中所有数据的数据库对象。表定义为列的集合。与电子表格相似,数据在表中是按行和列的格式组织排列的。每行代表惟一的一条记录,而每列代表记录中的一个域。本节介绍创建表、创建计算字段、修改表和删除表的过程。
实例074 创建数据表
这是一个可以提高基础技能的实例
实例位置:光盘\mingrisoft\03\074
实例说明
本实例介绍在SQL Server 2000企业管理器中创建数据表的过程。
技术要点
数据库的数据对象包括所有的数据表、视图、存储过程、扩展存储过程、游标、触发器、规则、默认值及约束等。一个数据库中所有对象的总数不得超过2147 483647。
其中,数据表是包含数据库中所有数据的数据库对象,表定义为列的集合。数据在表中是按行和列的格式组织排列的。表的列称为字段,表中的每个字段都存储着性质不同的数据,对于表来说,表中的每一行是由各个字段中的数据组成的,它构成了一条记录,表是由结构和记录组成的,表的结构就是指表中应含哪些字段,以及这些字段的特性即字段的名称,字段的数据类型、长度、精度及是否允许空值等,每个表至多可定义1024 字段。表和字段的命名要遵守标识符的规定,在特定表中字段必须是惟一的,但同一数据库中的不同表可使用相同的字段名。
设计表时要为每个字段指派数据类型。数据类型定义了各个字段所允许的数据值。下面将介绍SQL Server 2000的基本数据类型。
● 二进制数据。
二进制数据由十六进制数表示。在SQL Server 2000中,二进制数据使用binary、varbinary和image数据类型存储。详细说明如表3.1所示。
表3.1 二进制数据类型说明
● 字符数据。
字符数据由字母、符号和数字组成。在SQL Server 2000中,字符数据使用char、varchar和text数据类型存储。详细说明如表3.2所示。
表3.2 字符数据类型说明
● Unicode数据。
在SQL Server 2000中,传统上非Unicode数据类型允许使用由特定字符集定义的字符。字符集是在安装SQL Server时选择的,不能更改。使用Unicode数据类型,列可存储由Unicode标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode数据类型需要相当于Unicode数据类型两倍的存储空间。详细说明如表3.3所示。
表3.3 Unicode数据类型说明
● 日期和时间数据。
日期和时间数据由有效的日期或时间组成。其详细说明如表3.4所示。
表3.4 日期和时间数据类型说明
● 数字数据。
任何数据类型都离不开数字数据,SQL Server 2000也不例外。SQL Server 2000的数字数据只包含数字。数字数据包含正数、负数、小数、分数和整数。
整型数据由负整数或正整数组成,如-1、0、1等。在SQL Server 2000中,整型数据使用bigint、int、smallint和tinyint数据类型存储,小数数据使用decimal或numeric数据类型存储,近似数字数据以float和real数据类型存储。详细说明如表3.5所示。
表3.5 数字数据类型说明
● 货币数据。
货币数据表示正的或负的货币值在SQL Server 2000中使用money和smallmoney数据类型存储货币数据。详细说明如表3.6所示。
表3.6 货币数据类型说明
● 特殊数据。
特殊数据包括不能用前面所讲述的二进制、字符、Unicode、日期和时间、数字和货币数据类型表示的数据。详细说明如表3.7所示。
表3.7 特殊数据类型说明
● 用户定义的数据类型。
SQL Server 2000允许用户自己定义数据类型,这对于有特殊需要的用户而言是非常方便的。用户定义数据类型基于SQL Server 2000中的系统数据类型。
实现过程
下面将在医药管理系统数据库YYGLXT中创建一个入库表rkd,该表主要用来存储药品入库信息。具体设计步骤如下。
(1)在SQL Server 2000企业管理器中,展开服务器组,然后展开服务器。
(2)展开要创建表的医药管理系统数据库“YYGLXT”。
(3)在“表”选项上单击鼠标右键,在出现的快捷菜单中选择“新建表”命令,如图3.6所示。
图3.6 新建数据表
(4)输入列名。在SQL Server中,列名不允许重复,而且必须符合SQL Server的标识符规范。每填写完一列后,都有新的一列出现。
(5)选择适当的数据类型,并设置长度。
(6)在“允许空”选项中,如果设置不允许空,那么插入记录或修改记录时,将不允许空值出现,否则将出现错误提示。
(7)输入完成后,单击“保存”按钮,将弹出输入表名的对话框。将表名设定为rkd,然后单击“确定”按钮,如图3.7所示。
图3.7 输入表名
(8)关闭“新建表”窗口后,在YYGLXT数据库中将看到表rkd。表rkd的结构如表3.8所示。
表3.8 表rkd的结构
举一反三
根据本实例,读者可以:
使用CREATE TABLE命令创建表;
通过导入表来创建表;
通过恢复指定表的脚本文件创建表。
实例075 创建计算字段
这是一个可以提高基础技能的实例
实例位置:光盘\mingrisoft\03\075
实例说明
在实际的数据库操作中,经常会遇到数据计算。本例将介绍通过在企业管理器中对数据库YYGLXT中的销售信息表xsd中的“数量”、“单价”这两个字段实现计算字段“金额”,该计算字段的值等于“数量”和“单价”的乘积。
技术要点
表设计器提供属性页,通过这些属性页可以创建、删除和修改数据库对象并设置影响这些对象的其他选项。列属性页中包含表中列的一组属性,其中“公式”属性用于输入计算表达式,用于计算。下面分别介绍这些属性。
1.表名
显示包含正查看其属性的列的表名。仅在数据库设计器(而不是表设计器)内才能编辑“表名”选项。如果在关系图中选定的表不止一个,则只有第一个表的名称是可见的。
2.列名
显示关系图中选定表的选定列名。如果在关系图中选定的表不止一个,则只有第一个表的第一个列名是可见的。若要显示其他列的属性,请展开“列名”列表。
3.描述
显示对选定列的文本描述。
4.默认值
每当在表中为该列插入带空值的行时,显示该列的默认值。该字段的值既可以是SQL Server默认约束值,也可以是该列绑定的全局约束名。下拉列表包含在数据库中定义的所有全局默认值。若要将列绑定到全局默认值上,请从下拉列表中选择。或者,若要创建列的默认约束,请直接以文本形式输入默认值。
5.精度
显示该列值的最大数字个数。
6.小数位数
显示该列值小数点右边能出现的最大数字个数。
7.标识
显示SQL Server是否将该列用作标识列。值为“是”、“否”和“是(不适用于复制)”,其中“否”表示不将该列用作标识列;“是”表示将该列用作标识列;“是(不适用于复制)”表示将该列用作标识列,但复制代理程序正将数据插入表中时除外。
8.标识种子
显示标识列的种子值。该选项只适用于其“标识”选项设置为“是”或“是(不适用于复制)”的列。
9.标识递增量
显示标识列的递增量值。该选项只适用于其“标识”选项设置为“是”或“是(不适用于复制)”的列。
10.是RowGuid
显示SQL Server是否将该列用作ROWGUID列。只有对于标识列才能将该值设置为“是”。
11.公式
显示用于计算列的公式。
12.排序规则
每当列值用于对查询结果的行进行排序时,显示默认情况下SQL应用到列的排序序列。若要使用数据库的默认排序序列,请选择 <database default>。
13.已索引
显示列上是否存在索引。值为“否”、“是(允许重复)”和“是(不允许重复)”,其中“否”表示列上不存在索引,“是(允许重复)”表示列上存在非惟一索引,“是(不允许重复)”表示列上存在惟一索引。
实现过程
(1)依次单击“开始”→“程序”→“Microsoft SQL Server”→“企业管理器”,出现Microsoft SQL Server企业管理器界面。
(2)展开服务器组,然后展开服务器。依次展开“数据库”→“YYGLXT”数据库,单击“表”选项,在右侧窗口列出所有表,右键单击表xsd,在弹出的快捷菜单中选择“设计表”命令,打开表设计器。
(3)在“金额”字段下的列属性页中的“公式”文本框中输入如下计算表达式:
单价×数量
输入完成后的结果如图3.8所示。
图3.8 设计计算字段
(4)保存表,SQL Server自动为“金额”字段选择数据类型,查看该表中的数据,可以看到“金额”字段自动计算后的结果,如图3.9所示。
图3.9 金额自动计算后的结果
举一反三
根据本实例,读者可以:
创建能够显示系统日期的日期字段;
创建自动编号字段。
实例076 修改表
这是一个可以提高基础技能的实例
实例位置:光盘\mingrisoft\03\076
实例说明
本实例将通过企业管理器中的表设计器对数据库YYGLXT中的kh表的结构进行修改。
技术要点
对于数据库中的表的结构在定义完成以后,并不是一直不能改变的,SQL Server允许用户向已定义好的表增添、插入、删除字段,还可以更改字段的名称、数据类型、长度、精度和小数位数。
更改表结构时,不仅影响要修改字段中的数据,访问该字段的相关程序代码时也必须作相应的修改,而且用户对表的操作也要相应地变动,所以表的结构在系统运行的初期就应确定下来,系统运行一段时间后,尽量不要改变表结构,以免造成程序错误。
实现过程
(1)依次单击“开始”→“程序”→“Microsoft SQL Server”→“企业管理器”,出现Microsoft SQL Server企业管理器界面。
(2)展开服务器组,然后展开服务器。依次展开“数据库”→“YYGLXT”数据库,单击“表”在右侧窗口列出所有表,右键单击表kh,在弹出的快捷菜单中选择“设计表”命令,打开表设计器,如图3.10所示。
图3.10 修改前的客户信息表kh
(3)修改“客户编号”字段,该字段的数据类型改为bitint,在列属性页中设置“标识”为“是”,设置完成后将自动生成“客户编号”,将所属区域字段删除,修改“地址”字段的数据类型为varchar,长度为100。修改后的客房信息表kh如图3.11所示。
图3.11 修改后的客户信息表kh
(4)修改完毕,单击“关闭”按钮,当询问是否保存时,单击“确定”按钮,至此表修改完毕。
举一反三
根据本实例,读者可以:
使用ALTER TABLE命令更改表的结构。
实例077 删除表
这是一个可以提高基础技能的实例
实例位置:光盘\mingrisoft\03\077
实例说明
对于不再使用的数据表,应该及时地将其删除,从而节省存储空间。本实例介绍通过企业管理器删除表的过程。
技术要点
删除表时,表的结构定义、数据、全文索引、约束和索引都永久地从数据库中删除,原来存放表及其索引的存储空间可用来存放其他表。如果要删除通过外键和主键约束相关的表,必须首先删除具有外键约束的表。如果要删除外键约束中引用的表而不是删除整个外键表,则必须删除外键约束。
实现过程
下面介绍删除数据库YYGLXT中的职工表employ,具体操作步骤如下。
(1)在企业管理器中,选择要删除的表。
(2)右键单击该表,在弹出的快捷菜单中选择“删除”命令,打开“除去对象”对话框,如图3.12所示。单击“全部除去”按钮,即可完成删除数据表的操作。
图3.12 删除表
举一反三
根据本实例,读者可以:
使用DROP TABLE命令删除表。