数据库原理实验四——视图与索引(代码片段)

Alfredyoung Alfredyoung     2023-01-14     203

关键词:

实验目的

  1. 熟练掌握使用图形用户界面和SQL语言创建、操作和删除视图。
  2. 熟练掌握使用图形用户界面和SQL语言创建和删除索引。
  3. 理解与验证索引的作用。

实验内容

  1. 在Student数据库中,用SQL语句创建一个选修了“数据库”课程并且是2001年出生的学生的视图,视图中包括学号,姓名,性别,成绩。(5分)
CREATE VIEW STUDENT_2001(SNO,SNAME,SGENDER,SBIRTH)
AS 
SELECT S.SNO,SNAME,SGENDER,GRADE FROM S,SC,C
WHERE S.SNO = SC.SNO AND C.CNO = SC.CNO AND CNAME = '数据库' AND SBIRTH LIKE '2001%';
  1. 在SPJ_MNG数据库中,用两种不同的SQL语句为工程项目名是“三建”的工程项目建立一个供应情况视图,包括供应商代码(SNO),零件代码(PNO),供应数量(QTY)创建以下视图(视图名:V_SPJ)。(10分)

方法一

CREATE VIEW V_SPJ
AS
SELECT SNO,PNO,QTY FROM SPJ
WHERE JNO IN
(
	SELECT JNO FROM J
    WHERE JNAME = '三建'
);

方法二

CREATE VIEW V_SPJ
AS
SELECT SNO,PNO,QTY FROM SPJ,J
WHERE SPJ.JNO = J.JNO AND JNAME = '三建';
  1. 用SQL语句针对第2小题的V_SPJ完成下面的视图查询。(10分)

(1) 找出“三建”工程项目使用的各种零件代码及其数量。

SELECT PNO,SUM(QTY) 
FROM V_SPJ
GROUP BY PNO;

(2) 找出供应商S1的供应情况。

SELECT * FROM V_SPJ
WHERE SNO = 'S1';
  1. 用SQL语句针对第2小题的V_SPJ完成视图的数据更新。(15分)

(1) 给视图V_SPJ中增加一条数据。
根据提示信息或无法显示或需要触发器,因此不需要实现
(2) 修改视图V_SPJ中的任意一条数据的供应数量。

UPDATE V_SPJ
SET QTY = 400
WHERE SNO = 'S3' AND PNO = 'P1';

(3) 删除视图V_SPJ中的任意一条数据。

DELETE 
FROM V_SPJ
WHERE SNO = 'S3' AND PNO = 'P1';
  1. 用图形用户界面对Student数据库中C表的Cno字段创建一个降序排列的索引,索引名称IX_CNo。(5分)


索引创建位置如图所示

  1. 使用SQL语句对Student数据库完成以下的索引操作。(15分)

(1) 在C表的CName属性上创建一个非唯一性的普通索引,索引名IX_CName。

CREATE INDEX IX_CName
ON C(CNAME);

(2) 在S表上创建一个名为IX_ngd的复合索引,该索引是针对sname, sgender, sdept属性集建立的升序索引。

CREATE INDEX IX_ngd
ON S(SNAME ASC,SGENDER ASC,SDEPT ASC);

(3) 删除C表的索引IX_CNo。

DROP INDEX IX_CNo ON C; 

(4) 基于以上的索引(c表:cno的主键索引,cname的普通索引;S表:sno的主键索引,IX_nga复合索引),用explain得到的查询计划观察每个查询语句中索引的使用情况。

DROP INDEX IX_CNo ON C; 

