SQL数据库原理课设
- 格式:doc
- 大小:177.50 KB
- 文档页数:17
数据库原理课程设计学号:姓名:班级:2018年6月22 日数据库原理课程实验内容与要求理解SQL定义功能;熟练掌握SQL操纵功能;了解SQL数据控制功能。
熟练掌握Oracle、SQL Server、MySQL、DB2、Sybase或PostgreSQL等对数据库的管理和操作。
熟练掌握Visual C++(MFC)、C#、Qt、Java、PHP或Python等访问数据库的方法,编写学生通讯录或学生选课或其他类似的一个小型管理信息系统。
实验一:SQL定义功能、数据插入 1学时1.建立教学数据库的三个基本表:S(Sno,Sname,Ssex,Sage,Sdept) 学生(学号,姓名,性别,年龄,系)SC(Sno,Cno,Grade) 选课(学号,课程号,成绩)C(Cno,Cname,Cpno,Ccredit) 课程(课程号,课程名,先行课,学分)2.DROP TABLE、ALTER TABLE、CREATE INDEX、DROP INDEX 及INSERT语句输入数据。
表的创建CREATE TABLE S(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage SMALLINT,Ssdept CHAR(20));CREATE TABLE C(Cno CHAR(4)PRIMARY KEY,Cname CHAR(20)NOT NULL,Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY(Cpno)REFERENCES C(Cno));CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES S(Sno));INSERT INTO SVALUES('200215121','李勇','男',20,'CS'); INSERT INTO SVALUES('200215122','刘晨','女',19,'CS'); INSERT INTO SVALUES('20204','王敏','女',18,'MA'); INSERT INTO SVALUES('30203','张立','男',20,'IS');INSERT INTO SCVALUES('200215121',1,92);INSERT INTO SCVALUES('200215121',2,85); INSERT INTO SCVALUES('200215121',3,88); INSERT INTO SCVALUES('200215122',2,90); INSERT INTO SCVALUES('200215122',3,80);INSERT INTO CVALUES(2,'数学',NUll,2); INSERT INTO CVALUES(6,'数据处理',NUll,2); INSERT INTO CVALUES(7,'PASCAL语言','6',4); INSERT INTO CVALUES(5,'操作系统','7',4); INSERT INTO CVALUES(1,'数据库','5',4); INSERT INTO CVALUES(4,'数据结构','6',3); INSERT INTO CVALUES(3,'信息系统','1',4); 2.输入数据create table Z(Sno char(5),Sage char(2),Sname char(6));insert into Zvalues('30504','20','朱天罡');insert into Zvalues('15121','20','李勇');Alter table Z ADD S_entrance DATE;DROP table Z;CREATE UNIQUE INDEX StuSno ON Z(Sno); DROP INDEX StuSno;实验二:数据查询/***数据查询***/1.查询选修一号课程的学生学号姓名。
SELECT Sno,snameFROM SWHERE EXISTS(SELECT *FROM SCWHERE Sno=S.Sno AND Cno='1');2.查询选修课程名为数据结构的学生学号与姓名SELECT Sno,SnameFROM SWHERE EXISTS(SELECT *FROM SCWHERE Sno=S.Sno AND EXISTS(SELECT *FROM CWHERE Cname='数据结构'));3.查询不选一号课程的学生学号姓名SELECT Sno,SnameFROM SWHERE NOT EXISTS(SELECT *FROM SCWHERE Sno=S.Sno AND Cno='1');SELECT SnameFROM SWHERE NOT EXISTS(SELECT *FROM CWHERE NOT EXISTS(SELECT *FROM SCWHERE Sno=S.Sno AND Cno=o));5.查询所有学生除了选修1号课程外所有成绩均及格的学生的学号和平均成绩,其结果按平均成绩的降序排列。
create view dot(Sno,Cno,Grade)ASselect S.Sno,Cno,Gradefrom S,SCwhere S.Sno=SC.Sno and Cno!='1';select Sno,avg(Grade) averagefrom dotwhere 60<=(select min(Grade)from dot xdotwhere dot.Sno=xdot.Sno)group by Snoorder by average desc;6.查询选修数据库原理成绩第2名的学生姓名select Sno,Snamefrom Swhere Sno in(select Sno from SC where Cno in(select Cno from C where Cname='数据库')and Grade in(select max(Grade) from SC where Grade not in(select max(Grade) from SC where Cno in(select Cno from C where Cname='数据库'))and Cno in(select Cno from C where Cname='数据库')));7.查询所有3个学分课程中有3门以上(含3门)课程获80分以上(含80分)的学生的姓名。
******************************************************************CREATE VIEW xdot (Sno,Cno,Grade)ASSELECT Sno, o,GradeFROM SC,CWHERE Grade>=80 AND Ccredit=3 AND o=o;SELECT SnameFROM SWHERE Sno IN(SELECT SnoFROM xdotGROUP BY SnoHAVING COUNT(*)>=3);8.查询选课门数唯一的学生的学号。
CREATE VIEW Ydot (Sno,Ccount)ASSELECT Sno,COUNT(*)FROM SCGROUP BY Sno;SELECT SnoFROM SCGROUP BY SnoHAVING COUNT(*)<>ALL(SELECT CcountFROM YdotWHERE Ydot.Sno!=SC.Sno);9.SELECT语句中各种查询条件的实验。
实验三:数据修改、删除 1学时1.把1号课程的非空成绩提高10%update SCset Grade=Grade*(1+0.1)where Grade is not NULL and Grade<=100 and Cno='1';2.在SC表中删除课程名为数据结构成绩的元组deletefrom SCwhere Cno in(select Cnofrom Cwhere o=o and Cname='数据库');3.在S和SC表中删除学号为95002的数据deletefrom SCwhere Sno='200215122';deletefrom Swhere Sno='200215122';实验四:视图的操作 1学时建立男学生的视图,属性包括学号姓名学习课程名和1成绩create view gstudent(Sno,Sname,Cname,grade)AsSelect S.Sno,S.Sname,ame,SC.GradeFrom S,C,SCWhere S.Sno=SC.Sno and o=o and S.Ssex='男'在男学生视图中查询平均成绩大于80分的学生学号和姓名select Sno ,Snamefrom Swhere Sno in(select Snofrom gstudentgroup by Snohaving avg(grade)>=80);实验五:库函数,授权控制 1学时计算每个学生的成绩的课程门数、平均成绩select count(*),avg(Grade)from SCwhere grade is not nullgroup by Sno;使用GRANT把基本表S、SC、C使用权限给其它用户GRANT ALL PRIVILEGESON TABLE STO PUBLIC;GRANT ALL PRIVILEGESON TABLE CTO PUBLIC;GRANT ALL PRIVILEGESON TABLE SCTO PUBLIC;实验完成后,撤销DROP TABLE S CASCADE;不能删除parent rowDROP TABLE S CASCADE;DROP TABLE C CASCADE;DROP VIEW gstudent CASCADE;实验六:综合实验:实现一个小型管理信息系统熟练掌握Visual C++、C#、Qt、Java、PHP或Python等访问数据库的方法,设计和实现学生通讯录或学生选课或类似的一个小型管理信息系统。