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

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


  系列文章中示例数据来源于《 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


相关文章
|
1月前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
58 3
|
1月前
|
数据库 索引
深入理解数据库索引技术:回表与索引下推详解
【10月更文挑战第23天】 在数据库查询性能优化中,索引的使用是提升查询效率的关键。然而,并非所有的索引都能直接加速查询。本文将深入探讨两个重要的数据库索引技术:回表和索引下推,解释它们的概念、工作原理以及对性能的影响。
80 3
|
23天前
|
存储 缓存 数据库
数据库索引采用B+树不采用B树的原因?
B+树优化了数据存储和查询效率,数据仅存于叶子节点,便于区间查询和遍历,磁盘读写成本低,查询效率稳定,特别适合数据库索引及范围查询。
37 6
|
1月前
|
存储 缓存 数据库
数据库索引采用B+树不采用B树的原因
B+树相较于B树,在数据存储、磁盘读写、查询效率及范围查询方面更具优势。数据仅存于叶子节点,便于高效遍历和区间查询;内部节点不含数据,提高缓存命中率;查询路径固定,效率稳定;特别适合数据库索引使用。
29 1
|
1月前
|
数据库 索引
数据库索引
数据库索引 1、索引:建立在表一列或多列的辅助对象,目的是加快访问表的数据。 2、索引的优点: (1)、创建唯一性索引,可以确保数据的唯一性; (2)、大大加快数据检索速度; (3)、加速表与表之间的连接; (4)、在查询过程中,使用优化隐藏器,提高系统性能。 3、索引的缺点: (1)、创建和维护索引需要耗费时间,随数据量增加而增加; (2)、索引占用物理空间; (3)、对表的数据进行增删改时,索引需要动态维护,降低了数据的维护速度。
37 2
|
2月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
75 3
Mysql(4)—数据库索引
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
298 1
|
1月前
|
存储 关系型数据库 数据库
Postgres数据库BRIN索引介绍
BRIN索引是PostgreSQL提供的一种高效、轻量级的索引类型,特别适用于大规模、顺序数据的范围查询。通过存储数据块的摘要信息,BRIN索引在降低存储和维护成本的同时,提供了良好的查询性能。然而,其适用场景有限,不适合随机数据分布或频繁更新的场景。在选择索引类型时,需根据数据特性和查询需求进行权衡。希望本文对你理解和使用PostgreSQL的BRIN索引有所帮助。
55 0
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
125 0
|
2月前
|
关系型数据库 MySQL 数据库
深入浅出MySQL索引优化:提升数据库性能的关键
在这个数据驱动的时代,数据库性能的优劣直接关系到应用的响应速度和用户体验。MySQL作为广泛使用的数据库之一,其索引优化是提升查询性能的关键。本文将带你一探MySQL索引的内部机制,分析索引的类型及其适用场景,并通过实际案例演示如何诊断和优化索引,以实现数据库性能的飞跃。