数据库实验-数据库索引、视图与触发器
数据库管理系统中的索引和视

数据库管理系统中的索引和视数据库管理系统中的索引和视图随着信息时代的到来,数据库的应用越来越广泛,成为企业管理和决策的重要工具。
而数据库管理系统(Database Management System,简称DBMS)就是针对数据库进行管理、组织、存储和查询的软件系统。
在DBMS中,索引和视图是两个重要的概念和技术,本文将重点介绍数据库管理系统中的索引和视图。
一、索引索引是一种数据结构,用于加快数据库中数据的检索速度。
它可以理解为数据库中存储了某一列或多列的值,并按照某种顺序进行排序,以便快速定位相应的数据。
在实际应用中,索引可以大大提高数据库查询的效率,减少系统的响应时间。
常见的索引类型包括B树索引、哈希索引和全文索引等。
B树索引是一种常用的索引类型,它采用了平衡树的结构,可以快速定位到目标数据。
哈希索引则采用散列算法,将索引值映射到哈希表中,以实现快速查找。
全文索引则专门用于对文本类型的数据进行搜索和匹配。
在创建索引时,需要考虑到索引的选择性和开销。
选择性指的是索引中不同值的重复度,选择性越高,索引的效果越好;开销则包括索引的维护和存储成本,开销越低,系统性能越好。
因此,在实际应用中,需要根据具体的业务需求和数据特点来选择适合的索引类型和字段。
二、视图视图是基于表或其他视图的虚拟表,是一种逻辑上的组织方式。
通过视图,可以将若干个表中的数据进行组合、过滤和计算,形成一个新的临时表。
视图可以实现数据的抽象和封装,简化用户的操作,提高数据的安全性。
视图在DBMS中的作用主要有两个方面:数据过滤和数据联接。
通过视图,可以将原始表中的数据进行筛选和过滤,只显示符合特定条件的记录。
这样可以简化用户的查询操作,提高查询效率。
同时,视图也可以实现多个表之间的关联和联接,便于用户进行复杂的数据分析和统计。
在实际应用中,视图还可以用于权限管理和数据保护。
通过定义不同的视图,可以对不同的用户开放不同的数据内容,实现数据的隔离和权限控制。
实验7 索引、存储过程、触发器、关系图等的基本操作

实验7 索引、存储过程、触发器、关系图等的基本操作1实验7 索引、存储过程、触发器、关系图等的基本操作 实验示例1.索引1、创建索引(1)利用向导创建索引启动企业管理器,连接服务器,单击“工具(T)”→“向导(W)…”命令,在弹出的“选择向导”对话框中,展开“数据库”文件夹,如图7-1,双击“创建索引向导”项,打开欢迎对话框,如图7-2,在这个对话框中按先后顺序列出了使用向导创建索引的步骤。
单击“下一步”按钮,展开创建步骤,从图7-3到图7-8。
图7-1 选择索引向导 图7-2 欢迎使用创建索引向导数据库原理与应用实验指导2图7-3 选择数据库和表图7-4 已存在的索引信息图7-5 选择表中的列图7-6 指定索引选项图7-7 正在完成创建索引 图7-8 成功创建索引 (2)在企业管理器中创建索引在企业管理器中创建索引的步骤为:实验7 索引、存储过程、触发器、关系图等的基本操作3 ①在数据库关系图中选择要创建索引的表,右击该表,然后从快捷菜单中选择“索引/键”命令;或为要创建索引的表打开表设计窗口,在表设计窗口上部字段定义区域右击,然后从快捷菜单中选择“索引/键”命令,如图7-9;或在打开表设计窗口时,按工具栏上的属性按钮,都能打开表属性窗口,如图7-10。
图7-9 表设计窗口中的快捷菜单 图7-10 表属性窗口中创建索引/键 ②在图7-10中,选择"新建"命令。
“选定的索引”框显示系统分配给新索引的名称,“索引名”文本框中能修改系统已自动给出的索引名。
③在“列名”下选择要创建索引的列。
可以选择多达16列。
为获得最佳性能,最好只选择一列或两列。
对所选的每一列,可指出索引是按升序还是降序组织列值。
④为索引指定任何其它需要的设置,然后单击“确定”按钮。
当保存表或关系图时,索引即创建在数据库中。
在企业管理器中创建索引还有如下方法:如图7-11,直接在相应表上按鼠标右键→“所有任务”→“管理索引”→出现管理索引对话框,如图7-12,在该对话框上对表索引能进行“新建”、“编辑”、“删除”等一系列管理操作。
创建索引、视图、存储过程及触发器

