数据库实验9

实验报告(九)

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);

 

你可能感兴趣的:(数据库原理,数据库)