任务二 修改表的数据结构

在项目实施过程中,经常会遇到表结构的最初设计与实际使用存在差距的情况。如“学生表”的“籍贯”列的最大长度为10,实际使用时很可能会超过这个长度;再如,“性别”列只有0和1两个值,用char(1)型更合适;又如,所有记录的“学生编号”的值都是固定的4个字符,设置为char(4)比varchar(10)更节省存储空间。因此,为了避免浪费存储空间和保证应用程序的稳定运行,需要修改表的数据结构。类似的还有以下几种情况。

● 向已经存在的表中增加新的列。

● 删除表中不需要的列。

● 修改列的数据类型(包括修改字符串类型的长度)。

本任务以修改“学生表”的数据类型为例,分别介绍在【表设计】标签页和alter table语句中修改表结构的方法。

(一)在【表设计】标签页中修改表结构

读者应通过对本节的执行,掌握在【表设计】标签页中修改表结构的方法。

【基础知识】

在【表设计】标签页中修改表结构的操作方法与定义表属性的操作方法完全一致。

【操作目标】

修改“学生表”的数据类型,修改内容见表3-4。

表3-4 修改“学生表”的数据结构

【操作步骤】

STEP 1 展开【SQL Server Management Studio】的【教学管理数据库】节点,单击子节点【表】,展开并显示“教学管理数据库”所拥有的系统表和用户创建的表,如图3-6所示。

图3-6 显示“教学管理数据库”的系统表和用户定义表

STEP 2 在【dbo.学生表】节点上单击鼠标右键,在弹出的快捷菜单中单击【设计】菜单项,打开“学生表”的【表设计】标签页。在列表框中按表3-4的要求修改数据类型,如图3-7所示。

图3-7 修改数据类型

STEP 3 单击工具栏上的按钮,保存对“学生表”的修改。

请读者注意,如果表中已经存在数据,修改列的数据类型及字符串类型的长度时不能与已有的数据产生矛盾。假设“学生表”中存在一条记录,“学生姓名”取值为“那斯鲁丁·阿凡提”,长度为15个字节,如果将其数据类型改为varchar(10),将会丢失部分数据,变成“那斯鲁丁·”。修改char或varchar类型的列的长度时,数字和一个英文字母占一个字节,一个汉字占两个字节。

(二)用alter table语句修改表结构

alter table语句的参数很多,本节中只介绍几个用于完成常用功能的参数,如修改列的数据类型、增加列、删除列。

读者应通过对本节的执行,掌握alter table语句的语法。

【基础知识】

修改“学生表”中“学生编号”列的数据类型为char(4)的语法见表3-5。

表3-5 alter table语句的语法

用alter table语句修改表结构时,一次只能完成一项修改。

【操作目标】

用alter table语句修改“学生表”的数据结构,修改内容见表3-5。

【操作步骤】

STEP 1 启动【SQL Server Management Studio】程序,将可用数据库设置为

STEP 2 在【SQL查询】标签页中,输入如图3-8所示的alter table语句。

STEP 3 单击工具栏中的按钮,执行alter table语句,执行信息在【消息】标签页中提示,如图3-8所示。

图3-8 用alter table语句修改表结构

关于alter table语句其他参数的详细说明,有兴趣的读者可以参考“联机丛书”的“ALTER TABLE语句”的“Transact-SQL参考”部分。