① explain select * from c;
未使用索引
② explain select * from c where cno = ‘1’;
使用主键索引
③ explain select * from c where cname=’数据库’ ;
使用主键索引
④ explain select * from c where cname like ‘%数据库%’;
未使用索引
⑤ explain select * from c where cname like ‘数据库%’;
未使用索引
⑥ explain select * from s where sname =‘张立’ and sno=‘2001’;
使用复合索引
⑦ explain select * from s where sname =‘张立’ and sgender=‘男’ and sdept=‘IS’;
使用复合索引
⑧ explain select * from s where sname =‘张立’ and sgender=‘男’;
使用复合索引
⑨ explain select * from s where sname =‘张立’;
使用复合索引
⑩ explain select * from s where sgender =‘男’;
未使用索引
⑪ explain select * from s where sgender =‘男’ and sdept=‘IS’;
未使用索引

  1. 假设有一个如下的基本表userinfo,自己设计一个实验验证索引对数据库查询效率的提升作用。(40分)
    create table userinfo
    (
    user_id int primary key, //用户ID
    username varchar(10), //用户名
    gender char(1), //性别
    age int, //年龄
    c_id int //学院编号
    )

(1) 验证有索引和无索引的查询效率差异。
在age上创建一个索引,并按照如下语句进行查询

EXPLAIN SELECT *   
FROM userinfo   
WHERE age = 25; 

(2) 验证单字段窄索引和多字段构成的宽索引的查询效率异,注意理解宽索引中的最左匹配原则。
首先在age上创建一个窄索引
然后查询

EXPLAIN SELECT username,age,gender,c_id   
FROM userinfo   
WHERE gender = 'm' AND age = 25 AND c_id = 1; 

然后在age,gender,c_id创建一个宽索引
然后同上查询即可知道查询效率的差异。

编译原理系列实验四语义分析与中间代码生成(代码片段)

...间代码生成实验目的通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法范畴变换为某种中间代码的语义翻译方法。掌握目前普遍采用的语义分析方法──语法制导翻译技术。给出PL/0文法规范,要求... 查看详情

详解mysql索引与底层原理(代码片段)

文章目录索引的底层原理一、MySQL缓冲池1、数据页与数据页管理2、free链表3、flush链表4、哈希表5、LRU链表补充二、索引的底层原理1、InnoDB索引I.行记录与页内索引II.页外索引页III.B+树结构IV.聚簇索引V.InnoDB索引文件2、MyISAM索... 查看详情

索引,视图,导入导出,备份,恢复(代码片段)

一、实验介绍1.1实验内容本节实验中我们将学习并实践数据库的其他基本操作:索引、视图,导入和导出,备份和恢复等。这些概念对于数据库管理员而言都非常重要,请仔细理解并完成所有实验操作。1.2实验知识点索引视图导... 查看详情

实验四-vbscript脚本病毒分析与清除(代码片段)

...何实现文件、进程及注册表操作2.了解VBScritp病毒的工作原理3.了解VBScritp病毒的感染目标和感染方式4.掌握编写VB脚本病毒专杀工具的一般方法【实验原理】VBScript语法(可查询“微软VbScript手册vbs.chm”)1.文件操作(1)创建... 查看详情

区块链技术与应用实验报告(实验四)(代码片段)

...验报告(实验四)关于作者作者介绍一、实验目的二、实验原理简介三、实验环境四、实验步骤1.运行vanitygen.exe程序2.制作比特币地址练习区块链技术与应用实验报告(实验四)关于作者作者介绍🍊博客主页:作者主页🍊... 查看详情

实验四决策树算法及应用(代码片段)

...实验四决策树算法及应用作业目标(1)理解决策树算法原理,掌握决策树算法框架;(2)理解决策树学习算法的特征选择、树的生成和树的剪枝;(3)能根据不同的数据类型,选择不同的决策树算法;(4)针对特定应用场景... 查看详情

编译原理系列实验四语义分析与中间代码生成(代码片段)

...间代码生成实验目的通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法范畴变换为某种中间代码的语义翻译方法。掌握目前普遍采用的语义分析方法──语法制导翻译技术。给出PL/0文法规范,要求... 查看详情

hbase万字详细原理解析(代码片段)

