数据库的完整性约束条件可分为哪几类

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

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

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

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

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

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

USE jxskGOALTER TABLE TADD CONSTRAINT PK_TNO PRIMARY KEY(TNO)GO

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

(3) 关闭对话框;

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

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

USE jxskGOALTER TABLE CADD CONSTRAINT UNIQUE_C UNIQUE(CN)GO

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

USE jxskGOALTER TABLE TEST_TC ADD ID_TC INT IDENTITYGO

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

USE jxskGOALTER TABLE C DROP UNIQUE_CGO

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

USE jxskGOALTER TABLE S WITH CHECKADD CONSTRAINT CHECK_AGE CHECK(AGE>=14 AND AGE<=40)GO

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

USE jxskGOCREATE 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语句,如下图;

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

USE jxskGOALTER TABLE TDROP CONSTRAINT CHECK_TGO

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

USE jxskGOALTER TABLE TC WITH NOCHECKADD CONSTRAINT FK_T_TC FOREIGN KEY(TNO)REFERENCES T(TNO)ON DELETE CASCADEGO

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

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

USE jxskGOCREATE CLUSTERED INDEX IND_TNO ON T(TNO DESC)GO

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

USE jxskGOCREATE UNIQUE INDEX IND_CN ON C(CN)GO

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

25 交互式删除C索引IND_CN

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

26 T-SQL删除索引IND_TN_AGE

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

USE jxskGODROP INDEX T.IND_TN_AGEGO

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

27 交互式创建视图

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

28 交互式创建成绩视图VIEW_SCORETABLE

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

USE jxskGOCREATE VIEW VIEW_CTABLEAS SELECT TN,CN FROM T,C,TCWHERE T.TNO=TC.TNO AND C.CNO=TC.CNOGO

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

30 交互式删除视图字段

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

USE jxskGOALTER VIEW VIEW_CTABLEAS SELECT TN,CN,CT FROM T,C,TCWHERE T.TNO=TC.TNO AND C.CNO=TC.CNOGO

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

33 对视图执行INSERT语句

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

USE jxskGOALTER VIEW VIEW_SAS SELECT SNO,SN,SEX,DEPT FROM SGO

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

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

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

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

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

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

USE jxskGODELETE VIEW_S WHERE SNO='S8'GO

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

36 交互式删除视图

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

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

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

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

数据库基础03:数据库表完整性约束、索引、视图的创建与处理

37 T-SQL删除视图

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

USE jxskGODROP VIEW VIEW_CTABLEGO

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

(0)
上一篇 2023年3月13日 下午12:25
下一篇 2023年3月13日 下午12:32

相关推荐

  • 白露节气赏析杜甫的白露,白露节气古诗李白

    《玉阶怨》 【唐】李白 玉阶生白露,夜久侵罗袜。 却下水晶帘,玲珑望秋月。 译文 玉阶上渐渐生起露水,夜色已深露水打湿了罗袜。 转身回到屋内放下水晶帘子,只见秋月明澈,清辉动人。 …

    2023年5月15日
    0
  • 七夕节巧食图片

    今天是农历七月初七,也是传统节日七夕节。这个节日又称七巧节、乞巧节、七夕祭等,最初是由星宿崇拜衍化而来,后被赋予“牛郎织女”的爱情传说,从而逐渐带有浪漫色彩。 七夕节当天,民间会举…

    生活百科 2022年12月30日
    0
  • 如何看待避孕药

    避孕药是一种常见的避孕方式,它可以有效地避免不想要的怀孕。但是,对于这种药物,我们应该如何看待呢? 首先,避孕药是一种医药产品,必须在医生的指导下使用。在使用避孕药之前,我们应该了…

    生活百科 2023年7月9日
    0
  • 托斯卡纳吊顶效果好吗,托斯卡纳吊顶造型效果怎么样

    伴随着房地产行业的发展壮大,近些年来旧房翻新的人们也不在少数,家居建材行业迎来的新的发展机遇。集成吊顶也在这种行业背景下迎来了可观的利润,成为了一个热门的投资项目。今天就给大家推荐…

    2023年6月22日
    0
  • 你不知道的国家冷门知识文莱,文莱这个国家怎么样

    今天,出海去哪玩系列来到了文莱。很多人知道文莱,是因为演员吴尊。在这之前,文莱会被误认为是蓬莱,是我们国家的某个岛屿。 文莱对我们来讲还是挺神秘的一个国家。他们不大力的搞旅游业,也…

    2023年3月18日
    0
  • 为什么最近猪肉价格一直在涨

    本文目录 1.猪瘟疫情 2.饲料价格上涨 3.季节性因素 猪肉是中国人日常餐桌上必不可少的食品之一,而最近几个月来猪肉价格一直在涨,引起了大家的关注。那么,猪肉价格为什么一直在涨呢…

    生活百科 2023年8月13日
    0
  • 建行生活app必须绑建行卡吗

    随着移动支付的普及和便利化,越来越多的人开始使用手机App进行生活消费。其中,建行生活App是中国建设银行推出的一款综合性生活服务平台,用户可以通过该App进行电影、餐饮、旅游等生…

    生活百科 2023年8月1日
    0
  • 语文学习不用愁,科普说明文,《纳米技术就在我们身边》知识点

    一、词语 纳米、无能为力、拥有、冰箱、功能、蔬菜、材料、钢铁、隐形、健康、细胞、疾病、预防、病灶、需要、深刻 二、多音字 lǜ (效率) chòu (臭味) 率 臭 shuài (…

    2023年6月6日
    0
  • 苹果五福一安充电充多久

    大家都知道,苹果是一家以技术为核心的公司,其产品在市场上备受欢迎,特别是iPhone手机,成为了很多人生活中必不可少的一部分。而对于iPhone用户而言,安充电器的使用也是非常重要…

    生活百科 2023年6月17日
    0
  • 三国杀乐不思蜀和兵粮寸断哪个先判定

    如果问大家,在三国杀移动版里面,最强的控制锦囊牌到底是哪一张,我相信大部分人的答案会是它: 乐不思蜀!   为什么呢?我们一起来看看乐不思蜀的描述:将【乐不思蜀】横置于目…

    2023年2月14日
    0

发表评论

登录后才能评论