本文介绍基于Microsoft SQL Server软件,实现数据库表完整性约束、索引与视图创建等操作的方法。

  数据库系列文章请见专栏:数据库基础_疯狂学习GIS的博客-CSDN博客。

  系列文章中示例数据来源于《SQL Server实验指导(2005版)》一书。尊重版权,因此遗憾不能将相关示例数据一并提供给大家;但是依据本系列文章的思想与对操作步骤、代码的详细解释,大家用自己手头的数据,可以将相关操作与分析过程加以完整重现。

1 交互式为数据库表S创建PRIMARY KEY约束

(1) 启动Microsoft SQL Server 2008 R2软件;

(2) 在“对象资源管理器”窗格中,在“数据库”处右键,在弹出的菜单中选择“附加”选项;

(3) 选择需要加以附加的jxsk数据库物理文件,选择定位文件夹“G:\sql\chutianjia sql”并选择对应数据库jxsk的物理文件并选择“确定”按钮,再次选择“确定”即可;

(4) 选择“数据库”→“jxsk”→“表”,右击并在弹出的菜单中选择“设计”选项,如下图;

数据库基础创建索引(数据库表完整性约束)(1)

(5) 选择SNO列,右击并选择“设置主键”,如下图;

数据库基础创建索引(数据库表完整性约束)(2)

(6) 保存修改,关闭表设计器;

2 交互式创建数据库表TEST_SC,创建PRIMARY KEY约束

(1) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”处右键,在弹出的菜单中选择“新建表”选项,输入TEST_SC各列的设置,如下图;

数据库基础创建索引(数据库表完整性约束)(3)

(2) 同时选择SNO和CNO列, 右击并选择“设置主键”,在SNO列和CNO列的行选择器中各显示一把钥匙,表示SNO与CNO是关系TEST_SC的主键。此时SNO和CNO列中“允许NULL值”列的对勾消失,表示SNO、CNO都不能取空值,如下图;

数据库基础创建索引(数据库表完整性约束)(4)

(3) 保存修改,输入表名TEST_SC,关闭表设计器,重命名后如下图;

数据库基础创建索引(数据库表完整性约束)(5)

3 T-SQL创建数据库表T的PRIMARY KEY约束

(1) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.T”处右键,在弹出的菜单中选择“设计”选项,如下图;

数据库基础创建索引(数据库表完整性约束)(6)

(2) 将TNO列“允许NULL值”值设置为非空,保存修改,如下图;关闭表设计器;

数据库基础创建索引(数据库表完整性约束)(7)

(3) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER TABLE T ADD CONSTRAINT PK_TNO PRIMARY KEY(TNO) GO

(4) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(8)

(5) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.T”处右键,在弹出的菜单中选择“刷新”选项,选择“列”与“索引”,可见其所示内容中已存在通过上述方法新建立的聚集类型索引PK_TNO,如下图;

数据库基础创建索引(数据库表完整性约束)(9)

4 T-SQL创建数据库表TEST_C,以列约束形式创建PRIMARY KEY约束

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO CREATE TABLE TEST_C( CNO CHAR(2)CONSTRAINT PK_TEST_C PRIMARY KEY, CN CHAR(10), CT TINYINT) GO

(2) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(10)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.TEST_C”处右键,在弹出的菜单中选择“刷新”选项,选择“列”与“索引”,可见其所示内容中已存在通过上述方法新建立的聚集类型索引PK_ TEST_C,如下图;

数据库基础创建索引(数据库表完整性约束)(11)

5 T-SQL创建数据库表TEST_TC,以表约束形式创建PRIMARY KEY约束

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO CREATE TABLE TEST_TC( TNO CHAR(2), CNO CHAR(2), CONSTRAINT PK_TEST_TC PRIMARY KEY(TNO,CNO)) GO

(2) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(12)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.TEST_TC”处右键,在弹出的菜单中选择“刷新”选项,选择“列”与“索引”,可见其所示内容中已存在通过上述方法新建立的聚集类型索引PK_ TEST_TC,如下图;

