数据库实验五 索引和视图

合集下载

中南大学数据库题库05索引与视图

中南大学数据库题库05索引与视图

不允许记录中出现重复值和NULL值的索引是( )。

A 主键索引、普通索引B 主键索引、候选索引和普通索引C 主键索引和候选索引D 主键索引、候选索引和唯一索引参考答案C有表student(学号, 姓名, 性别, 身份证号, 出生日期, 所在系号),在此表上使用()语句能创建建视图vst。

A CREATE VIEW vst AS SELECT * FROM studentB CREATE VIEW vst ON SELECT * FROM studentC CREATE VIEW AS SELECT * FROM studentD CREATE TABLE vst AS SELECT * FROM student参考答案ASQL SERVER中,可为数据表创建()的三种类型的索引。

A 聚集索引、稀疏索引、辅索引B 聚集索引、唯一性索引、主键索引C 聚集索引、类索引、主键索引D 非聚集索引、候选索引、辅索引参考答案B在数据库物理设计阶段,需要考虑为关系表建立合适的索引。

关于建立索引的描述,有下列说法:Ⅰ.对于经常在其上需要执行查询操作并且数据量大的表,可以考虑建立索引Ⅱ.对于经常在其上需要执行插入、删除和更新操作的表,可以考虑建立索引Ⅲ.对于经常出现在WHERE子句中的属性,可以考虑建立索引Ⅳ.对于经常出现在ORDER BY子句、GROUP BY子句中的属性,应尽量避免建立索引上述说法正确的是A Ⅰ、Ⅱ和ⅢB Ⅰ、Ⅱ和ⅣC Ⅰ和ⅢD Ⅱ和Ⅳ参考答案C下列哪些属性不适合建立索引?A 经常出现在GROUP BY字句中的属性B 经常参与连接操作的属性C 经常出现在WHERE字句中的属性D 经常需要进行更新操作的属性参考答案D有会员卡表TableCards(CardsID,StartDate,Score),CardID表示卡标识,Scord为卡积分,有视图:CREATE VIEW vCardASSELECT * FROM TableCardsWHERE Score BETWEEN 200 AND 500假设(´C0001´,´2008/5/6´,220)是TableCards表中的一个元组,下述说法正确的是( )。

数据库技术索引与视图

数据库技术索引与视图

实验报告
课程名称:数据库技术项目名称:索引和视图
姓名:专业:班级:学号同组成员
1注:1、实验预习部分包括实验环境准备和实验所需知识点准备。

2、若是单人单组实验,同组成员填无。

5.分别使用企业管理器和系统存储过程sp_helpindex查看grade
6.使用企业管理器的“向导”工具对grade表创建一个聚集索引和唯一索引。

10.在studentsdb数据库中,使用Transact-SQL
12.分别使用企业管理器和Transact-SQL语句修改视图每个学生所学课程数目。

15.利用视图v_stu_i为student_info表添加一行数据:学号为
16.利用视图v_stu_i删除学号为
实验报告成绩(百分制)__________ 实验指导教师签字:__________
3注:1、实验小结应包含实验所需知识点和实验方法的总结,实验心得体会等。

2、分组实验需包含同组讨论内容。

实验5 视图、索引

实验5 视图、索引

实验5 视图、索引5.1实验目的(1)掌握SQL Server中的视图创建、查看、修改和删除的方法。

(2)掌握索引的创建和删除的方法。

5.2实验内容(1)创建、查看、修改和删除视图。

(2)创建、删除索引文件。

5.3实验步骤5.3.1视图操作5.3.1.1 创建视图◆使用SQL Server Management Studio(1)单击“学生选课”数据库前面的+号,右击“视图”,选择“新建视图”命令,弹出“添加表”对话框。

(2)在“添加表”对话框中,添加视图数据来源的表,这里添加三张表,分别是student、course和SC表。

添加表后,单击添加表对话框中的“关闭”按钮,出现创建视图界面。

(3)如果要在视图中显示某张表的某个字段,只需单击其字段前的复选框即可,同时在中间列中会显示该字段,在代码区中会看到具体实现的代码。