HBase超详细原理解析文章目录HBase超详细原理解析一、HBase数据模型1.1逻辑视图与物理视图1.2多维稀疏排序Map二、HBase相关数据结构2.1LMS树索引2.2布隆过滤器三、RegionServer核心模块3.1HLog3.2MemStore3.3HFile3.4BlockCache四、HBase读写流程4.1HB... 查看详情

实验四linux系统管理(代码片段)

...步骤截图)一、实验目的掌握用户管理的基本内容和原理;理解与用户管理有关的工具与命令的具体作用以及关键部分的内容;从用户管理的角度初步理解系统安全管理的具体内容。掌握文件管理的基本内容和原理&#x... 查看详情

实验四linux系统管理(代码片段)

...步骤截图)一、实验目的掌握用户管理的基本内容和原理;理解与用户管理有关的工具与命令的具体作用以及关键部分的内容;从用户管理的角度初步理解系统安全管理的具体内容。掌握文件管理的基本内容和原理&#x... 查看详情

数据库原理实验三——数据完整性与安全性控制(代码片段)

...义的方法。掌握用户的创建以及使用方法。掌握SQL语句对数据库和表进行安全控制的方法。实验内容利用图形用户界面对Student库中,增加以下的约束和索引,并验证违反相关完整性时的数据库系统的违约处理。(1)S表的非... 查看详情

201723292017-2018-2《程序设计与数据结构》实验四报告(代码片段)

201723292017-2018-2《程序设计与数据结构》实验四报告课程:《程序设计与数据结构》班级:1723姓名:王文彬学号:20172329实验教师:王志强实验日期:2018年5月30日必修/选修:必修一、实验内容实验一:AndroidStuidio的安装测试1、安... 查看详情

201723032017-2018-2《程序设计与数据结构》实验四报告(代码片段)

201723032017-2018-2《程序设计与数据结构》实验四报告课程:《程序设计与数据结构》班级:1723姓名:范雯琪学号:20172303实验教师:王志强助教:张旭升/刘伟康实验日期:2018年5月30日必修/选修:必修实验内容AndroidStuidio的安装测... 查看详情

mysql数据库索引原理|索引数据结构|b+tree(代码片段)

数据库索引原理|索引数据结构|B+Tree文章目录数据库索引原理|索引数据结构|B+Tree一.数据库索引简介二.红黑树与B-Tree1.红黑树2.B-Tree三.MySQL的完美解决方案——B+Tree四.索引下的SQL查询过程五.MySQL数据库引擎MyISAM与InnoDB1.My... 查看详情

201723112017-2018-2《程序设计与数据结构》实验四报告(代码片段)

201723112017-2018-2《程序设计与数据结构》实验四报告课程:《程序设计与数据结构》班级:1723姓名:赵晓海学号:20172311实验教师:王志强实验日期:2018年5月30日必修/选修:必修1.实验内容(1)AndroidStuidio的安装测试参考《Java和... 查看详情

201723052017-2018-2《程序设计与数据结构》实验四报告(代码片段)

201723052017-2018-2《程序设计与数据结构》实验四报告课程:《程序设计与数据结构》班级:1723姓名:谭鑫学号:20172305实验教师:王志强实验日期:2018年5月30日必修/选修:必修1.实验内容(1)AndroidStuidio的安装测试:参考《Java和... 查看详情

数据库系统概论实验四数据编辑及查询(代码片段)

一、实验目的1.掌握SQLServer数据库系统基本操作2.掌握SQLServer数据库系统数据查询与更新使用方法二、实验内容建立教材P71页的数据库表,用代码完成以下操作:按照P71表内容,用insert语句插入数据记录࿱... 查看详情

201723202017-2018-2《程序设计与数据结构》实验四报告(代码片段)

201723202017-2018-2《程序设计与数据结构》实验三报告课程:《程序设计与数据结构》班级:1723姓名:李闻洲学号:20172320实验教师:王志强实验日期:2018年5月31日必修/选修:必修实验内容(1)AndroidStuidio的安装测试:参考《Java... 查看详情