数据库基础创建索引(数据库表完整性约束)(13)

6 交互式向数据库表TEST_TC中CNO与TNO列添加UNIQUE约束

(1) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.TC”处右键,在弹出的菜单中选择“设计”选项;

(2) 单击工具栏“管理索引和键”按钮,选择“添加”,按要求设置名称;单击“列”右端省略号按钮,单击第二行第一列下拉按钮,选择CNO列,单击“确定”按钮;在“类型”处选择“唯一值”,如下四幅图;

数据库基础创建索引(数据库表完整性约束)(14)

数据库基础创建索引(数据库表完整性约束)(15)

数据库基础创建索引(数据库表完整性约束)(16)

数据库基础创建索引(数据库表完整性约束)(17)

(3) 关闭对话框;

7 T-SQL为数据库表C中CN列创建UNIQUE约束

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER TABLE C ADD CONSTRAINT UNIQUE_C UNIQUE(CN) GO

(2) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(18)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo. C”处右键,在弹出的菜单中选择“刷新”选项,选择“列”与“索引”,可见其所示内容中已存在通过上述方法新建立的聚集类型索引PK_ TEST_C与非聚集类型索引UNIQUE_C,如下图;

数据库基础创建索引(数据库表完整性约束)(19)

8 交互式为数据库表TEST_SC中添加新列ID_SC,设置列属性IDENTITY

(1) 在“对象资源管理器”窗格中,选择“数据库”→“jxsk”→“表”,右击“dbo.TEST_SC”,在弹出的菜单中选择“设计”;

(2) 插入新空行,输入列名ID_SC,数据类型为int,且不许为空;选中此列,在“标识规范”左侧的加号图标处单击,在打开的列表中选择“是”,如以下两幅图;

数据库基础创建索引(数据库表完整性约束)(20)

数据库基础创建索引(数据库表完整性约束)(21)

(3) 单击工具栏中的保存按钮,并将窗口关闭;

9 T-SQL向数据库表TEST_TC中添加列ID_TC,设置列属性IDENTITY

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER TABLE TEST_TC ADD ID_TC INT IDENTITY GO

(2) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(22)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo. TEST_TC”处右键,在弹出的菜单中选择“设计”选项,查看属性窗口中“标识列”的属性设置,如下图;

数据库基础创建索引(数据库表完整性约束)(23)

10 交互式删除数据库表TEST_SC的主键PK_TEST_SC并取消ID_SC列标识属性

(1) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo. TEST_TC”处右键,在弹出的菜单中选择“设计”选项,如下图;

数据库基础创建索引(数据库表完整性约束)(24)

(2) 单击“标识规范”左侧加号图标,在“(是标识)”右侧下拉按钮打开的下拉列表中选择“否”;

(3) 选中SNO与CNO列,右击选择“删除主键”,如下图;关闭表设计器;

数据库基础创建索引(数据库表完整性约束)(25)

11 T-SQL删除数据库表C中列CN的UNIQUE约束

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句,如下图:

USE jxsk GO ALTER TABLE C DROP UNIQUE_C GO

(2) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(26)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.C”处右键,在弹出的菜单中选择“刷新”选项,选择“列”与“索引”,可见其所示内容中已不存在通过上述方法新建立的非聚集类型索引UNIQUE_C,键中也不含该索引,如下图;

数据库基础创建索引(数据库表完整性约束)(27)

12 交互式为数据库表T创建DEFAULT和CHECK约束

(1) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.C”处右键,在弹出的菜单中选择“设计”选项;

(2) 单击选择SEX列,然后在窗口下面的“列属性”框中“默认值或绑定”输入框中,输入‘男’,在说明中输入DE_T_SEX,如下图;

数据库基础创建索引(数据库表完整性约束)(28)