(4)如果要查看视图,单击常用工具栏中的“执行”按钮,就可以看到视图的数据显示。

(5)在创建视图中还可以为字段添加列名、进行排序、添加多个筛选条件。

(6)单击常用工具栏中的“保存”按钮,就可以弹出保存视图提示对话框,输入视图名字即可,如view_stu_grade。

◆使用Transact-SQL语句语法格式:create view view_name as select_statement例5.1:在三个表student、course、SC的基础上建立一个视图,取名为view_stu_grade。

create view view_stu_gradeas select student.sno,sname,cname,gradefrom student,sc,coursewhere student.sno=sc.sno and o=o5.3.1.2 修改视图◆使用SQL Server Management Studio视图创建好,就可以利用它进行查询信息了。

如果发现视图的结构不能很好地满足要求,还可以对它进行修改。

ex05索引与视图定义参考答案

ex05索引与视图定义参考答案

实验五索引与视图定义1 实验目的与要求(1) 掌握索引的建立和删除操作。

(2) 掌握视图的创建和查询操作。

2 实验内容(1) 根据基本表创建以下索引:①在图书表中按出版社号建立一个非聚集索引PublishingnoIdx。

②在读者表中按身份证号建立一个非聚集索引IdentifycardIdx。

③在读者表中,首先按工作单位的升序,然后按借书数量降序建立一个非聚集索引WorkunitCountIdx。

(2) 创建一个只含清华大学出版社信息的图书视图BookView。

(3) 创建一个包含读者编号、读者姓名、图书编号、图书名称、借阅日期、归还日期的视图BorrowView。

(4) 创建一个视图,要求显示至少借阅了3本书的读者信息ReaderView。

(5) 在视图BorrowView中查询2010年4月22日以前被借阅的图书。

(6) 在视图ReaderView中查询姓张的读者信息。

(7) 在视图BorrowView基础上再建一个只包含合生元有限公司读者所借图书信息的视图BorrowView1。

(8) 删除视图BorrowView。

参考答案(1) 根据基本表创建以下索引:①在图书表中按出版社号建立一个非聚集索引PublishingnoIdx。

create nonclustered index PublishingnoIdx on book(Publishingno)②在读者表中按身份证号建立一个非聚集索引IdentifycardIdx。

create nonclustered index IdentifycardIdx on reader(Identifycard)③在读者表中,首先按工作单位的升序,然后按借书数量降序建立一个非聚集索引WorkunitCountIdx。

create nonclustered index WorkunitCountIdx onreader(Workunit,borrowCount desc)(2) 创建一个只含清华大学出版社信息的图书视图BookView。

索引和视图实验报告

索引和视图实验报告

7-1编程在teaching 数据库中的student 表的sname 列上创建唯一索引IDX_sname。

USE teachingGOCREATE UNIQUE INDEX IDX_sname ON student(sname)7-2 编程在teaching数据库中的student表的studentno和classno列上创建组合索引IDX_sc。

USE teachingIF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_sc')DROP INDEX student.scGOCREATE INDEX IDX_sc ON student(studentno,classno)7-3 重新组织teaching 数据库中student 表上的IDX_sc 索引。

USE teachingALTER INDEX IDX_sc ON dbo.student REORGANIZE7-4 重新生成teaching 数据库中student 表上的IDX_sname 索引,设置填充索引,将填充因子设置为80%,设置将中间排序结果存储在tempdb中。

USE teachingALTER INDEX IDX_sname ON dbo.studentREBUILD WITH(PAD_INDEX =ON,FILLFACTOR= 80,SORT_IN_TEMPDB =ON)7-5 重新生成teaching 数据库中student 表上的C_studentno 索引,将其修改为聚集唯一索引,并指定该索引的叶级页的填充度为70%。

USE teachingGOCREATE UNIQUE CLUSTERED INDEX C_studentnoON dbo.student(studentno)WITH(PAD_INDEX =ON,FILLFACTOR= 70,DROP_EXISTING =ON)7-6 删除teaching 数据库中student 表上的聚集索引C_studentno 和非聚集索引UC_classno。

