当前位置:文档之家› 数据库技术实验指导书

数据库技术实验指导书

第一章
SQL Server 概述和安装
一、 SQL Server 的版本 本节的大部分信息来源于 SQL Server 联机丛书、本地安装提供的信息、 Internet 图书资源和出版刊物。 SQL Server 2008 共有 7 个不同的版本,它们分别是企业版、标准版、开发 版、工作组版、Web 版、速成版和精简版。根据应用程序的需要,安装要求会有 所不同。 1、企业版 SQL Server 2008 Enterprise 是一种综合的数据平台, 可以为运行安全的业务 关键应用程序提供最高级别的可扩展性和企业级功能,支持数据库镜像、数据库 快照、联机索引、在线页面还原、分布式分区视图和高级商业智能。适用于 32 位和 64 位环境,支持 IA64,支持操作系统的最大 CPU 和最大内存。 2、标准版 SQL Server 2008 Standard 是一个提供易用性和可管理性的完整数据平台, 它提供的功能可满足普通企业的一般需求。适用于 32 位和 64 位环境,支持操作 系统的最大内存和四 CPU。 3、开发版 SQL Server 2008 Developer 支持开发人员构建基于 SQL Server 的任一种类 型的应用程序。 它包括 SQL Server 2008 Enterprise 的所有功能, 但有许可限制, 只能用作开发和测试系统,而不能用作生产服务器。SQL Server 2008 Developer 是构建和测试应用程序的人员的理想选择。 可以升级 SQL Server 2008 Developer 以将其用于生产用途。 4、工作组版 SQL Server Workgroup 提供一个可靠的数据管理和报告平台,其中包括安全 的远程同步和管理功能,是小用户负载和小规模 Web 应用程序的理想选择。适 用于 32 位和 64 位环境,支持双 CPU,64 位环境下的最大 4GB 寻址空间和 32 位环境下操作系统的最大寻址空间。 5、 Web 版 对于大流量 Web 应用程序,SQL Server 2008 Web 是一项总拥有成本较低 的选择。适用于 32 位和 64 位环境,支持操作系统的最大内存和最多四 CPU。 6、 速成版 SQL Server 2008 Express 是与 Visual Studio 2008 集成的数据库产品, 可以免 费下载和分发,它也可用于替换 Microsoft Desktop Engine (MSDE),是针对嵌入 式应用客户端的高性能,轻量级 Web 应用和本地数据存储的解决方案。适用于 32 位和 64 位环境,支持单 CPU 和最大 1GB 寻址空间。 7、 精简版 SQL Server Compact 3.5 是一个免费提供的嵌入式数据库,开发人员可利用 它来生成适用于 Windows 桌面和移动设备的可靠应用程序。 二、 SQL Server 的服务和功能 SQL Server 2008 是一个可信任的、高效的、智能的数据平台,它主要由数 据库引擎、分析服务、报表服务和集成服务 4 个服务组成。

1、数据库引擎 SQL Server Database Engine (简称为 SSDE) 是 SQL Server 2008 系统的核心, 负责完成业务数据的存储、查询、处理和安全管理等操作。 2、分析服务 SQL Server Analysis Services (简称为 SSAS) 提供多维分析和数据挖掘功能, 可以支持用户建立数据仓库和进行商业智能分析。 3、报表服务 SQL Server Reporting Services(简称为 SSRS)提供支持 Web 的企业级的报 表功能,使用户可以方便地定义和发布满足自己需求的报表。 4、集成服务 SQL Server Integration Services(简称为 SSIS)是一个数据集成平台,可以 完成有关数据的提取、转换和加载等。数据库引擎、分析服务和报表服务正是通 过集成服务集成在一起,形成一个完整的 SQL Server 2008 系统。 三、 安装 SQL Server 在安装 SQL Server 2008 前应先制定一个安装计划。 例如, 要安装 SQL Server 2008 的哪个版本,要用哪种授权方案,要准备哪种硬件资源。不同版本的 SQL Server 2008 的安装要求可参阅联机丛书。本节以可试用 180 天的 SQL Server 2008 Enterprise Evaluation 的安装为例说明 SQL Server 2008 的安装过程。 运行 SQL Server 2008 安装程序后,首先需要确认许可条款。如图 1-1 所示。
图 1-1 SQL Server 2008 许可条款
在仔细阅读许可条款后,若接收许可条款,可进入下一步,了解 SQL Server 2008 安装信息。如图 1-2 所示。

