数据库操作--索引,视图与查询(一)解析.doc
文本预览下载声明
数据库实验报告(四)
班别:13统计2班 姓名: 学号:2013240942 评分:
实验题目 数据库操作--索引,视图与查询(一) 实验目的 掌握用 SQL 命令创建索引
掌握用 SQL 命令创建数据视图;
掌握用 SQL 命令进行单表查询CREATE UNIQUE CLUSTERED INDEX Clano ON Class(Classid);
GO
CREATE UNIQUE CLUSTERED INDEX CLAno ON ClassAssign (Classid);
GO
CREATE UNIQUE CLUSTERED INDEX Crno ON Classroom (Roomid);
GO
CREATE UNIQUE CLUSTERED INDEX Courno ON Course (Cid);
GO
CREATE UNIQUE CLUSTERED INDEX Depno ON Department (Deptid);
GO
CREATE UNIQUE CLUSTERED INDEX Enrno ON Enrollment (Sid);
GO
CREATE UNIQUE CLUSTERED INDEX Stuno ON Student (sid);
GO
CREATE UNIQUE CLUSTERED INDEX Teano ON Teacher (Tid);
GO
为Course表建立一基于课程名(Cname)的唯一索引:
CREATE UNIQUE INDEX COCN ON Course(Cname);
为 Department表基于系名(Dname) 建立一唯一索引:
CREATE UNIQUE INDEX DEDN ON Department(Dname);
为 Student表基于姓名(sname)和年龄(sage)建立一非聚簇索引,使数据基于姓名的升序和年龄的降序排列:
CREATE NONCLUSTERED INDEX STSN ON Student(Sname ASC,Sage DESC);
建立一视图,用于以后维护数学系的学生信息:
CREATE VIEW MA_Student
AS
SELECT Sname,sid,Sage
FROM Student
WHERE Deptid=MA
WITH CHECK OPTION
删除Student表中基于sname和sage的非聚簇索引:
DROP INDEX STSN ON Student
查询数学系(MA)全体学生的学号,姓名和年龄:
SELECT Sid,Sname,Sage
FROM Student
WHERE Deptid=MA
查询计算机系(CS)小于19岁的学生的学号:
SELECT Sid
FROM Student
WHERE Sage19 AND Deptid=CS
查询信息1班的学生的平均年龄:
SELECT AVG(Sage)
FROM Student
WHERE Classid=信息1班
MA001最好成绩的学生的学号和成绩:
SELECT Sid,grade
FROM Enrollment
WHERE grade IN
(SELECT MAX(grade)
FROM Enrollment
WHERE Cid=MA001);
查询选修了MA001,MA002,CS005,IS003,EN004号课程中任一课程的学生的学号及姓名:
SELECT Sid,Sname
FROM Student
WHERE Sid IN(
SELECT Sid
FROM Enrollment
WHERE Cid IN(MA001,MA002,CS005,IS003,EN004))
查询所有至少有三门课程不及格的学生的学号,姓名:
SELECT Sid,Sname
FROM Student
WHERE Sid IN(
SELECT Sid
FROM Enrollment
GROUP BY Sid
HAVING COUNT(*)2
)
INTERSECT
SELECT Sid,Sname
FROM Student
WHERE Sid IN(
SELECT Sid
FROM Enrollment
WHERE grade60)
查询金融2班全体学生课程MA001的平均成绩:
SELECT AVG(grade)
FROM Enrollment
WHERE Sid IN(
SELECT Sid
FROM Student
WHERE Classid=金融2班 AND Cid=MA001
)
SELECT Sname,Sage,Sid
FROM Stud
显示全部