实验5-视图

实验5-视图

实验五视图1实验目的(1)掌握SQL视图语句的基本使用方法,如CREATE VIEW、DROP VIEW。

(2)掌握视图更新、WITH CHECK OPTION等高级功能的使用。

2实验内容2.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。

(2)创建视图(不能省略列名的情况)。

(3)删除视图(RESTRICT / CASCADE)。

2.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(1)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。

(2)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。

(3)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。

3实验要求(1)深入复习教材第三章SQL有关视图语句。

(2)根据书上的例子,针对TPCH数据库模式设计各种视图语句,每种类型视图语句至少要设计一个,描述清楚视图要求,运行你所设计的视图语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。

也可以按照附1所列示例做实验。

(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。

(4)思考题:KingbaseES把视图的定义存储在那个系统表中?如何查看某个视图的定义?4实验步骤4.1 掌握SQL视图语句的基本使用方法(1)创建视图(省略视图列名)。

(2)创建视图(不能省略列名的情况)。

(3)删除视图(RESTRICT / CASCADE)。

4.2 掌握视图更新和WITH CHECK OPTION的高级使用方法(4)创建一个行列子集可更新视图,并利用INSERT、DELETE和UPDATE语句加以验证。

(5)创建视图(WITH CHECK OPTION),并利用INSERT、DELETE和UPDATE语句加以验证。

(6)创建一个不可能更新的视图,并利用更新语句验证该视图不可更新。

数据库实验五 视图的创建与使用

数据库实验五 视图的创建与使用

实验五视图的创建与使用一、实验目的(1)理解视图的概念。

(2)掌握创建视图、测试、加密视图的方法。

(3)掌握更改视图的方法。

(4)掌握用视图管理数据的方法。

二、实验内容1.创建视图(1)创建一个名为stuview2的水平视图,从数据库Student_info的Student表中查询出性别为“男”的所有学生的资料。

并在创建视图时使用with check option。

(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。

)create view stuview2asselectSno,Sname,Sex,Birth,Classno,Entrance_date,Homeaddr,Sdept,Postcode from Student_20103322where Sex='男'with check option(2)创建一个名为stuview3的投影视图,从数据库Student_info的Course表中查询学分大于3的所有课程的课程号、课程名、总学时,并在创建时对该视图加密。

(提示:用with ENCRYPTION关键子句)create view stuview3with ENCRYPTIONasselect Cno,Cname,Total_periorfrom Course_20103322where Credit>3with check option(3)创建一个名为stuview4的视图,能检索出“051”班所有女生的学号、课程号及相应的成绩。

create view stuview4asselect Student_20103322.Sno,Cno,Gradefrom Student_20103322,SC_20103322where Student_20103322.Sno=SC_20103322.Snoand Classno='051'and Sex='女'(4)创建一个名为stuview5的视图,能检索出每位选课学生的学号、姓名、总成绩。

数据库系统项目实践.第五讲:索引、视图其应用及

数据库系统项目实践.第五讲:索引、视图其应用及

Projects practice Of Database System
将表创建到指定区
1.创建分区函数。
2.创建映射到分区函数的分区方案。 3.创建使用分区方案的分区表。
Projects practice Of Database System
索引及应用
SQL Server 访问数据库的方式有两种:一种是扫描表的所有页,称之为“表扫描”, 另一种是使用索引技术。
Projects practice Of Database System
分区、数据页、文件组
SQL Server 中数据存储的基本单位是页。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。 区是八个物理上连续的页的集合,用来有效地管理页。所有页都存储在区中。 (1)页 在 SQL Server 中,页的大小为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页。每页的开头是 96 字节的标头,用于存储有关页的系统信息。 此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID。 注意: 日志文件不包含页,而是包含一系列日志记录。
唯一性索引的作用: 强制实施唯一性。 索引的目标将实现查询的效率,但这种索引将占据更多的空间。 主键与唯一性索引的差别: 主键一定是唯一性索引,但是唯一性索引不一定是主键 一个表可以有多个唯一性索引,但是主键只能够有一个。 主键不允许为空,但是唯一性索引允许为空。
Projects practice Of Database System

表扫描
SQL Server 扫描表的所有页

索引和视图实验答案

索引和视图实验答案

《索引和视图》实验一、实验目的与要求1.学会使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引。

2.学会使用SQL Server管理平台查看索引。

3.学会使用SQL Server管理平台和Transact-SQL语句DROP INDEX 删除索引。

4.掌握使用SQL Server管理平台、向导等创建、管理和删除全文索引,并使用全文索引查询信息的方法。

5. 掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。

6.掌握系统存储过程sp_rename的用法。

7.掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。

二、实验平台1、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容1.分别使用SQL Server管理平台和Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

(1) 使用SQL Server管理平台为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

(2) 使用Transact-SQL语句为教务管理系统数据库的《学生信息》和《课程信息》创建主键索引。

USE教务管理系统GOcreate unique nonclustered index学生信息_idxon学生信息(学号)GOUSE教务管理系统GOcreate unique nonclustered index课程信息_idxon课程信息(课程编号)GO2.使用SQL Server管理平台按《课程信息》的课程编号列创建唯一性索引。

3.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。

(1)使用SQL Server管理平台为教务管理系统数据库的《成绩表》的“分数”字段创建一个非聚集索引,命名为《成绩_index》。

数据库 视图和索引的创建及使用

数据库 视图和索引的创建及使用

实验五视图和索引的创建及使用实验目的:1、理解视图和索引的概念2、学会使用企业管理器和T-SQL语句创建视图和索引3、理解视图和索引的优缺点,掌握视图和索引的管理和维护。

实验内容:一视图1、使用企业管理器建立视图,进入“添加表”对话框,选择表student,在“视图设计器”界面的表选择区中选择所有列选型,在SQL语句区,编辑并执行,查看视图显示结果。

2、保存视图名为view_student.3、建立学生学号、姓名、性别、课程号、成绩的视图v_sc,查看v_sc中的数据。

4、建立学生学号、姓名、出生年份的视图v_age查看V_age中的数据。

5、建立…JSJ‟ 系的学生学号、姓名、性别、年龄的视图v_JSJ6、建立每门课程的平均分的视图v_avggrade二索引1、使用企业管理器为学生表student创建一个以stud_id 为索引关键字的惟一聚簇索引。

2、将上一步所建立的索引名称修改为new_index。

3、将前述所建立的new_index 索引删除。

4、使用T-SQL 语句为课程表Course 创建一个名为Course_Index 的惟一非聚簇索引,索引关键字为教师编号Course_id,降序,填充因子为80%。

5、使用T-SQL 语句将课程表中的Course_Index 删除。

6、为student表创建一个基于“年龄,学号”组合列的非聚集、复合索引cj_xh_index。

7、为lesson_info 创建一个基于“课程号course_id,课程类型course_type” 组合列的惟一、聚集、复合索引kc_lx_index。

实验结果中记录结果,不能省略。

附:建立实验相关数据库与表CREATE DATABASE TESTDBON PRIMARY(NAME='TESTDB',FILENAME='d:\TESTDB.mdf',SIZE=3072KB,MAXSIZE='UNLIMITED',FILEGROWTH=1024KB)LOG ON(NAME='TESTDB_LOG',FILENAME='d:\TESTDB_LOG.ldf',SIZE=1024KB,MAXSIZE=2048GB,FILEGROWTH=10%)COLLATE Chinese_PRC_CI_ASCREATE TABLE Student(Stu_ID CHAR(12) NOT NULL PRIMARY KEY,Stu_Name VARCHAR(50),Stu_Passwd V ARCHAR(50),Ssex CHAR(2),Sage INT,Sdept V ARCHAR(50))CREATE TABLE Course(Course_ID [char](9) NOT NULL,Course_Name [varchar](50) NULL,Course_Credit [int] NULL,Course_Pro_ID [char](9) NULL,Teacher_ID [char](8) NULL,Books_ID [char](12) NULL,)use TESTDB1CREATE TABLE Stu_Course(Stu_ID CHAR(12) NOT NULL,Course_ID CHAR(9) NOT NULL,Term CHAR(6),Score DECIMAL(3,2),Credit INT,CONSTRAINT PK_Stu_Course PRIMARY KEY(Stu_ID,Course_ID))USE [TESTDB]GOINSERT INTO student V ALUES('11012901','杜月梅','147258','女',21,'物理系'); INSERT INTO student V ALUES('11012902','李建丽','258369','女',22,'物理系'); INSERT INTO student V ALUES('11012903','高勇','369789','女',23,'物理系'); INSERT INTO student V ALUES('12023001','王军雅','123456','男',20,'计算机'); INSERT INTO student V ALUES('12023002','王晓玲','456789','女',21,'计算机');INSERT INTO course V ALUES('1','高等数学',6,null,'1','1');INSERT INTO course V ALUES('2','C语言',3,null,'2','2');INSERT INTO course V ALUES('3','数据结构',2,2,'3','3');INSERT INTO Stu_Course V ALUES('11012901','1','1',82,6);INSERT INTO Stu_Course V ALUES('11012902','1','1',90,6); INSERT INTO Stu_Course V ALUES('11012903','1','1',75,6); INSERT INTO Stu_Course V ALUES('12023001','1','1',96,6); INSERT INTO Stu_Course V ALUES('12023002','1','1',90,6); INSERT INTO Stu_Course V ALUES('12023001','2','1',86,3); INSERT INTO Stu_Course V ALUES('12023002','2','1',70,3);。

数据库实验五:视图的应用

数据库实验五:视图的应用

数据库实验五:视图的应用一、实验目的与要求:1.实验目的(1)理解视图的概念;(2)掌握视图的使用方法。

(3)理解视图和基本表的异同之处。

2.实验要求(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。

2)基于单个表按选择操作定义视图。

3)基于单个表按选择和投影操作定义视图。