6.1.2索引的分类
聚簇索引 数据表的物理顺序和索引表的顺序相同,它根据表中的
一列或多列的值排列记录。每一个表只能有一个聚簇 索引,因为一个表的记录只能以一种物理顺序存放, 在通常情况下,使用的都是聚簇索引。 聚簇索引有利于范围搜索,由于聚簇索引的顺序与数据 行存放的物理顺序相同,因此,聚簇索引最适合于范 围搜索,因为相邻的行将被物理地存放在相同或相邻 近的页面上。 创建聚簇索引的几个注意事项: 每张表只能有一个聚簇索引 由于聚簇索引改变表的物理顺序,所以应先建聚簇索
引,后创建非聚簇索引 创建索引所需的空间来自用户数据库,而不是
TEMPDB数据库 主键是聚簇索引的良好候选者
6.1.2索引的分类
索引页
根结点
数据页
6.1.2索引的分类
非聚簇索引
对于非聚簇索引,表的物理顺序与索引顺序不同,即表 的数据并不是按照索引列排序的。索引是有序的,而 表中的数据是无序的。一个表可以同时存在聚簇索引 和非聚簇索引,而且,一个表可以有多个非聚簇索引。 例如对记录网站活动的日志表可以建立一个对日期时 间的聚簇索引和多个对用户名的非聚簇索引。
在一个表的一个或多个列上创建索引时,应考虑以下几点: ① 当在一个表上创建PRIMARY KEY约束或UNIQUE约 束时,SQL Server自动创建唯一性索引。不能在已经创 建PRIMARY KEY约束或UNIQUE约束的列上创建索引。 定义PRIMARY KEY 约束或UNIQUE约束与创建标准索 引相比应是首选的方法。 ② 必须是表的拥有者才能创建索引。 ③ 在一个列上创建索引之前,确定该列是否已经存在 索引。
系部名称 社会科学部 经济管理系
建筑系 基础科学部 传播技系
农林系 机电工程系
数据库应用实验报告视图存储过程触发器等的建立与维护