图 1-2 SQL Server 2008 安装计划
在确定安装计划后开始安装。安装过程分为三个主要阶段:兼容性检查、数 据收集和软件安装。 1、兼容性检查 安装程序将验证目标服务器的软/硬件配置是否满足安装的最低要求。如图 1-3 所示。

图 1-3 兼容性检查
如果系统没有通过最小符合性检查,那么将不能继续进行安装。单击“显示 详细信息”按钮可获取有关配置检查结果的更多信息。若一切就绪,可进入下一 步。 2、数据收集 若兼容性检查没有问题,将进入如图 1-4 所示的注册界面。可输入密钥来获 取 SQL Server 2008 的注册版本, 或者选择一个免费版本, 如 Enterprise Evaluation。

图 1-4 版本确认
单击“下一步”后,将出现“许可条款”显示窗口。若接受许可条款,将进 入“功能选择”窗口。如图 1-5 所示。
图 1-5 功能选择

在选择所需要的组件后,将进入如图 1-6 所示的“实例配置”窗口。选择默 认实例或给出一个实例名,并确保为文件安装配置正确的路径。
图 1-6 实例配置
若有足够的磁盘空间,将进入服务器配置和各项服务的配置。配置完成后, 将会进行安装规划检查,以确保可以按前面的配置进行安装。如图 1-7 所示。

图 1-7 安装规划检查
3、软件安装 单击图 1-7 中的“显示详细信息”按钮可确认安装参数。在确认无误后,可 进入下一步的安装。 若所有的安装选项均显示“成功” ,如图 1-8 所示,则安装完成。

图 1-8 安装完成

第二章
创建数据库和表
一、 知识要点 1、创建数据库 大多数数据库只要一个数据文件和一个事务日志文件就可以很好地工作。可 以通过 SQL Server Management Studio 或 Transact-SQL 来创建一个新的数据库。 1)使用 SQL Server Management Studio 创建数据库 运行 SQL Server Management Studio,打开“连接到服务器”对话框,将“对 象资源管理器”连接到“数据库引擎”服务器上。在“对象资源管理器”中,右 击“数据库”选项,选择“新建数据库”命令,打开“新建数据库”对话框。如 图 2-1 所示。
图 2-1 新建数据库
在“新建数据库”对话框中,需给出数据库名,可设置数据文件和日志文件 的初始大小、自动增长、最大文件大小和文件路径。一个文件可以按比例或按兆 字节数的方式自动增长,直到最大值。 2)使用 Transact-SQL 创建数据库 创建数据库的 Transact-SQL 语句的简要句法如下:
CREATE DATABASE database_name [ ON [ PRIMARY ] [ [ ,...n ] [ LOG ON { [ ,...n ] } ] ] ]

