当前位置:文档之家› 数据库实验报告

数据库实验报告

数据库系统概论实验报告实验任务:任务一:数据的定义部分(一)数据定义:一、基本表创建,修改,更新,删除1.建立基本表在数据库中建立3张基本表:Student、Course和SC.1)创建学生表StudentCREATE TABLE Student(SNO INT PRIMARY KEY, //学号SNO(INT型,主码)SNAME CHAR(8) UNIQUE, //姓名SNAME(CHAR型,长度为8,其值唯一) SEX CHAR(2), //性别SEX(CHAR型,长度为2)DEPTNO INT); //所在系DEPTNO (INT型)2)创建课程表CourseCREATE TABLE Course(CNO INT, //课程号CNO(INT型)CNAME CHAR(20) NOT NULL, //课程名CNAME(CHAR型,长度为20,非空) TNO INT, //授课教师编号TNO(INT型)CREDIT INT, //学分CREDIT(INT型)PRIMARY KEY(CNO,TNO)); //(CNO,TNO)为主码3)创建学生选课表SC,所有属性均为INT型CREATE TABLE SC(SNO INT, //学号SNOCNO INT, //课程号CNOGRADE INT, //成绩GRADEPRIMARY KEY(SNO,CNO)); //(SNO,CNO)为主码4)创建教师表Teacher,由以下属性所组成:教师编号TNO(INT型,主码),教师姓名TNAME(CHAR型,长度为8,非空),所在系DEPTNO(INT型)CREATE TABLE Teacher(TNO INT PRIMARY KEY,TNAME CHAR(8) NOT NULL,DEPTNO INT);5)创建系表Dept,由以下属性所组成:系号DEPTNO(INT型,主码),系名DNAME(CHAR 型,长度为20,非空)。

CREATE TABLE Dept(DEPTNO INT PRIMARY KEY,DNAME CHAR(20) NOT NULL);2.修改基本表在Student表中加入属性AGE(INT型)ALTER TABLE Student ADD AGE INT;3.删除基本表1)删除Student表DROP TABLE Student;2)在所有操作结束后删除Course表。

DROP TABLE Course;3)在所有操作结束后删除SC表。

DROP TABLE SC;4)在所有操作结束后删除Teacher表。

DROP TABLE Teacher;5)在所有操作结束后删除Dept表。

DROP TABLE Dept;二、索引操作1.建立索引1)在Student表上建立关于属性SNO的唯一索引。

CREATE UNIQUE INDEX stusno ON Student(SNO);2)在Course表上建立关于CNO的唯一索引。

CREATE UNIQUE INDEX coucno ON Course(CNO);2.删除索引1)删除Student表上的索引stusno。

DROP INDEX stusno;2)删除Course表上的索引coucno。

DROP INDEX coucno;三、视图操作1.建立视图在插入数据的Student基本表上为计算机系学生的记录建立一个视图CS_STUDENT。

CREATE VIEW CS_STUDENTAS SELECT*FROM studentWHERE DEPTNO=(SELECT DEPTNOFROM DeptWHERE DNAME=’计算机科学与技术‘)WITH CHECK OPTION;2.删除视图在操作结束后,删除视图CS_STUDENT。