内蒙古工业大学信息工程学院实验报告课程名称:数据库应用实验名称:视图存储过程触发器等的建立与维护实验类型:验证性□ 综合性□ 设计性□实验室名称:班级:学号:姓名:组别:同组人:成绩:实验日期:预习报告成绩:指导教师审核(签名):年月日预习报告一、实验目的1.学会使用企业管理器建立视图,应用视图插入、删除、修改数据;2.掌握存储过程的使用方法;3.掌握触发器的使用方法。
二、实验内容此实验是综合视图、存储过程、触发器等知识应用的一个综合性实验。
实验要求:1.利用所创建的数据库和数据表,综合应用视图、存储过程、触发器等知识完善数据库;2.掌握应用更新视图数据可以修改基本表数据的方法;3.熟练掌握添加、修改、删除记录的存储过程的定义及调用;4.掌握通过触发器来实现数据的参照完整性。
实验内容要求:利用员工管理数据库YGGL中 3个表:Employees:员工自然信息表、Departments:部门信息表、Salary:员工薪水情况表。
(1)利用YGGL各表建立视图实现各种连接查询。
建立视图view1,查询所有职工的员工编号、姓名、部门名和收入,并按部门名顺序排列。
建立视图view2,查询所有职工的员工编号、姓名和平均工资。
建立视图view3,查询各部门名和该部门的所有职工平均工资。
(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后编写程序,调用这些存储过程。
创建一个为Employees表添加员工记录的存储过程addEmployees。
创建一个存储过程delEmployees删除Employees表中指定员工编号的记录。
(3)对于YGGL数据库,请用触发器实现两个表间的参照完整性。
在表Departments上创建一个触发器Departments _update,当更改部门编号时同步更改Employees表中对应的部门编号。
在表Employees上创建一个触发器Employees _delete,当删除员工记录时同步删除salary表中对应的工资收入记录。
数据库实验报告3

数据库实验报告课程:数据库原理及应用正文:一、实验目的1.理解索引和视图的概念。
2.掌握索引的使用方法。
3.掌握视图的定义和使用方法。
4.理解存储过程的概念,掌握存储过程的使用方法。
5.学习触发器的使用,体会触发器执行的时机,加深对触发器功能和作用的理解。
6.理解SQL Server2000验证用户身份的过程,掌握设置身份验证模式的方法。
7.理解登陆账号的概念,掌握混合认证模式下登陆账号的建立与取消方法。
8.掌握混合认证模式下数据库用户的建立与取消。
9.掌握数据库用户权限的设置方法。
10.理解角色的概念,掌握管理角色技术。
11.学会配制ODBC数据源。
了解使用ODBC来进行数据库应用程序设计,通过ODBC接口访问数据库并对数据库进行操作。
学习在Visual Basic中使用ADO控件访问后台的SQL Server数据库。
二、实验内容1.建立索引。
对JWGL数据库的学生选课表SC建立索引,要求按照Cno升序、Grade降序建立一个名为SC_ind的索引。
USE JWGLIF EXISTS(SELECT name FROM sysindexes WHERE name = 'SC_ind')DROP INDEX SC.SC_ind;GOUSE JWGLCREATE INDEX SC_ind ON SC (Cno,Grade DESC);2.视图的定义和操作,(1)在JWGL数据库里,完成第三章例3.54~例3.61例题中视图的定义和视图上的查询、更新操作。
(2)在Market数据库中,完成第三章习题11中(1)中建立视图的操作,然后在视图上完成第三章习题11(2)的查询操作。
3.在数据库JWGL中,完成第四章例1,例3~7中例题的创建存储过程的操作,并使用EXEC语句调用这些存储过程执行,观察他们的执行结果。
4.在Market数据库中,完成第四章习题5中(1)~(4)创建存储过程的操作。
数据库触发器实验实训报告

一、实验背景随着信息技术的飞速发展,数据库技术在各行各业中的应用越来越广泛。
数据库触发器作为数据库管理系统的重要组成部分,具有强大的功能,能够帮助用户实现复杂的数据操作和业务逻辑。
为了提高学生对数据库触发器的理解与应用能力,我们开展了数据库触发器实验实训。
二、实验目的1. 掌握触发器的概念、作用及分类;2. 熟悉触发器的创建、修改和删除操作;3. 学会使用触发器实现业务规则和数据完整性;4. 提高数据库编程能力,为以后的实际工作打下基础。
三、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 编程语言:Python四、实验内容1. 触发器的基本概念触发器是一种特殊的存储过程,它在特定事件发生时自动执行。
触发器可以分为两大类:DML触发器和DDL触发器。
DML触发器包括INSERT、UPDATE和DELETE触发器,用于在数据操作时执行特定的逻辑;DDL触发器用于在数据定义语言操作时执行特定的逻辑。
2. 触发器的创建以MySQL为例,创建触发器的语法如下:DELIMITER //CREATE TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;//DELIMITER ;例如,创建一个名为before_insert_trigger的触发器,在向bookinfo表插入数据之前执行:DELIMITER //CREATE TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 100 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 100';END IF;END;//DELIMITER ;3. 触发器的修改修改触发器的语法与创建触发器类似,只需要使用ALTER TRIGGER语句:ALTER TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;例如,修改上述触发器,限制书籍价格不超过50元:DELIMITER //ALTER TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 50 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 50';END IF;END;//DELIMITER ;4. 触发器的删除删除触发器的语法如下:DROP TRIGGER IF EXISTS 触发器名称;例如,删除上述触发器:DROP TRIGGER IF EXISTS before_insert_trigger;5. 触发器与存储过程的区别触发器和存储过程都是数据库编程的重要工具,但它们之间存在一些区别:(1)触发器在特定事件发生时自动执行,而存储过程需要手动调用;(2)触发器只能包含一个语句块,而存储过程可以包含多个语句块;(3)触发器不能返回结果集,而存储过程可以返回结果集。
MySQL高级——索引、视图、存储过程和函数、触发器

MySQL⾼级——索引、视图、存储过程和函数、触发器零、前导知识0.1 SQL语⾔的分类SQL语⾔共分为四⼤类:数据查询语⾔DQL,数据操纵语⾔DML,数据定义语⾔DDL,数据控制语⾔DCL。
1. 数据查询语⾔DQL数据查询语⾔DQL基本结构是由SELECT⼦句,FROM⼦句,WHERE⼦句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>2 .数据操纵语⾔DML数据操纵语⾔DML主要有三种形式:1) 插⼊:INSERT2) 更新:UPDATE3) 删除:DELETE3. 数据定义语⾔DDL数据定义语⾔DDL⽤来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE / VIEW / INDEX / SYN / CLUSTER| 表视图索引同义词簇。
DDL操作是隐性提交的!不能rollback4. 数据控制语⾔DCL数据控制语⾔DCL⽤来授予或回收访问数据库的某种特权,并控制数据库操纵事务发⽣的时间及效果,对数据库实⾏监视等。
如:1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某⼀点。
回滚---ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。
其格式为:SQL>ROLLBACK;3) COMMIT [WORK]:提交。
在数据库的插⼊、删除和修改操作时,只有当事务在提交到数据库时才算完成。
在事务提交前,只有操作数据库的这个⼈才能有权看到所做的事情,别⼈只有在最后提交完成后才可以看到。
提交数据有三种类型:显式提交、隐式提交及⾃动提交。
下⾯分别说明这三种类型。
(1) 显式提交⽤COMMIT命令直接完成的提交为显式提交。
其格式为:SQL>COMMIT;(2) 隐式提交⽤SQL命令间接完成的提交为隐式提交。
这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
数据库原理之视图与索引的实验报告