4)基于多个表根据连接操作定义视图。

5)基于多个表根据嵌套操作定义视图。

6)定义含有虚字段的视图。

(2)分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。

(3)在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。

(4)在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析和讨论。

二、实验内容1、实验原理(1)视图是用SQL SELECT查询定义的,创建视图命令格式如下:CREATE VIEW <视图名> AS <SELECT-查询块>(2)删除视图的命令格式如下:DROP VIEW <视图名>2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。

(2)输入自己编好的程序。

(3)检查已输入的程序正确与否。

(4)运行程序,并分析运行结果是否合理和正确。

在运行时要注意当输入不同的数据时所得到的结果是否正确。

(5)输出程序清单和运行结果。

(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。

create view v asselect教师编号,姓名from教师create view v_order asselect*from教师where职称='教授'3)基于单个表按选择和投影操作定义视图。

create view v_cuss asselect教师编号,姓名,职称from教师where职称='教授'4)基于多个表根据连接操作定义视图。

实验5索引和视图

实验5索引和视图

实验5索引和视图实验5 索引和视图⼀、实验⽬的1.掌握索引的使⽤⽅法2.掌握数据完整性的实现⽅法3.熟悉视图的概念和作⽤4.掌握视图的创建⽅法5.掌握如何查询和修改视图⼆、实验准备1.了解索引的作⽤与分类2.掌握索引的创建⽅法3.了解视图的概念4.了解创建视图的⽅法5.了解对视图的操作三、实验内容及要求1.创建索引1)在Employees表的Name列和Address列上建⽴复合索引。