(3) 单击工具栏中的“管理CHECK约束”按钮,打开表T的“CHECK约束”对话框;单击“添加”按钮,查看窗口内容变化。对窗口中的各项进行如下设置:在“(名称)”输入框中,把默认名改为CHECK_T,将“在创建或重新启用时检查现有数据”选项设置为“否”,单击“表达式”右端的按钮,打开“CHECK约束表达式”对话框,输入以下表达式,如以下图:

数据库基础创建索引(数据库表完整性约束)(29)

数据库基础创建索引(数据库表完整性约束)(30)

(PROF='教授' AND COMM=4000)OR (PROF='副教授' AND COMM=2000)OR (PROF='讲师' AND COMM=1500)OR (PROF='助教' AND COMM=1000)

(4) 单击“确定”→“确定”,如下图;关闭对话框与设计器;

数据库基础创建索引(数据库表完整性约束)(31)

13 T-SQL为数据库表S创建CHECK约束

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER TABLE S WITH CHECK ADD CONSTRAINT CHECK_AGE CHECK(AGE>=14 AND AGE<=40) GO

(2) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(32)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.S”处右键,在弹出的菜单中选择“刷新”选项,选择“约束”,可见其所示内容中已存在通过上述方法新建立约束CHECK_AGE,如下图;

数据库基础创建索引(数据库表完整性约束)(33)

14 T-SQL创建数据库表TEST_S并包含DEFAULT和CHECK约束

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO CREATE TABLE TEST_S( SNO CHAR(2) NOT NULL, SN CHAR(8) NOT NULL, SEX CHAR(2) NULL CONSTRAINT DEFAULT_SEX DEFAULT '男' CONSTRAINT CHECK_SEX CHECK(SEX='男' OR SEX='女'), AGE TINYINT NULL CONSTRAINT DEFAULT_AGE DEFAULT 18, CONSTRAINT CHECK_S_AGE CHECK(AGE>=14 AND AGE<=40)) GO

(2) 将jxsk设置为当前数据库,单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(34)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.TEST_S”处右键,在弹出的菜单中选择“刷新”选项,查看“列”和“约束”,如下图;

数据库基础创建索引(数据库表完整性约束)(35)

15 T-SQL删除数据库表T中PROF和COMM间CHECK约束

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER TABLE T DROP CONSTRAINT CHECK_T GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(36)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.T”处右键,在弹出的菜单中选择“刷新”选项,选择“约束”可见其所示内容中不已存在通过上述方法新建立的CHECK约束,如下图;

数据库基础创建索引(数据库表完整性约束)(37)

16 交互式删除数据库表TEST_S中列SEX的DEFAULT约束列和列AGE的CHECK约束

(1) 在“对象资源管理器”窗格中,选择“数据库”→“jxsk”→“表”并右击表TEXT_S,在弹出的菜单中选择“设计”;

(2) 在表格下方,清除“默认值”中的‘男’,如下图;打开CHECK约束对话框,在“选定的CHECK约束:”框中选择CHECK_S_AGE约束;

数据库基础创建索引(数据库表完整性约束)(38)

数据库基础创建索引(数据库表完整性约束)(39)

数据库基础创建索引(数据库表完整性约束)(40)

(3) 单击“删除”按钮,可以看到CHECK_S_AGE约束被删除,如上方图;

(4) 关闭表TEST_S“CHECK约束”对话框与表设计器;

17 交互式创建表S与SC间参照关系

(1) 在“对象资源管理器”窗格中,选择“数据库”→“jxsk”→“表”并右击表SC,在弹出的菜单中选择“设计”;

(2) 单击 “关系”按钮,打开“外键关系”窗口,单击“添加”按钮,查看到关系名是系统给出的默认名:FK_SC_SC。单击“表和列规范”右端的按钮,打开“表和列”对话框。在“主键表”中,选定主表S,选定字段SNO。在“外键表”中,选定子表SC,选定字段SNO。单击“确定”按钮关闭“表和列”对话框。将“外键关系”对话框中的“在创建或重新启用时检查现有数据”一项设置为“否”。单击“INSERT和UPDATE规范”左侧的田按钮,将“更新规则”一项设置为“级联”,如下图;