[;]
其中, database_name:新数据库的名称。 ON:指定用来存储数据库数据部分的磁盘文件。 PRIMARY:指定关联的 列表定义主文件。在主文件组的 项中指定的第一个文件将成为主文件。如果没有指定 PRIMARY,那 么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。 :文件属性。 LOG ON:指定用来存储数据库日志的磁盘文件。 文件属性定义为:
::= { ( NAME = logical_file_name , FILENAME = { 'os_file_name' | 'filestream_path' } [ , SIZE = size [ KB | MB | GB | TB ] ] [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ] ) [ ,...n ] }
其中, NAME:指定文件的逻辑名称,即引用文件时在 SQL Server 中使用的逻辑 名称。 FILENAME:指定操作系统(物理)文件名称。 SIZE:指定文件的初始大小。 MAXSIZE:指定文件可增大到的最大大小。如果不指定,则文件将不断增 长直至磁盘被占满。 FILEGROWTH:指定文件的自动增量,即每次需要新空间时为文件添加的 空间量。如果未指定 FILEGROWTH,则数据文件的默认值为 1 MB,日志文件 的默认增长比例为 10%。 单击工具栏中的“新建查询”选项,在“SQLQuery”窗口中输入如下创建 数据库的代码:
CREATE DATABASE display ON PRIMARY( NAME=display, FILENAME='H:\data\display.mdf', SIZE=3MB, MAXSIZE=UNLIMITED, FILEGROWTH=3MB) LOG ON (

NAME=display_Log, FILENAME='H:\data\display_Log.ldf', SIZE=1MB, );
单击“执行”按钮,可建立 display 数据库。如图 2-2 所示。
图 2-2 使用 Transact-SQL 创建数据库
2、附加和分离数据库 附加和分离功能允许在实例和服务器之间移动和复制数据库。 附加一个数据库是添加这个数据库的关联到 master 系统数据库。在附加数 据库之前应确保数据文件和日志文件在相应的路径下。 在 “对象资源管理器” 中, 右击“数据库”选项,执行“附加”命令,将打开“附加数据库”对话框,单击 “添加”按钮,选择要附加的.mdf 文件,单击“确定”按钮,可附加选择的数 据库文件到数据库实例中。 分离一个数据库是删除 master 系统数据库到该数据库的关联,但不删除数 据库或日志文件。在分离一个数据库之后,相关文件可以转移或复制到新的路径 下, 并附加。 在分离数据库之前应确保数据库不在使用中。 在 “对象资源管理器” 中,右击要分离的数据库,执行“任务”选项中的“分离”命令可将该数据库从 数据库实例中移走。 3、创建表 可以通过 SQL Server Management Studio 或 Transact-SQL 来创建一个表。 1)使用 SQL Server Management Studio 创建表 在“对象资源管理器”中,展开要建立表的数据库,右击“表”选项,执行 “新建表”命令,打开如图 2-3 所示的对话框。

图 2-3 使用 SQL Server Management Studio 创建表
在图 2-3 所示的对话框中,为表中的每一列指定列名、数据类型、是否允许 为空,并设置列属性和表属性。 2)数据类型 在 SQL Server 中,每个列、局部变量、表达式和参数都具有一个相关的数 据类型。SQL Server 2008 提供了 33 种数据类型。 (1)整型数据类型有 int,smallint,tinyint,bigint 四种。其中, int:占 4 个字节,范围为-231~231-1。 smallint:占 2 个字节,范围为-215~215-1。 tinyint:占 1 个字节,范围为 0~255。 bigint:占 8 个字节,范围为-263~263-1。 (2)位数据类型 bit,可以取值为 1 或 0。 (3)浮点数据类型有 real,float,decimal 和 numeric 四种。其中, real:占 4 个字节,范围为-3.40E+38~3.40E+38,最大可以有 7 位精确位数。 float: 占 8 个字节, 范围为-1.79E+308~1.79E+308, 可以精确到第 15 位小数。 decimal 和 numeric:范围为-1038-1~1038-1,可以用 2~17 个字节来存储。这 两种数据类型都是带固定精度和位数的数据类型,它们在功能上是等价的,只是 名称不同而已。下面主要以 decimal 为例来说明。 decimal 的语法为: decimal(p,s) 其中,p 表示可供存储的数值的总位数(不包括小数点) ,取值范围为 1 至 38,默认设置为 18。s 表示小数点后的位数,取值范围为 0 至 p 之间的数值(包 括 0 和 p) ,默认设置为 0。 (4)货币数据类型有 money 和 smallmoney 两种,可以在数字前面加上货 币单位符号(如¥) ,它们的小数位数最多是 4,当小数位数超过 4 时,自动按 照四舍五入处理。其中, money:占 8 个字节,范围为-922 337 213 685 477.5808~ 922 337 213 685 477.5807。

