《数据库原理与应用》作业(1-0.5)
一、视图
1、创建视图V_STU_AVG并尝试更新。
(1)创建一个包括学生的学号及其各门功课的平均成绩的视图V_STU_AVG。
CREATE VIEW V_STU_AVG ( sNo, avgMark ) AS SELECT sNo, AVG( mark ) FROM student_course GROUP BY sNo;
查看视图中数据,理解视图的作用
SELECT * FROM V_STU_AVG;
(2)尝试对视图V_STU_AVG执行下面两条语句。
UPDATE V_STU_AVG SET avgMark = 85 WHERE sNo = '081220102';
DELETE FROM V_STU_AVG WHERE SNO = '081220102';
两条语句执行均不成功,思考错误根源。
原因:select语句包括group子句
2、创建视图V_TEACHER1并进行DML操作
(1)执行下列命令,配置数据环境
INSERT INTO department(dNO,dname) VALUES('060606','艺术经济学院');
INSERT INTO teacher(tNO,tName,tSex,dNO) VALUES('090901','林燕飞','女','060606');
(2)创建一个包括教师编号、教师姓名、性别和生日的060606部门所有女教师的视图。
CREATE VIEW V_TEACHER1 AS SELECT tNo,tName,tSex,tbirth FROM teacher WHERE dNo='060606' AND tSex='女' WITH CHECK OPTION;
查看视图中数据,理解视图作用
SELECT * FROM V_TEACHER1;
(3)执行下面两条语句,尝试对视图V_TEACHER1进行DML操作。
INSERT INTO V_TEACHER1 VALUES('090902','郭丽云','女','100002');
INSERT INTO V_TEACHER1 VALUES ('090903','李德刚','男','100002');
DELETE FROM V_TEACHER1 WHERE tNo='090901';
三条语句中有执行成功有执行失败的,请思考原因。
原因:第1、2句执行失败——WITH CHECK OPTION
子句来确保视图的一致性,insert:保证insert的数据能被视图查询出来,这两条语句都不满足dNo='060606' AND tSex='女'的条件。
第3句执行成功,对于delete,有无with check option都一样,但只能删除视图已有的数据。
(4)使用T-SQL语句修改视图
ALTER VIEW V_TEACHER1 AS SELECT tNo,tName,tSex,tRank,dNo FROM teacher WHERE dNo='100002' AND tSex='女';
(5)执行下面两条语句,再次尝试对视图teacher1_view进行DML操作。
INSERT INTO V_TEACHER1 VALUES('090902','郭丽云','女','讲师','100002');
INSERT INTO V_TEACHER1 VALUES('090903','李德刚','男','讲师','100002');
两条语句均可以执行成功。思考为什么第二条语句会成功?
原因:没有WITH CHECK OPTION
子句会忽略错误,所以第2句会执行成功。
(6)使用T-SQL 语句删除视图
DROP VIEW V_TEACHER1;
3、设计视图
(1)设计一个视图,用于显示学生姓名、选修的课程名称、任课教师名称和总评成绩信息。
CREATE VIEW xuanxiu AS SELECT sName, cName, tName, Mark FROM student,course,teacher,student_course;
(2)设计一个视图,用于显示女学生信息,但是隐藏学生的身高和体重信息,只能通过视图对女生数据进行DML。
CREATE VIEW female AS SELECT sNo,sName,mNo,sBirth,sNative FROM student WHERE sSex='女' WITH CHECK OPTION;
二、索引
1、利用SQL管理索引
(1)使用SQL语句为stuManage数据库的student_course表的“mark”字段创建一个非聚集索引,命名为IX_SC_MARK。
create index IX_SC_MARK ON student_course(mark);
(2)为student表的“sName”和“sSex”字段创建一个复合唯一索引,命名为IX_STUDENT_NAMESEX。
create unique index IX_STUDENT_NAMESEX ON student(sName,sSex);
(3)查看student_course表上的索引信息。
show index from student_course;
(4)使用DROP INDEX删除索引 ix_student_namesex。
drop index student.IX_STUDENT_NAMESEX;/*报错*/
drop index IX_STUDENT_NAMESEX on student;
三、存储过程
1、验证存储过程创建与执行
(1)创建一个存储过程
delimiter //
create procedure list_student_department(in dept varchar(20))
begin
select sno,sname,ssex,snative,mname,dname
from student,major,department
where student.mno=major.mno and major.dno=department.dno
and dname=dept;
end;//
delimiter;
(2)执行
call list_student_department('计算机系');
(3)功能分析
创建带参的存储过程。存储工商管理系、信息管理系的学生信息,包括学号、姓名、性别、籍贯、专业、院系。
2、补充存储过程创建与执行
在stuManag数据库中创建一个名为show_course_Mark的存储过程,产生某门课程的选课学生的成绩情况,包括选课人数、平均成绩、及格率。要求输入某门课程的课程号,得到上述信息。
(1)创建:
delimiter //
CREATE PROCEDURE show_course_Mark(in incno CHAR(6),
out stuCount float,out avgMark FLOAT ,out ratioPass FLOAT )
BEGINDECLARE passCount FLOAT ;SELECT COUNT(*) into stuCountFROM student_course sc,course_class ccWHERE sc.ccNo=cc.ccNo AND cc.cNo=incno;SELECT avg(mark) into avgMarkFROM student_course sc,course_class ccWHERE sc.ccNo=cc.ccNo AND cc.cNo=incno;SELECT COUNT(*) into passCountFROM student_course sc,course_class ccWHERE sc.ccNo=cc.ccNo AND cc.cNo=incno AND mark>=60;SET ratioPass:=passCount/stuCount;
END//
delimiter ;
(2)执行:
call show_course_Mark( '040403',@a,@b,@c);
SELECT '040403' AS '课程号', @a AS '人数', @b AS '平均分',@c AS '及格率';
3、设计存储过程
1、创建一个带输入参数和输出参数的存储过程,要求实现如下功能:输入学生学号,然后输出学生的选课门数、平均分以及所选总学分。
delimiter //
CREATE PROCEDURE show_courses_Mark1(in insno CHAR(9),
out cCount float,out avgMark FLOAT ,out sumCredit FLOAT )
BEGINSELECT COUNT(*) into cCountFROM student_course scWHERE sc.sno=insno;SELECT avg(mark) into avgMarkFROM student_course scWHERE sc.sno=insno;SELECT sum(credit) into sumCreditFROM student_course sc,course_class ccWHERE cc.ccNo=sc.ccNo AND sc.sno=insno ;
END//
delimiter ;
call show_courses_Mark1( '081710109',@a,@b,@c);
SELECT '081710109' AS '学号', @a AS '选课门数', @b AS '平均分',@c AS '总学分';
2、创建一个存储过程,利用输入的班级编号(学号前7位)和开课编号ccno,为全班所有同学自动选修该课程。
delimiter //
CREATE PROCEDURE insert_course1(in inclass CHAR(7),in inccno CHAR(10))
BEGINDECLARE stu_sno CHAR(9);DECLARE class_sno CURSOR FOR SELECT sno FROM student WHERE substring(sno,1,7)=inclass;open class_sno ;REPEATFETCH class_sno INTO stu_sno;INSERT INTO student_course(sno,ccno) VALUES(stu_sno,inccno);UNTIL substring(stu_sno,1,7)!=inclassEND REPEAT;CLOSE class_sno;
END;//
delimiter;
CALL insert_course1('0812201','2009020102');
《数据库原理与应用》作业(1-0.5)相关推荐
- 【渝粤题库】陕西师范大学200781 数据库原理及应用 作业
<数据库原理及应用>作业 一.选择题 1.在数据管理技术的发展过程中,经历了人工管理阶段.文件系统阶段和数据库系统阶段.在这几个阶段中,数据独立性最高的是____阶段. 数据库系统 B.文 ...
- 数据库原理与技术 作业及答案 复习用
目录 第一章 绪论 作业 第二章 关系数据库 作业 第3章 关系数据库标准语言SQL 作业1 第3章 关系数据库标准语言SQL 作业2 第3章 关系数据库标准语言SQL 作业3 ⭐第4章 数据库安全性 ...
- 天津大学大作业数据库原理
数据库原理 第一组: 一. SQL 语句编写题 (一) 编写 SQL 语句 对于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE) 课程 C( ...
- 【数据库原理实验(openGauss)】实验报告
<数据库系统原理实验>报告 文章目录 <数据库系统原理实验>报告 一.实验课程性质和教学目标 二.实验课程教学基本要求 三.实验教学内容 实验一 认识DBMS系统 (一)实验目 ...
- 《数据库原理与应用》实验一
题目来源学校课后作业,禁商业用途,仅用于课业学习 <数据库原理与应用>实验一 一.实验目的及要求 1.掌握MySQL系统的数据库创建方式. 2.掌握MySQL系统的数据表的创建方式. 3. ...
- 《数据库原理实验指导书》
<数据库原理实验指导书> 河南科技大学软件学院 目录 实验规则 基本实验方法 实验环境 实验一 数据定义 实验二 数据更新 实验三 数据查询-简单查询和连接查询 实验四 数据查询-分组查询 ...
- [渝粤教育] 山东财经大学 数据库原理及应用 参考 资料
教育 -数据库原理及应用-章节资料考试资料-山东财经大学[] 数据库设计作业 数据模型与关系数据库测验 1.[单选题]关系模型.层次模型 .网状模型的划分依据是 () A.记录长度 B.文件大小 C. ...
- [渝粤教育] 南昌航空大学 数据库原理 参考 资料
教育 -数据库原理-章节资料考试资料-南昌航空大学[] 引言 1.[多选题]在数据库界曾经获得过图灵奖学者包括( ) A.Charles W. Bachman B.Edgar F. Codd C.Ja ...
- 大数据技术原理与应用作业一
大数据技术原理与应用作业一 1.试述信息技术发展史上的3次信息化浪潮及其具体内容. 第一次信息化浪潮发生在1980年前后,具体标志是个人计算机的出现,PC开始普及,使得计算机走入企业和千家万户,大 ...
- MS SQL Server数据库原理
MS SQL Server数据库原理 一. 数据库基本概念 数据库系统(DBS):采用数据库技术的计算机系统,由数据库(数据).数据库管理系统(软件).数据库管理员(人员).硬件平台(硬件)和软件平台 ...
最新文章
- R语言使用caret包对GBM模型参数调优(自定义调优的评估指标,例如ROC指标):抽取预测标签及类概率、抽样ROC的指标并绘制密度图
- 附录C 编译安装Hive
- 温州大学《机器学习》课程课件(九、支持向量机)
- python求数字平均值_python 求10个数的平均数实例
- 串操作指令及其应用程序的设计与调试运行——汇编实验四 用8086汇编完成下题 编制一程序,从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。要求在屏幕上以右边对齐的形式显示出
- java弹框形式输入_java中点击一个按钮弹出两个输入文本框的源代码
- 还没使用过Web Worker,推荐一款开源工具Workerize,快速上手
- 基于Spring Boot2 + Spring Security OAuth2 实现单点登陆(二)
- 数学建模基本模型(一) 优化模型
- 黄山归来不看岳:《Java开发手册(黄山版)》新增 11 条规约
- 2017年5月14日爱奇艺算法比赛
- 自己写的Excel查询小工具,需要的可以拿走
- 来自H3C的降维打击:H3C BX54鲸路由评测体验
- layui rate (评分组件)使用的一点经验分享
- 「通过Docs学Python」(一)前言
- 77. Combinations(组合)
- D语言与C++做映射时需要注意的事情
- 广播、组播 socket编程
- Java版本和JDK版本的关系
- 关于操作数据库时报的java.sql.SQLException: ORA-00904:标识符无效 的问题