数据库实验9

2023-12-15 11:43:13

实验报告(九)

1、实验目的

(1)????掌握视图的创建与删除

(2)????掌握视图的查询与修改

(3)????理解视图与基表的区别和联系

2、实验预习与准备

(1)????视图的基本概念

(2)????创建与更新视图的SQL语句

3、实验内容及步骤

(1)????利用SQL语句创建如下视图:

a)????????视图v_course,包含学分大于3的课程的编号,课程名称,课程学分,课程学时,学期,并将对应视图的列名分别改为no,name,credit,hour,term

CREATE VIEW v_course AS
SELECT cno AS no, cname AS name, credit, hour, term
FROM course
WHERE credit > 3;

b)????????视图v_select中的数据为每个学生的学号、姓名、班级编号、院系、选修课程号,课程名及期末成绩

CREATE VIEW v_select AS
SELECT s.sno, s.sname, s.clno, c.department, sc.cno, co.cname, sc.score
FROM student s
JOIN score sc ON s.sno = sc.sno
JOIN course co ON sc.cno = co.cno
JOIN class c ON s.clno = c.clno;

c)????????视图v_credit,包含每个班级的编号和该班级学分最大值;

CREATE VIEW v_credit AS
SELECT clno, MAX(credit) AS max_credit
FROM class
JOIN course_class ON class.clno = course_class.clno
JOIN course ON course_class.cno = course.cno
GROUP BY clno;

(2)????利用上面创建的视图完成下列题目:

a)????????查询选修了“数据库原理”课程的学生学号,姓名和成绩

SELECT v_select.sno, v_select.sname, v_select.score
FROM v_select
JOIN course co ON v_select.cno = co.cno
WHERE co.cname = '数据库原理';

b)????????查询班级学分最高的学生学号、姓名、班级号和学分

SELECT v_select.sno, v_select.sname, v_select.clno, c.max_credit
FROM v_select
JOIN v_credit c ON v_select.clno = c.clno
WHERE c.max_credit = (
  SELECT MAX(max_credit)
  FROM v_credit
);

c)????????将下列课程信息插入视图v_ course中

课程编号

课程名

学分

学时

学期

308006

JSP

3

64

5

该课程信息是否能添加到视图中,如果能添加,则添加后通过视图是否能查询到该课程信息。

INSERT INTO v_course (no, name, credit, hour, term)
VALUES ('308006', 'JSP', 3, 64, 5);

(3)????利用SQL语句在teacher表的tname列上创建唯一索引UQ_tname。用insert语句向teacher表中如下教师信息,并观察语句执行结果:

教师编号

教师姓名

密码

性别

电话

院系

身份

说明

0301

刘元朝

0301

Null

机械学院

1

Null

CREATE UNIQUE INDEX UQ_tname ON teacher(tname);
INSERT INTO teacher (tno, tname, pwd, sex, tel, department, type, remark)
VALUES ('0301', '刘元朝', '0301', '男', NULL, '机械学院', 1, NULL);

?

文章来源:https://blog.csdn.net/Hubery_sky/article/details/135010823
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。