2)对Departments表上的DepartmentName列建⽴唯⼀性索引。

3)使⽤CREATE INDEX语句能创建主键吗?4)向Employees表中的出⽣⽇期列添加⼀个唯⼀性索引,姓名列和性别列上添加⼀个复合索引。

5)假设Departments表中没有主键,使⽤ALTER TABLE语句将DepartmentID列设为主键。

6)添加主键和添加普通索引有什么区别?7)创建与Departments表相同结构的表Departments1,将DepartmentName设为主键,DepartmentsID上建⽴⼀个索引。

2.删除索引1)使⽤DROP INDEX语句删除表Employees上的索引depart_ind。

2)使⽤ALTER TABLE语句删除Departments上的主键和索引Dep_ind。

3.创建视图1)创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。

2)创建YGGL数据库上的视图Employees_view,视图包含员⼯号码、姓名和实际收⼊。

4.查询视图1)从视图DS_VIEW中查询出部门号为3的部门名称。

2)从视图Employees_view查询出姓名为“王林”的员⼯的实际收⼊。

5.更新视图1)向视图DS_VIEW中插⼊⼀⾏数据:6,⼴告部,⼴告业务。

2)执⾏完该命令使⽤SELECT语句分别查看视图DS_VIEW和基本表Departments中发⽣的变化。