DROP VIEW CS_STUDENT;(二)数据操作一、更新操作1.插入数据1)向表插入下列数据:1001,黄忱,男,20,101002,李倩,女,21,101003, 陈铭,男,21,101004,刘英,女,21,201005,马朝阳,男,22,20插入数据代码如下:INSERT INTO Student VALUES(1001,‘黄忱’,‘男’,20,10);INSERT INTO Student VALUES(1002,‘李倩’,‘女’,21,10);INSERT INTO Student VALUES(1002,‘陈铭’,‘男’,21,10) INSERT INTO Student VALUES(1003,‘刘英’,‘女’,21,20);INSERT INTO Student VALUES(1001,‘马朝阳’,‘男’,22,20);2)向Course表插入下列数据:1,数据结构,101,42,数据库,102,43,离散数学,103,44,C语言程序设计,101,2插入数据代码如下:INSERT INTO Course VALUES(1,'数据结构',101,4);INSERT INTO Course VALUES(2,'数据库',102,4);INSERT INTO Course VALUES(3,'离散数学',103,4);INSERT INTO Course VALUES(4,'C语言程序设计',101,2);3)向表插入下列数据:1001,1,801001,2,851001,3,781002,1,781002,2,821002,3,861003,1,921003,3,901004,1,871004,4,901005,1,851005,4,92插入数据代码如下INSERT INTO SC VALUES(1001,1,80);INSERT INTO SC VALUES(1001,2,85);INSERT INTO SC VALUES(1001,3,78);INSERT INTO SC VALUES(1002,1,78);INSERT INTO SC VALUES(1002,2,82);INSERT INTO SC VALUES(1002,3,86);INSERT INTO SC VALUES(1003,1,92);INSERT INTO SC VALUES(1003,3,90);INSERT INTO SC VALUES(1004,1,87);INSERT INTO SC VALUES(1004,4,90);INSERT INTO SC VALUES(1005,1,85);INSERT INTO SC VALUES(1005,4,92);4)向Teacher表中插入下列数据:101,张星,10102,李珊,10103,赵天应,10104,刘田,20插入数据代码如下INSERT INTO Teacher VALUES(101,’张星‘,10);INSERT INTO Teacher VALUES(102,’李珊‘,10);INSERT INTO Teacher VALUES(103,’赵天应‘,10);INSERT INTO Teacher VALUES(104,’刘田‘,20);5)向Dept表中插入下列数据:10,计算机科学与技术20,信息INSERT INTO Dept VALUES(10,’计算机科学与技术‘);INSERT INTO Dept VALUES(20,’信息‘);2.修改数据将张星老师“数据结构”课程的学生成绩全部加2分。

UPDATE SCSET GRADE=GRADE+2WHERE CNO IN(ESLECT CNOFROM Course,TeacherWHERE Course.TNO=Teacher.TNOAND Teacher.TNAME=‘张星’);3.删除数据删除马朝阳同学的所有选课记录。

DELETE FROM SCWHERE SNO IN(SELECT SNOFROM StudentWHERE SNAME=‘马朝阳’);二、查询操作1.单表查询1)查询所有学生的信息。

SELECT *FROM Student;结果:1001 黄忱男 20 101002 李倩女 21 101003 陈铭男 21 101004 刘英女 21 201005 马朝阳男 22 202)查询所有女生的姓名。

SELECT SNAMEFROM StudentWHERE SEX=‘女’;结果:李倩刘英3)查询成绩在80~89分之间的所有学生的选课记录,查询结构按照成绩的降序排列。

SELECT *FROM SCWHERE GRADE>=80 AND GRADE<=89ORDER BY GRADE DESC;结果:1004 1 871002 3 861001 2 851005 1 851002 2 821001 1 804)查询各个系的学生人数。

SELECT DEPTNO,count(SNO)FROM StudentGROUP BY DEPTNO;结果:10 30 22.连接查询查询信息系年龄在21岁以下的女生的姓名及年龄。

SELECT SNAME,AGEFROM Student,DeptWHERE Student.DEPTNO=Dept.DEPTNOAND Dept.DNAME=‘信息’AND AGE<=21AND SEX=‘女’;结果:刘英 213.嵌套查询1)查询选修课总学分在10学分以下的学生的姓名。

SELECT SNAMEFROM StudentWHERE SNO IN(SELECT SNOFROM SC,CourseWHERE O=OGROUP BY SNOHAVING SUM(CREDIT)<10);结果:陈铭段韬马朝阳2)查询各门课程的最高成绩的学生的姓名及其成绩。

SELECT CNO,SNAME,GRADEFROM Student,SC SCXWHERE Student.SNO=SCX.SNO AND SCX.GRADE IN (SELECT MAX(GRADE)FROM SC SCYWHERE O=OGROUP BY CNO);结果:1 陈铭 922 张天 853 陈铭 904 马朝阳 923)查询选修了1001号学生所选修的全部课程的学生的学号。

SELECT SNOFROM StudentWHERE NOT EXISTS(SELECT *FROM SC SCXWHERE SCX.SNO=1001 AND NOT EXISTS(SELECT *FROM SC SCYWHERE SCY.SNO=Student.SNO AND O=O));结果:100110024) 查询选修了张星老师所开设的全部课程的学生的姓名。

相关主题