smallmoney:占 4 个字节,范围为-214 748.3648~ 214 748.3647。 (5)字符数据类型有 char,varchar,nchar 和 nvarchar 四种,其中 char(n):每个字符和符号占 1 个字节,n 的取值范围为 1~8000。 varchar(n):每个字符和符号占 1 个字节,n 的取值范围为 1~8000,可以存 储长达 8000 个字符的可变长度字符串。 nchar(n):采用 Unicode(统一字符编码标准)字符集,每个字符占 2 个字节, n 的取值范围为 1~4000 。 nvarchar(n): 采用 Unicode(统一字符编码标准)字符集, 每个字符占 2 个字节, n 的取值范围为 1~4000,可以存储长达 4000 个字符的可变长度字符串。 (6)日期和时间数据类型有 datetime,Smalldatetime,date,time,datetime2 和 datetimeoffset 六种。其中, datetime:占 8 个字节,格式为 YYYY-MM-DD hh:mm:ss[.nnn],范围为公元 1753 年 1 月 1 日零时到公元 9999 年 12 月 31 日 23 时 59 分 59 秒,其精确度可 达 1/300 秒。 smalldatetime:占 4 个字节,格式为 YYYY-MM-DD hh:mm:ss,范围为公元 1900 年 1 月 1 日到公元 2079 年 6 月 6 日,其精确度为 1 分钟。 date:占 3 个字节,格式为 YYYY-MM-DD,范围为公元 0000 年 1 月 1 日到 公元 9999 年 12 月 31 日,其精确度为 1 分钟。 time: 占 3 至 5 个字节, 格式为 hh:mm:ss[.nnnnnnn], 范围为 00:00:00.0000000 到 23:59:59.9999999,其精确度为 100 纳秒。 datetime2:占 6 至 8 个字节,格式为 YYYY-MM-DD hh:mm:ss[.nnnnnnn], 范围为 0001-01-01 00:00:00.0000000 到 9999-12-31 23:59:59.9999999,其精确度 为 100 纳秒。 datetimeoffset: 占 8 至 10 个字节, 格式为 YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm , 范 围 为 0001-01-01 00:00:00.0000000 到 9999-12-31 23:59:59.9999999,其精确度为 100 纳秒。 (7)文本数据类型有 text 和 ntext 两种。其中, text:用于存储大容量文本数据,范围 1~231-1 个字节,在定义 text 数据类型 时,不需要指定数据长度,SQL Server 会根据数据的长度自动为其分配空间。 ntext:用于存储大容量文本数据,采用 Unicode 标准字符集,范围 1~230-1 个字节。 (8)二进制数据类型有 binary,barbinary 和 image 三种。其中, binary(n):n 的取值范围为 1~8000,数据的存储长度为 n+4 个字节。 varbinary(n):n 的取值范围为 1~8000,数据的存储长度是变化的,它是实际 输入数据的长度加上 4 个字节。 image:用于存储照片、目录图片或者图画,范围为 1~231-1 个字节。 (9)其他数据类型有: cursor:游标是变量或存储过程的输出参数使用的一种数据类型。 hierarchyid:用于表示层次结构中的位置。 sql_variant:用于存储除文本、图形数据、timestamp 和 sql_variant 数据类型 外的其他任何合法的 SQL Server 数据。 table:用于存储对表或者视图处理后的结果集。 timestamp:主要用于在数据表中自动记录其数据的修改时间。 uniqueidentifier:用于存储一个 16 个字节长的二进制数据类型,它是 SQL

Server 根据计算机网络适配器地址和 CPU 时钟产生的全局唯一标识符代码。 xml:用于存储 XML 数据。 3)使用 Transact-SQL 创建表 创建表的 Transact-SQL 语句的简要句法如下:
CREATE TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name ( { | } [ ] [ ,...n ] ) [ ; ]
其中,
database_name: 在其中创建表的数据库的名称。 若缺省则默认为当前数据库。 schema_name:新表所属架构的名称。若缺省则默认为 dbo。 table_name:新表的名称。 :列的定义。 :计算列的定义。 :表的约束。 列的简要定义为:
::= column_name [ COLLATE collation_name ] [ NULL | NOT NULL ] [ [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] | [ IDENTITY [ ( seed ,increment ) ] [ NOT FOR REPLICATION ] ] [ ROWGUIDCOL ] [ [ ...n ] ]
其中, column_name:列名。 :数据类型。 COLLATE:指定列的排序规则。 collation_name:排序规则名称。 NULL | NOT NULL:确定列中是否允许使用空值。 CONSTRAINT:定义约束。 constraint_name:约束名。 DEFAULT:定义默认值。 constant_expression:用作列的默认值的常量、NULL 或系统函数。如果在 插入过程中未显式提供值,则指定为列提供的默认值。

IDENTITY:指示新列是标识列。在表中添加新行时,数据库引擎将为该列 提供一个唯一的增量值。必须同时指定种子和增量,或者两者都不指定。如果二 者都未指定,则取默认值 (1,1)。 seed:种子。是装入表的第一行所使用的值 increment:增量。是向装载的前一行的标识值中添加的增量值 NOT FOR REPLICATION:在 CREATE TABLE 语句中,可为 IDENTITY 属性、FOREIGN KEY 约束和 CHECK 约束指定 NOT FOR REPLICATION 子 句。如果为 IDENTITY 属性指定了该子句,则复制代理执行插入时,标识列中 的值将不会增加。如果为约束指定了此子句,则当复制代理执行插入、更新或删 除操作时,将不会强制执行此约束。 ROWGUIDCOL:指示新列是全局唯一标识符列,NEWID 函数可为该列提 供数据。 :列的约束。 列约束的简要定义为:
::= [ CONSTRAINT constraint_name ] { { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] | [ FOREIGN KEY ] REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ] [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ NOT FOR REPLICATION ] | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) }
表约束的简要定义为:
< table_constraint > ::= [ CONSTRAINT constraint_name ] { { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] (column [ ASC | DESC ] [ ,...n ] ) | FOREIGN KEY ( column [ ,...n ] ) REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ NOT FOR REPLICATION ] | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) }
其中,

