数据库基础(三):完整性约束、索引、视图

简介: 数据库基础(三):完整性约束、索引、视图


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

USE jxsk
GO
ALTER TABLE C DROP UNIQUE_C
GO

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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;

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

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

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

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表设计器中,选择“索引/键”选项,打开“索引/键”对话框;

(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,右击“视图”,在打开的快捷菜单中选择“新建视图”选项,如图所示,即可打开一个“添加表”对话框;

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

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

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

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

28 交互式创建成绩视图VIEW_SCORETABLE

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

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

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

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

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

(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即是刚创建的视图;

30 交互式删除视图字段

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

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

(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的数据窗口,显示出修改后的视图数据,如图所示;

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

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

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

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字段值自动取空值,这是主键所不允许的,故执行失败。

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中;分别关闭视图和数据库表的窗口;

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的学生记录也已经不存在。分别关闭视图和数据库表的窗口;

36 交互式删除视图

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

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

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

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

37 T-SQL删除视图

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

USE jxsk
GO
DROP VIEW VIEW_CTABLE
GO

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

欢迎关注公众号:疯狂学习GIS


相关文章
|
21天前
|
数据库 索引
数据库索引的作用和优点缺点
数据库索引的作用和优点缺点
15 1
|
1月前
|
存储 搜索推荐 关系型数据库
深度探讨数据库索引的数据结构及优化策略
深度探讨数据库索引的数据结构及优化策略
|
1月前
|
关系型数据库 MySQL 程序员
【MySQL 数据库】8、视图
【MySQL 数据库】8、视图
40 0
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
105 1
|
1月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
194 0
|
26天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
26天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
1月前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
58 0
|
3天前
|
数据库 UED 索引
构建高效的数据库索引:提升查询性能的关键技巧
本文将深入探讨数据库索引的设计和优化,介绍如何构建高效的数据库索引以提升查询性能。通过学习本文,读者将掌握数据库索引的原理、常见类型以及优化策略,从而在实际应用中提升数据库查询效率。
|
26天前
|
数据库
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
10 0
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版