数据库基础创建索引(数据库表完整性约束)(41)

数据库基础创建索引(数据库表完整性约束)(42)

(3) 关闭“外键关系”对话框,关闭表设计器,保存对表SC进行的上述修改。;

(4) 打开数据表S与SC,对照其中学号为S1的记录;把数据库表S中的学号S1改为S9,数据库表S中的内容次序发生改变,如图所示。单击SC表窗口,使其成为当前表,查看到SC表中2个学号值是S1的都变为S9,且表SC中的记录次序也发生了改变,如下图;

数据库基础创建索引(数据库表完整性约束)(43)

数据库基础创建索引(数据库表完整性约束)(44)

数据库基础创建索引(数据库表完整性约束)(45)

18 T-SQL创建数据库表T与TC间参照关系

(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER TABLE TC WITH NOCHECK ADD CONSTRAINT FK_T_TC FOREIGN KEY(TNO)REFERENCES T(TNO) ON DELETE CASCADE GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句,如下图;

数据库基础创建索引(数据库表完整性约束)(46)

(3) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.TC”处右键,在弹出的菜单中选择“刷新”选项,选择“键”可见其所示内容中已存在通过上述方法新建立的FK_T_TC约束,如下图;

数据库基础创建索引(数据库表完整性约束)(47)

(4) 打开数据库表T与TC,使用“删除”命令把数据库表T学号值为T1的记录删除;单击数据库表TC使其成为当前窗口,单击工具栏中的运行置钮,查看到TC表中2个学号值是T1的记录都不存在了,如下图;

数据库基础创建索引(数据库表完整性约束)(48)

数据库基础创建索引(数据库表完整性约束)(49)

19 创建数据库jxsk中5个表间关联关系图

(1) 在“对象资源管理器”窗格中,选择“数据库”→“jxsk”,右击数据关系图,打开2个窗口,一个是创建关系图的窗口;一个是“添加表”窗口,其中列出了jxsk中的所有用户表,如下图;

数据库基础创建索引(数据库表完整性约束)(50)

(2) 选择表C,单击“添加”按钮,表C即加入关系图窗口中。重复此过程,把表S、SC、T、TC都添加到关系图窗口中,添加完成后还可调整5个表的相对位置。添加到关系图中的数据库表如图所示;

数据库基础创建索引(数据库表完整性约束)(51)

数据库基础创建索引(数据库表完整性约束)(52)

(3) 在关系图窗口中,可以看到表T与TC之间已存在一条关系线;单击并按住表C中的CNO字段,拖动至表TC中的CNO字段,松开鼠标左键,同时打开“外键关系”和“表和列”两个窗口,观察窗口中的各项值。单击“表和列”窗口的“确定”按钮退出该窗口,然后在“外键关系”窗口中,将“在创建或重新启用时检查现有数据”一项设置为“否”,单击“INSERT和UPDATE规范”左侧的田按钮,将“更新规则”和“删除规则”两项均设置为“级联”,单击确定;重复步骤,形成五个表之间的关系关联图;

数据库基础创建索引(数据库表完整性约束)(53)

(4) 点击保存按钮,输入关系图名称;关闭窗口;

(5) 在“对象资源管理器”窗格中,选择“数据库”→“jxsk”,选择数据关系图,可显示关系图;

20 交互式删除表C与表TC间引用关系

(1) 在“对象资源管理器”窗格中,在“数据库”→“jxsk”→“表”→“dbo.C”处右键,在弹出的菜单中选择“设计”选项;

(2) 在“选定的关系”框中,选择名为FK_TC_C的关系,单击“删除”按钮,此关系即被删除。关闭外键关系窗口,关闭表设计器窗口;

数据库基础创建索引(数据库表完整性约束)(54)

21 交互式为表SC创建PRIMARY KEY,在此主键自动创建聚簇索引

(1) 用表设计器打开表SC;打开“索引/键”对话框。在SC表设计器中,选择“索引/键”选项,打开“索引/键”对话框,如下图示;此时窗口中内容为空,说明表SC中没有创建任何索引。单击“关闭”按钮,返回表设计器;

数据库基础创建索引(数据库表完整性约束)(55)

数据库基础创建索引(数据库表完整性约束)(56)

(2) 同时选中列SNO和列CNO,单击工具栏中的按钮,即在SNO和CNO上创建了主键,如图所示。

数据库基础创建索引(数据库表完整性约束)(57)

(3) 在SC表设计器中,右击,选择“索引/键”选项,打开“索引/键”对话框,查看列表中的信息:索引“列”是SNO(ASC)和CNO(ASC),当前的索引“名称”为PK_SC_1,“创建为聚集的”为“是”。此索引即是创建主键时,系统自动生成的聚簇索引。

(4) 关闭表设计器窗口;

22 T-SQL创建数据库表T在TNO列上按降序创建聚簇索引IND_TNO

(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO CREATE CLUSTERED INDEX IND_TNO ON T(TNO DESC) GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

(3) 在表设计器中,选择“索引/键”选项,打开“索引/键”对话框,可看到IND_TNO;

数据库基础创建索引(数据库表完整性约束)(58)

23 交互式为表T在TN列上按升序和在AGE列上按降序创建非聚簇索引IND_TN_AGE

(1) 用表设计器打开数据库 jxsk 中的数据库表T。打卡创建“索引/键”对话框。在T表设计器中,右击,选择“索引/键”选项,打开“索引/键”对话框,如图所示。

数据库基础创建索引(数据库表完整性约束)(59)

(2) 单击“添加”扭钮,观察“索引/键”对话框中各项的变化。在右侧列表中,单击“列”行中的一个单元格,再单击该行右端的按钮,打开“索引列”对话框,按照图所示进行设置。设置完成后单击“确定”按钮返回“索引/键”对话框。设置索引名称并保存;

数据库基础创建索引(数据库表完整性约束)(60)

数据库基础创建索引(数据库表完整性约束)(61)

24 T-SQL创建数据库表C在CN列上按升序创建聚簇索引IND_CN

(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO CREATE UNIQUE INDEX IND_CN ON C(CN) GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

25 交互式删除C索引IND_CN

(1) 用表设计器打开表SC;打开“索引/键”对话框。在SC表设计器中,选择“索引/键”选项,打开“索引/键”对话框;

数据库基础创建索引(数据库表完整性约束)(62)

数据库基础创建索引(数据库表完整性约束)(63)

(2) 单击删除按钮,保存修改并关闭窗口;

26 T-SQL删除索引IND_TN_AGE

(1) 点击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO DROP INDEX T.IND_TN_AGE GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

27 交互式创建视图

(1) 在“对象资源管理器”中,展开数据库jxsk,右击“视图”,在打开的快捷菜单中选择“新建视图”选项,如图所示,即可打开一个“添加表”对话框;

数据库基础创建索引(数据库表完整性约束)(64)

(2) 添加基本表。在“添加表”对话框中选择表S,单击“添加”按钮,如图所示,选择“关闭”按钮,关闭“添加表”对话框,返回创建视图窗口,可看到创建视图窗口中增加了表S,如图所示。

数据库基础创建索引(数据库表完整性约束)(65)

(3) 在表S中,分别选中字段SNO、SN、SEX、DEPT左侧的复选框,表示选中这些字段,将它们加入视图中,观察下面窗格中的变化,如图所示。

数据库基础创建索引(数据库表完整性约束)(66)

数据库基础创建索引(数据库表完整性约束)(67)

(4) 单击视图设计器工具栏中的1按钮,执行视图定义。窗口下面的表格数据即为视图的内容。单击工具栏中的口按钮,打开对话框,输入视图名称View_S,如图所示。单击“确定”按钮即可保存;

数据库基础创建索引(数据库表完整性约束)(68)

(5) 关闭“创建视图窗口”,在“对象资源管理器”中,单击数据库jxsk中的“视图”节点,右窗口“摘要”中的View_S即是刚创建的视图,另一个为系统视图文件夹,如下图所示;

数据库基础创建索引(数据库表完整性约束)(69)

28 交互式创建成绩视图VIEW_SCORETABLE

(1) 在“对象资源管理器”中,展开数据库jxsk,右击“视图”,在打开的快捷菜单中选择“新建视图”选项,打开“添加表”窗口;

(2) 在“添加表”窗口中,选择表C和表SC,单击“添加”令,可看到创建视图窗口上部分窗格中增加了表C和表SC,并查看下面SQL窗格中语句的变化。以此类推,在“视图”选项卡中添加视图View_S。单击“关闭”按钮,关闭“添加表”窗口,返回创建视图窗口;

数据库基础创建索引(数据库表完整性约束)(70)

(3) 在视图View_S中,选中字段SN左侧的复选框,表示选中字段SN。以此类推,在表C中选择CN,在表SC中选择SCORE,如图所示; 选中视图View_S中的SNO并将其拖曳到表SC中的SNO,查看下面SQL窗格中语句的变化;同样选中表SC中的CNO并拖曳到表C中的CNO,查看下面SQL窗格中语句的变化;

数据库基础创建索引(数据库表完整性约束)(71)

(4) 单击视图设计器工具栏中按钮,执行视图定义。窗口下面的表格数据即是视图的内容,如图所示;

数据库基础创建索引(数据库表完整性约束)(72)

数据库基础创建索引(数据库表完整性约束)(73)

数据库基础创建索引(数据库表完整性约束)(74)

(5) 单击工具栏中的口按钮,打开对话框,输入视图名称View_SCORETABLE,单击“确定”按钮;

数据库基础创建索引(数据库表完整性约束)(75)

(6) 关闭“创建视图窗口”。查看数据库中的视图信息。在“对象资源管理器”中,展开数据库jxsk中的“视图”节点, View_SCORETABLE即是刚创建的视图,如上方图所示;

29 T-SQL创建课程表视图VIEW_CTABLE

(1) 击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO CREATE VIEW VIEW_CTABLE AS SELECT TN,CN FROM T,C,TC WHERE T.TNO=TC.TNO AND C.CNO=TC.CNO GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句;

(3) 在“对象资源管理器”中,展开数据库jxsk中的“视图”节点, View_SCORETABLE即是刚创建的视图;

数据库基础创建索引(数据库表完整性约束)(76)

30 交互式删除视图字段

(1) 在“对象资源管理器”中,展开数据库jxsk中的“视图”节点。右击View_S,在快捷菜单中选择“修改”选项,打开设计视图窗口,如图所示。在此窗口中可查看窗口中各部分内容的关系;

数据库基础创建索引(数据库表完整性约束)(77)

(2) 在数据库表S中,取消选中SNO左端的复选框,即取消此项选择,然后查看窗口下部分列表和SQL语句的变化;

数据库基础创建索引(数据库表完整性约束)(78)

(3) 执行操作。单击视图设计器工具栏中的事按钮,执行对视图定义进行改变的操作。窗口下部分表格中显示的是删除SNO后视图中的数据,如图所示。保存后关闭视图设计器窗口。

31 T-SQL为视图ViewCTABLE增加一个课时字段Cttinyint

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER VIEW VIEW_CTABLE AS SELECT TN,CN,CT FROM T,C,TC WHERE T.TNO=TC.TNO AND C.CNO=TC.CNO GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

(3) 在“对象资源管理器”中,展开数据库jxsk中的“视图”节点,在右窗格的“摘要”中,右击视图View_CTABLE,在打开的快捷菜单中选择“打开视图”项,打开视图ViewCTABLE的数据窗口,显示出修改后的视图数据,如图所示;

数据库基础创建索引(数据库表完整性约束)(79)

32 交互式修改视图数据以实现修改数据库表数据

(1) 分别打开视图View S和数据库表S的内容,如图所示,可见两个表中“李奇”记录的各字段数据相同;

数据库基础创建索引(数据库表完整性约束)(80)

数据库基础创建索引(数据库表完整性约束)(81)

(2) 在视图View_S中,把“李奇”的系名DEPT“外语”改为“计算机”。单击薄按钮,执行进行这个改变的操作,如图所示。单击表S窗口,使其成为当前窗口,查看到“李奇”的DEPT字段值仍然是“外语”,单击按钮霸,再查看“李奇”的DEPT字段值与当前的视图View_S中的改变一致,如下图所示。

数据库基础创建索引(数据库表完整性约束)(82)

数据库基础创建索引(数据库表完整性约束)(83)

数据库基础创建索引(数据库表完整性约束)(84)

33 对视图执行INSERT语句

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO INSERT INTO VIEW_S VALUES('S8','古明','男','自动化') GO

(2) 单击 “工具栏”中的“执行(x)”按钮,显示执行失败。这是因为,视图View_S来源于基本表S,但却不包含基本表S的主键SNO,主键的性质是不许取空值。当向视图中插入一行新数据时,因没有SNO字段值,所以,从视图到基本表映射插入此行数据时,表S中的SNO字段值自动取空值,这是主键所不允许的,故执行失败。

数据库基础创建索引(数据库表完整性约束)(85)

34 修改视图定义后进行插入操作

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO ALTER VIEW VIEW_S AS SELECT SNO,SN,SEX,DEPT FROM S GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

(3) 在“对象资源管理器”中,分别打开视图View_S和数据库表S的数据窗口,两个窗口中的数据的对应行列完全相同;

(4) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO INSERT INTO VIEW_S VALUES('S8','古明','男','自动化') GO

(5) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

(6) 打开视图View_S和数据库表S的数据窗口,如图所示,“古明”的记录已插入到视图中。再单击表S窗口中的按钮,更新当前表内容,如图所示,“古明”的记录也已插入数据库表S中;分别关闭视图和数据库表的窗口;

数据库基础创建索引(数据库表完整性约束)(86)

数据库基础创建索引(数据库表完整性约束)(87)

数据库基础创建索引(数据库表完整性约束)(88)

35 T-SQL对视图进行DELETE操作并查看数据变化

(1) 在“对象资源管理器”中,分别打开视图View_S和数据库表S的数据窗口,两个窗口中的内容是一致的,都存在学号是S8的学生记录;

(2) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO DELETE VIEW_S WHERE SNO='S8' GO

(3) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

(4) 单击View_S视图窗口选项卡,然后单击按钮,更新当前视图内容,如图所示,学号是S8的学生记录已经不存在。再单击表S窗口选项卡和按钮,更新当前表内容,如图所示,学号是S8的学生记录也已经不存在。分别关闭视图和数据库表的窗口;

数据库基础创建索引(数据库表完整性约束)(89)

36 交互式删除视图

(1) 在“对象资源管理器”中,单击数据库jxsk中的视图节点,右窗格“摘要”中的内容即为数据库jxsk中的视图内容。

(2) 在右窗格中,右击视图View_S,在打开的快捷菜单中选择“删除”选项,打开“删除对象”对话框。

(3) 查看“要删除的对象”列表,单击要删除的视图View_S左侧的复选框,单击“确定”按钮,视图View_S即被删除。

数据库基础创建索引(数据库表完整性约束)(90)

(4) 在“对象资源管理器”中,刷新数据库jxsk中的“视图”节点,可看到视图View_S已经不存在;

数据库基础创建索引(数据库表完整性约束)(91)

37 T-SQL删除视图

(1) 单击屏幕上方 “工具栏”菜单中的“新建查询”按钮,打开“查询编辑器”窗口,并在“查询编辑器”窗口中输入以下T-SQL语句:

USE jxsk GO DROP VIEW VIEW_CTABLE GO

(2) 单击 “工具栏”中的“执行(x)”按钮,即可执行上述T-SQL语句。

,