3)尝试向视图Employees_view中插⼊⼀⾏数据,看看会发⽣什么情况。

数据库实验报告:视图 和索引

数据库实验报告:视图 和索引

一、实验步骤(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。

(二)练习创建和管理视图1、使用管理控制台创建一个名为“计算机系借阅信息_VIEW”的视图,要求显示计算机系读者2011-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段。

打开sql server管理控制台窗口,打开新建视图对话框。

在添加表中添加tb_borrow和tb_reader表,在选中输出复选框中选中:读者编号,图书编号,借阅日期。

use db_library goselect * from 读者借阅信息_VIEWwhere 所在系='计算机'and 借阅日期>'2011_1_1'2、使用T-SQL语句创建一个名为“读者借阅信息_VIEW”的视图,要求显示所有的读者借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段。

use db_library gocreate view 读者借阅信息_VIEW asselect tb_readder.读者编号,tb_reader.姓名,tb_reader所在系,tb_book.图书编号,tb_book.书名,tb_borrow.借阅日期 from tb_reader,tb_borrow,tb_bookwhere tb_reader.读者编号=tb_borrow.读者编号and tb_book.图书编号=tb_borrow.图书编号Select * from读者借阅信息_VIEW3、使用管理控制台查看“读者借阅信息_VIEW”视图的定义信息和依赖的对象。

打开管理控制台,在数据库“db_Library”下的“视图”对象;在左边窗口右击“读者借阅息_VIEW”该视图,在在窗口中选中“查看依赖关系”选项。

4、使用系统存储过程查看“计算机系续借阅信息_VIEW”视图的定义信息和依赖的对象。

实验五 视图、索引使用

实验五 视图、索引使用

实验五视图、索引的使用一、实验目的:(1) 掌握视图操作。

(2) 掌握索引操作。

二、实验器材:oracle database 10g安装软件10201_database_win32。

三、实验内容及要求:1.在ORCL数据库中创建表Emp表结构如表1所示。

(1)在OEM中分别创建表在OEM目录中,选择表单击鼠标左键,在出现的界面上单击“创建”按钮,进入“表创建”界面,在各个选项卡上输入表Emp各字段信息、约束条件等,单击“确定”按钮,创建表Emp即可完成,依次完成其它表的创建。

EMP的数据表结构显示如下:Name Null? TypeEMPNO(部门号)NOT NULL NUMBER(4)ENAME(部门名称)V ARCHAR2(12)JOB(工作岗位)V ARCHAR2(10)SAL(销售产品数量)NUMBER(7,2)2. 使用PL/SQL语句向表Emp中插入三条数据记录。

EMPNO ENAME JOB SAL 1001 销售一部销售2001002 销售二部销售2401003 销售三部销售1803.视图与索引操作:(1)创建视图生成一个部门号是10的视图:CREATE VIEW D10EMPASSELECT EMPNO, ENAME, SALFROM EMPWHERE DEPTNO = 10;View created。

(2)视图应用从视图D10EMP中查询出全部信息:SELECT * FROM D10EMPORDER BY ENAME;(3)删除视图DROP VIEW D10EMP;(4)创建索引CREATE INDEX I_ENAME ON EMP(ENAME);CREATE UNIQUE INDEX I_EMPNO ON EMP(EMPNO);(5)索引应用如果查询语句如下则没有用到索引I_ENAME:SELECT ENAME,JOB,SAL FROM EMP;如果查询语句如下则用到索引I_ENAME:SELCT * FROM EMP WHERE ENAME = ‘JONES’;(6)删除索引DROP INDEX I_ENAME;。

数据库技术与应用实验五

数据库技术与应用实验五

实验5 索引和视图1.实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引的方法。

(2)掌握使用SQL Server管理平台查看索引的方法。

(3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的方法。

(4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。

(5)了解索引和视图更名的系统存储过程sp_rename的用法。

(6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。

(7)了解删除视图的Transact-SQL语句DROP VIEW的用法。

2.实验内容及步骤(1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。

(2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。

(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。

CREATE INDEX grade_index ON grade(分数)(4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。

CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号,课程编号) (5)分别使用SQL Server管理平台和系统存储过程sp_helpindex查看grade表和student_info表上的索引信息。

sp_helpindex grade(6)使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。

索引、视图的定义实验报告

索引、视图的定义实验报告

数据库实验报告题目:索引、视图的定义院系:计算机科学与工程学院班级:120404姓名:张杨学号:20124270第九周周六56节【实验设计】使用企业管理器(1)打开企业管理器,在树状目录中展开数据表"员工数据表"所在的数据库节点TestDB,并选择其下一级节点"表"。

(2)选择表"员工数据表",并单击鼠标右键。

在弹出菜单中选择命令"所有任务〉管理索引",打开"管理索引"对话框。

(3)在"管理索引"对话框中的"数据库"下拉菜单中选择数据库表。

(4)选择"新建"按钮,弹出"新建索引"对话框。

(5)在"新建索引"对话框的"索引名"文本框中输入索引名称"IDX_Name",然后选择字段"姓名"并设置索引属性。

【程序代码】USE TestDBGOCREATE VIEW员工项目(员工编号,员工姓名,项目名称,项目开始日期)ASSELECT a·编号,a·姓名,b·名称,b·开始日期,FROM员工数据表AS a INNER JOIN项目数据表AS bON a·编号=b·负责人WHERE a·编号=b·负责人GO(2)使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值为"马中兴"。

USETestDBGOINSERTINTO 员工项目(员工姓名)VALUES('马中兴')GO(3)使用UPPDATE语句通过视图将第二步中插入记录的员工姓名改为"马中新"。

USETestDBGOUPDATE员工项目SET 项目负责人= '马中新’,WHERE 项目负责人=’马中兴’GO(4)执行系统存储过程 sp_rename将视图更名为"employee_project_VIEW "。

数据库实验五实验报告

数据库实验五实验报告

数据库实验五实验报告一、实验目的本实验旨在通过学习数据库的索引和优化,掌握数据库索引的使用和优化方法,进一步提升数据库的查询性能。

二、实验要求1.理解数据库索引的概念及作用。

2.熟悉索引的创建、删除和修改操作。

3.了解索引的类型及适用场景,并能选取合适的索引类型。

4.能通过观察执行计划和使用适当的策略对查询进行优化。

三、实验步骤1.索引的创建和删除首先,在已创建的数据库中选择适合创建索引的表。

通过如下语句创建一个测试表:CREATE TABLE test_table(id INT PRIMARY KEY,name VARCHAR(50),age INT);然后,可以在表的字段上创建索引,通过如下语句创建一个索引:CREATE INDEX idx_name ON test_table(name);索引创建完成后,可以通过如下语句删除索引:DROP INDEX idx_name ON test_table;2.索引的修改可以使用ALTER TABLE语句对已创建的索引进行修改。

例如,修改索引的名称:ALTER INDEX idx_name RENAME TO new_idx_name;或者修改索引的定义:ALTER INDEX idx_name RENAME COLUMN new_column_name;3.选择合适的索引类型在创建索引时,需要选择合适的索引类型。

常见的索引类型包括B树索引、哈希索引和全文索引。

- B树索引:适用于等值查询、范围查询和排序场景。

- 哈希索引:适用于等值查询,不支持范围查询和排序。

- 全文索引:适用于全文搜索场景。

4.查询优化在进行数据库查询时,可以通过观察执行计划来判断查询是否有优化空间。

执行计划是数据库在执行查询时生成的查询执行步骤和顺序图,可以根据执行计划优化查询。

另外,还可以通过以下策略对查询进行优化:- 使用合适的索引类型- 避免使用LIKE操作符- 避免使用SELECT *查询所有字段- 避免多表连接查询- 使用JOIN代替子查询- 避免使用不必要的DISTINCT操作符- 分页查询时,使用LIMIT关键字限制结果数量四、实验结果与分析通过实验,我们成功创建了一个测试表,并在该表的字段上创建了索引。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华中科技大学
《数据库技术与应用》实验报告
专业班级:学生姓名:学号:
实验地点:指导教师:
实验日期时间:
一、实验项目名称:索引和视图
二、实验学时:
三、实验目的:
1.学会使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引。

2.学会使用SQL Server管理平台查看索引。

3.学会使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引。

4.掌握使用SQL Server管理平台和Transact-SQL语句CREATE-VIEW创建视图的用法。

5.了解对索引和视图更名的系统存储过程sp_rename的用法。

6.掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。

7.了解删除视图的Transact-SQL语句DROP VIEW的用法。

四、实验工具或环境五、实验内容、步骤、代码和结果:
0. 创建studentsdb数据库及其相应表,并录入数据。

在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。

1.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和
curriculum表创建主键索引。

alter table student_info alter column学号char(4)not null;
alter table student_info
add primary key(学号)
alter table
curriculum alter column课程编号char(4)not null;
alter table curriculum
add primary key(课程编号)
2.使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。

create unique index课程编号_idx on curriculum(课程编号)
3.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。

create index grade_index on grade(分数)
4.为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。

create index grade_id_c_ind on grade(学号,课程编号)
5.分别使用SQL Server管理平台和系统存储过程sp_helpindex查看grade表和student_info表上的
索引信息。

EXEC Sp_helpindex grade
EXEC Sp_helpindex student_info
6.使用SQL Server管理平台对grade 表创建一个聚集索引和唯一索引。

7.使用系统存储过程sp_rename将索引grade_index更名为grade_ind。

use studentsdb
go
exec sp_rename'grade.grade_index','grade_ind'
8.分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引grade_ind。

再次使用系统存储过程sp_helpindex查看grade表上的索引信息。

use studentsdb
go
drop index grade_ind on grade
9.在studentsdb数据库中,以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。

10.在studentsdb数据库中,使用Transact-SQL语句CREATE VIEW 建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。

create view v_stu_c
as
select a.学号,姓名,b.课程编号from student_info a inner join grade b on a.学号=b.学号
select*from v_stu_c where学号='0003'
11.基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。

使用视图v_stu_g查询学号为0001的学生的所有课程和成绩,如图5-1所示。

学号姓名课程名称分数
0001 刘卫平大学计算机基础80
0001 刘卫平C语言程序设计90
0001 刘卫平SQL Server数据库87
▶0001 刘卫平英语86
0001 刘卫平高等数学78
图5-1 学号为0001的学生的视图信息
create view v_stu_g
as
select student_info.学号,姓名,课程名称,分数from student_info,curriculum,grade where student_info.学号=grade.学号and curriculum.课程编号=grade.
课程编号
12.分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。

alter view v_stu_c as select student_info.学号,姓名,count(课程编号)as课程数目from grade inner join studentsdb.dbo.student_info
on grade.学号=student_info.学号
group by student_info.学号,姓名
13.使用Transact-SQL语句ALTER VIEW 修改视图v_stu_i,使其具有列名学号、姓名、性别。

alter view v_stu_i as select学号,姓名,性别
from studentsdb.dbo.student_info
14.使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。

sp_rename v_stu_i,v_stu_info
15.利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。

insert into v_stu_i values ('0015','陈婷','女')
16.利用视图v_stu_i删除学号为0015的学生记录。

delete from v_stu_i where学号='0015'
17.利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。

update v_stu_g
set分数='84'
where姓名='刘卫平'and课程名称='高等数学'
18.使用Transact-SQL语句DROP VIEW 删除视图v_stu_c和v_stu_g。

drop view v_stu_c,v_stu_g。

相关文档
最新文档