CONSTRAINT: 指定约束名, 表示 PRIMARY KEY、 NOT NULL、 UNIQUE、 FOREIGN KEY 或 CHECK 约束定义的开始。 PRIMARY KEY:是通过唯一索引对给定的一列或多列强制实体完整性的约 束。每个表只能创建一个 PRIMARY KEY 约束。 UNIQUE:一个约束,该约束通过唯一索引为一个或多个指定列提供实体完 整性。一个表可以有多个 UNIQUE 约束。 CLUSTERED | NONCLUSTERED: 指示为 PRIMARY KEY 或 UNIQUE 约 束创建聚集索引还是非聚集索引。PRIMARY KEY 约束默认为 CLUSTERED, UNIQUE 约束默认为 NONCLUSTERED。在 CREATE TABLE 语句中,可只为 一个约束指定 CLUSTERED。 如果在为 UNIQUE 约束指定 CLUSTERED 的同 时 又 指 定 了 PRIMARY KEY 约 束 , 则 PRIMARY KEY 将 默 认 为 NONCLUSTERED。 FOREIGN KEY REFERENCES :为列中的数据提供引用完整性的约束。 FOREIGN KEY 约束要求列中的每个值在所引用的表中对应的被引用列中都存 在 。 FOREIGN KEY 约束只 能引 用在所 引 用的表 中是 PRIMARY KEY 或 UNIQUE 约束的列,或所引用的表中在 UNIQUE INDEX 内的被引用列。 ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }:指 定如果已创建表中的行具有引用关系,并且被引用行已从父表中删除,则对这些 行采取的操作。NO ACTION 表示数据库引擎将引发错误,并回滚对父表中相应 行的删除操作。CASCADE 表示如果从父表中删除一行,则将从引用表中删除相 应行。SET NULL 表示如果父表中对应的行被删除,则组成外键的所有值都将设 置为 NULL。若要执行此约束,外键列必须可为空值。SET DEFAULT 表示如果 父表中对应的行被删除,则组成外键的所有值都将设置为默认值。若要执行此约 束,所有外键列都必须有默认定义。如果某个列可为空值,并且未设置显式的默 认值,则将使用 NULL 作为该列的隐式默认值。默认值为 NO ACTION。 ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }:指 定在发生更改的表中,如果行有引用关系且引用的行在父表中被更新,则对这些 行采取什么操作。NO ACTION 表示数据库引擎将引发错误,并回滚对父表中相 应行的更新操作。CASCADE 表示如果在父表中更新了一行,则将在引用表中更 新相应的行。SET NULL 表示如果更新了父表中的相应行,则会将构成外键的所 有值设置为 NULL。若要执行此约束,外键列必须可为空值。SET DEFAULT 表 示如果更新了父表中的相应行,则会将构成外键的所有值都设置为其默认值。若 要执行此约束,所有外键列都必须有默认定义。如果某个列可为空值,并且未设 置显式的默认值,则将使用 NULL 作为该列的隐式默认值。默认值为 NO ACTION。 CHECK:定义 CHECK 约束。 单击工具栏中的“新建查询”选项,在“SQLQuery”窗口中输入如下创建 表的代码:
CREATE TABLE dbo.product ( 型号 屏幕尺寸 屏幕比例 面板类型 char(20), decimal(4,1), char(5), varchar(30),

最佳分辨率 char(9), PRIMARY KEY (型号) );
在可用数据库中选择 display 数据库,单击“执行”按钮,将在 display 数据 库创建 dbo.product 表,如图 2-4 所示。
图 2-4 使用 Transact-SQL 创建表
4、修改表 可以通过 SQL Server Management Studio 或 Transact-SQL 来修改一个表。 1)使用 SQL Server Management Studio 修改表 在“对象资源管理器”中,右击要修改的表,执行“设计”命令可修改表。 如图 2-5 所示。