一、实验名称
视图与索引
二实验目的
1.学会使用企业管理器建立视图与索引
2.掌握使用SQL语句建立视图与索引
三实验内容
1.使用企业管理器建立视图索引
2.使用SQL语句建立视图索引
四实验准备
1.复习与本次实验内容相关知识
2.对本次实验中要求自己完成的部分做好准备
五实验步骤
1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图
显示学号、姓名、课程、成绩
用查询分析器建立一个基于学生表、班级表的学生视图
自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示
课程编号、课程名、学分。
查看索引
2.为学生表按班级建立一个非簇集索引FK_U_STUDENTS,操作过程如下
实验心得
总的来说,这次实验因为在上面的几次试验中取得的一些经验,在做实验的时候,也不觉得有多么大的困难了。
相反,感觉有点轻车熟路。
这次实验的目的是学会使用企业管理器建立视图与索引,掌握使用SQL语句建立视图与索引。
在做实验的时候遇到的问题是发现自己建立的视图遇到与表的内容不符的情况,这是由于我对上次表的内容有些模糊,而导致后面做实验出现问题。
在查询了以前建的表后,我又认真做了修改,使得在建立视图的时候能够与表建立紧密的联系,从而不会孤立表的建立。
到了后期,视图的建立也简单多了。
其实,在我做完这个实验之后,明白这次实验都主要是围绕SQL语句,对于语句的熟悉和掌握,有助于我们对数据的应用。
在以后的工作中,也能够发挥到学到知识的作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
石家庄经济学院实验报告学院: 信息工程学院专业: 网络工程信息工程学院计算机实验中心制1.索引的建立和删除操作2.视图的创建、修改、更新和查询操作二实验目的1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。
2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。
三实验内容1.索引的建立和删除操作(1)在S表中,建立按照sno升序的惟一性索引snoIDX。
(2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。
(3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。
(4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。
(5)删除索引cnameIDX。
2.视图的创建、修改、更新和查询操作(1)建立一个关于所有女生信息的视图S_GIRL。
(2)将各系学生人数,平均年龄定义为视图V_NUM_A VG(3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。
(4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。
(5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。
(6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。
(7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。
(8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。
(9)删除视图S_GRADE。
(10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。
(11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询结果。
(12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。
(13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。
(14)通过视图COMPUTE_A VG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实现,请说明原因。
四实验要求1.要求掌握索引的类型,以及创建索引时的注意事项,例如每个表只能创建一个聚集索引,可以创建非聚集索引最多为249个,等等。
2.理解创建视图的目的和意义。
掌握创建视图时需要考虑的原则:只能在当前数据库中创建视图、视图名不得与该用户的表名相同、可在视图上建立视图、定义视图不能包括ORDER BY等关键字、不能建立临时视图,等等。
3.报告中由同学写明具体的操作意图(文字描述)、操作命令(SQL语句)、和执行结果(文字描述+适当截图)。
4.对于重要的运行界面和结果窗口,可以用Alt+PrintScreen来截取当前窗口,并粘贴到实验报告中。
五实验步骤1.索引的建立和删除操作(1)在STU表中,建立按照sno升序的惟一性索引snoIDX。
SQL语句为:create unique index snoIDX on STU(Sno);运行结果如1- 1按所示:命令已成功完成。
图1- 1按学号升序建立的唯一性索引(2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。
SQL语句为:create unique index scIDX on SC(Sno ASC,Cno DESC);运行结果如1- 2按所示:命令已成功完成。
图1- 2按学号升序课程号降序建立索引(3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。
SQL语句为:create nonclustered index birthdayIDX on STU(Sbirthday);执行结果如1- 3对所示:命令已成功完成。
图1- 3对生日建立非聚簇索引(4)在Course表中,建立一个按照课程名升序的聚簇索引cnameIDX。
SQL语句为:create clustered index cnameIDX on Course(Cname);运行结果如1- 4按所示:命令已成功完成。
图1- 4按课程名升序建立聚簇索引(5)删除索引cnameIDX。
SQL语句为:drop index ameIDX;运行结果如1- 5删所示:表中索引cnameIDX不存在。
图1- 5删除cnameIDX索引2.视图的创建、修改、更新和查询操作(1)建立一个关于所有女生信息的视图STU_GIRL。
SQL语句为:create view STU_GIRL(Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddress,Smajor) asselect *from STUwhere Ssex='女'运行结果如1- 6建所示:命令已成功完成。
图1- 6建立女生信息的视图(2)将各系学生人数,平均年龄定义为视图V_NUM_A VGSQL语句为:create view V_NUM_A VG(Sdept,STU_count,A_avg)asselect Sdept,count(Sdept),avg(datediff(year,Sbirthday,getdate()))from STUgroup by Sdept执行结果如1- 7建所示:图1- 7建立视图V_NUM_A VG(3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。
SQL语句为:create view TOTAL_CREDIT(Sno,sum_credit)asselect SC.Sno,sum(Ccredit)from SC,Coursewhere o=ogroup by SC.Sno执行结果如1- 8建所示:图1- 8建立视图TOTAL_CREDIT(4)建立一个所有学生课程成绩的视图STU_GRADE,包括基本学生信息,课程信息和成绩。
SQL语句为:create view STU_GRADEasselect STU.*,Course.*,SC.Sgradefrom SCfull join STU on SC.Sno=STU.Snofull join Course on o=o运行结果如1- 9所所示:图1- 9所有学生课程信息视图(5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。
SQL语句为:create view FAIL_GRADEasselect Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddress,Smajor,count(Cno) as STU_count from STU_GRADEwhere Grade<60group by Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddress having count(Cno)>=2运行结果如1- 10建所示:图1- 10建立视图FAIL_GRADE(6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。
SQL语句为:create view SC_FOURasselect STU.*from STUwhere Sno in(select Snofrom SCgroup by Snohaving count(SC.Sno)>=4)运行结果如1-11所示:图1- 11建立至少选修4门课程的学生信息视图(7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。
SQL语句为:create view STU_GIRL(Sno,SID,Sname,Ssex,Sbirthday,Sdept,Saddress) asselect *from STUwhere Ssex='女' and datepart(year,Sbirthday)<1997运行结果如1- 12修所示:图1- 12修改S_GIRL视图信息(8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。
SQL语句为:select * from FAIL_GRADE where STU_count>2;运行结果如1- 13从所示:图1- 13从视图中查询信息(9)删除视图S_GRADE。
SQL语句为:drop view STU_GRADE执行结果如1- 14视所示:图1- 14视图列表(10)通过视图S_GIRL,将“刘丹”的名字修改为“汪丹”,并查询结果。
SQL语句为:update STU_GIRLset Sname='汪丹'where Sname='刘丹'运行结果如图1-15所示:图1- 15修改信息(11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询结果。
SQL语句为:insert into STU_GIRLvalues('00009','23','刘兰兰','女','1996-8-8','信工','山东',)执行结果如1-16所示:图1- 16向视图中添加信息(12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。
SQL语句为:deletefrom STU_GIRLwhere datepart(year,Sbirthday)=1995执行结果如1- 17删所示:图1- 17删除并查询信息(13)通过视图S_GRADE,将“汪丹”的名字修改为“刘丹”,是否可以实现,请说明原因。
SQL语句为:update STU_Girlset Sname='王丹'where Sname='汪丹'执行结果如1-18所示:图1- 18修改姓名实现原因:该视图为行列子集视图,是从S和C、SC三个基本表中导出,并且仅是去掉了基本表的某些列,但是主属性所在列没有去掉。
此类视图可以更新(14)通过视图COMPUTE_A VG_GRADE,将“00009”学生的平均分改为90分,是否可以实现,请说明原因。
SQL语句为:create view COMPUTE_A VG_GRADE(Sno,Gavg)asselect Sno,avg(Grade)from SCgroup by Snoupdate COMPUTE_A VG_GRADEset Gavg=90where Sno=00009执行结果如1- 19修所示:图1- 19修改平均成绩原因:该视图定义中含有group by子句,由规定可知此视图不能更新六实验总结通过本次实验使我对数据库中索引的建立与删除有了更深层了解,也对数据库中视图的建立、更新和删除也有了更多认识;同时在建立视图中也了解了建立视图的一些注意事项;在更新视图时对于其中的规定有了更多了解,一般的只允许行列子集视图可以被更新。