图 2-5 修改表
2)使用 Transact-SQL 修改表 修改表的 Transact-SQL 语句的简要句法如下:
ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name { ALTER COLUMN column_name { [ type_schema_name. ] type_name [ ( { precision [ , scale ] } ) ] [ COLLATE collation_name ] [ NULL | NOT NULL ] | {ADD | DROP } { ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION } } | [ WITH { CHECK | NOCHECK } ] | ADD { | | } [ ,...n ] | DROP { [ CONSTRAINT ] constraint_name [ WITH ( [ ,...n ] ) ]

| COLUMN column_name } [ ,...n ] [ ; ]
其中, ALTER COLUMN:指定要更改命名列。 WITH CHECK | WITH NOCHECK:指定表中的数据是否用新添加的或重新 启用的 FOREIGN KEY 或 CHECK 约束进行验证。如果未指定,对于新约束, 假定为 WITH CHECK,对于重新启用的约束,假定为 WITH NOCHECK。 ADD:指定添加一个或多个列定义、计算列定义或者表约束。 DROP:指定从表中删除一个或多个列或约束。 单击工具栏中的“新建查询”选项,在“SQLQuery”窗口中输入如下修改 表的代码,在 product 表中增加一列“动态对比度” :
ALTER TABLE dbo.product ADD 动态对比度 char(7);
单击工具栏中的“新建查询”选项,在“SQLQuery”窗口中输入如下修改 表的代码,将 product 表的“动态对比度”由 char(7)改为 char(8):
ALTER TABLE dbo.product ALTER COLUMN 动态对比度 char(8);
单击工具栏中的“新建查询”选项,在“SQLQuery”窗口中输入如下修改 表的代码,删除 product 表的“动态对比度”列:
ALTER TABLE dbo.product DROP COLUMN 动态对比度;
5、数据库的完整性 数据库的完整性用于确保存储在数据库中数据的正确性和一致性。 1)主键 在执行“新建表”或表“设计”命令打开的对话框中,选择要设为主键的列, 单击工具栏中的“设置主键”按钮,或右击设为主键的列,执行“设置主键”命 令。要选择多个列,按住 Ctrl 键并选择需要的列。也可以在代码中用 PRIMARY KEY 关键字将选定的列设为主键。如图 2-4 中代码所示,在创建 dbo.product 表 时定义主键。 2)唯一约束 在执行“新建表”或表“设计”命令打开的对话框中,单击工具栏中的“管 理索引和键”按钮,或在对话框中右击鼠标,执行“索引/键”命令,添加唯一 键。如图 2-6 所示。

图 2-6 在 SQL Server Management Studio 中定义唯一约束
也可以在如下代码中用 UNIQUE 关键字定义上述唯一约束。
ALTER TABLE dbo.distributor ADD CONSTRAINT uk_addr UNIQUE(店铺地址);
3)外键 在执行“新建表”或表“设计”命令打开的对话框中,选择要设为外键的列, 单击工具栏中的“关系”按钮,或右击设为外键的列,执行“关系”命令可在 SQL Server Management Studio 中定义外键。如图 2-7 所示。
图 2-7 在 SQL Server Management Studio 中定义外键
也可在代码中用 FOREIGN KEY…REFERENCE 关键字将选定的列设为外

相关主题
文本预览
相关文档 最新文档