数据库原理及应用实验报告
数据库原理及应用实验报告
学院:信息科学与工程学院 班级:计算机2010-1班
学号:3100717109 姓名:薛斌
————————————————————————————————————————
时间: 20xx年5月 机房号: 05503J 得分:
实验1 创建数据库与数据表
实验目的:
1.熟悉SQL SERVER环境;
2.掌握数据库和数据表的创建和删除,实践SQL的CREATE、ALTER和DROP命令;
3.掌握数据表的创建和数据记录的插入方法。
实验内容:
2.创建供应系统“GYXT”数据库。(注:可采用可视窗体和SQL命令两种方法创建。) 下面写出实现如下操作的SQL语句:
(1) 创建供应系统“GYXT”数据库。
CREATE DATABASE GYXT;
(2) 建立供应商表S。
CREATE TABLE S
(
SNO CHAR(4) PRIMARY KEY,
SNAME VARCHAR(20) ,
CITY VARCHAR(20));
(3) 建立零件表P。
CREATE TABLE P
(
PNO CHAR(4) PRIMARY KEY,
PNAME VARCHAR(20) ,
COLOR VARCHAR(4) ,
WEIGHT SMALLINT);
(4) 建立工程项目表J。
CREATE TABLE J
(
JNO CHAR(4) PRIMARY KEY,
JNAME VARCHAR(20),
CITY VARCHAR(20) );
数据库原理及应用实验报告
(5) 建立供应情况表SPJ。
CREATE TABLE SPJ
(
SNO CHAR(4) NOT NULL,
PNO CHAR(4) NOT NULL,
JNO CHAR(4) NOT NULL,
QTY INT,
PRIMARY KEY(SNO,PNO,JNO),
FOREIGN KEY (SNO) REFERENCES S (SNO),
FOREIGN KEY (PNO) REFERENCES P (PNO),
FOREIGN KEY (JNO) REFERENCES J (JNO));
(6) 应用INSERT INTO命令将相应数据写入到供应商表S、零件表P、工程项目表J和供应情况表SPJ四个数据表。
INSERT INTO S VALUES ('S1','精益','天津');
INSERT INTO S VALUES ('S2','万胜','北京');
INSERT INTO S VALUES ('S3','东方','北京');
INSERT INTO S VALUES ('S4','丰泰隆','上海');
INSERT INTO S VALUES ('S5','康健','南京');
INSERT INTO P VALUES('P1','螺母','红',12);
INSERT INTO P VALUES('P2','螺栓','绿',17);
INSERT INTO P VALUES('P3','螺丝刀','蓝',14);
INSERT INTO P VALUES('P4','螺丝刀','红',14);
INSERT INTO P VALUES('P5','凸轮','蓝',40);
INSERT INTO P VALUES('P6','齿轮','红',30);
INSERT INTO J VALUES('J1','三建','北京');
INSERT INTO J VALUES('J2','一汽','长春');
INSERT INTO J VALUES('J3','弹簧厂','天津');
INSERT INTO J VALUES('J4','造船厂','天津');
INSERT INTO J VALUES('J5','机车厂','唐山');
INSERT INTO J VALUES('J6','无线电厂','常州');
INSERT INTO J VALUES('J7','半导体厂','南京');
第 1页 ,共11页
数据库原理及应用实验报告
INSERT INTO SPJ VALUES ('S1','P1','J1',200); INSERT INTO SPJ VALUES ('S1','P1','J3',100); INSERT INTO SPJ VALUES ('S1','P1','J4',700); INSERT INTO SPJ VALUES ('S1','P2','J2',100); INSERT INTO SPJ VALUES ('S2','P3','J1',400); INSERT INTO SPJ VALUES ('S2','P3','J2',200); INSERT INTO SPJ VALUES ('S2','P3','J4',500); INSERT INTO SPJ VALUES ('S2','P3','J5',400); INSERT INTO SPJ VALUES ('S2','P5','J1',400); INSERT INTO SPJ VALUES ('S2','P5','J2',100); INSERT INTO SPJ VALUES ('S3','P1','J1',200); INSERT INTO SPJ VALUES ('S3','P3','J1',200); INSERT INTO SPJ VALUES ('S4','P5','J1',100); INSERT INTO SPJ VALUES ('S4','P6','J3',300); INSERT INTO SPJ VALUES ('S4','P6','J4',200); INSERT INTO SPJ VALUES ('S5','P2','J4',100); INSERT INTO SPJ VALUES ('S5','P3','J1',200); INSERT INTO SPJ VALUES ('S5','P6','J2',200); INSERT INTO SPJ VALUES ('S5','P6','J4',500);
第 2页 ,共11页
数据库原理及应用实验报告
时间: 20xx年5月 机房号: 05503J 得分:
实验2 简单查询和连接查询
实验目的:
1.熟练掌握SQL Server查询分析器的使用方法,加深对标准SQL查询语句的理解。
2.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
实验内容:
1.基于实验一创建的教学管理JXGL数据库,实现数据的基本查询操作。
2.基于实验一创建的供应系统GYXT数据库,实现数据的基本查询操作。
实验步骤:
写出下列操作的SQL语句。
1.在教学管理JXGL数据库中进行如下操作:
(1) 求数学系学生的学号和姓名。
SELECT Sno,Sname
FROM STUDENT
WHERE Sdept='MA';
(2) 求选修了课程的学生学号。
SELECT Sno
FROM SC;
(3) 求选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
SELECT SC.Sno,SC.Grade
FROM SC,COURSE
WHERE SC.Cno=COURSE.Cno AND COURSE.Cname='数学'
ORDER BY Grade DESC,Sno;
(4) 求选修数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。
SELECT SC.Sno,SC.Grade*0.8
FROM SC,COURSE
WHERE SC.Cno=COURSE.Cno AND Cname='数学'
AND (Grade BETWEEN 80 AND 90);
(5) 求数学系或计算机系姓刘的学生的信息。
SELECT *
FROM STUDENT
WHERE Sname LIKE '刘%' AND (Sdept='MA' OR Sdept='CS');
第 3页 ,共11页
数据库原理及应用实验报告
(6) 求缺少了成绩的学生的学号和课程号。
SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL;
(7) 查询每个学生的情况以及他(她)所选修的课程。
SELECT STUDENT.Sno,Sname,Ssex,Sage,Sdept,COURSE.Cname FROM STUDENT,COURSE,SC
WHERE STUDENT.Sno=SC.Sno AND SC.Cno=COURSE.Cno;
(8) 求学生的学号、姓名、选修的课程名及成绩。
SELECT STUDENT.Sno,Sname,COURSE.Cname,Grade
FROM STUDENT,COURSE,SC
WHERE STUDENT.Sno=SC.Sno AND COURSE.Cno=SC.Cno;
(9) 求选修数学课且成绩为90分以上的学生学号、姓名、及成绩。 SELECT STUDENT.Sno,Sname,Grade
FROM STUDENT,COURSE,SC
WHERE STUDENT.Sno=SC.Sno AND COURSE.Cno=SC.Cno
AND COURSE.Cname='数学' AND Grade>90;
(10)查询每一门课的间接先行课(即先行课的先行课)。
SELECT COURSE.Cpno
FROM COURSE
WHERE COURSE.Cno IN
(SELECT Cpno
FROM COURSE);
第 4页 ,共11页
数据库原理及应用实验报告
2.在供应系统GYXT数据库中进行如下操作:
(1) 求供应工程J1零件的供应商号SNO。 SELECT SNO
FROM SPJ
WHERE JNO='J1';
(2) 求供应工程J1零件P1的供应商号SNO。 SELECT SNO
FROM SPJ
WHERE JNO='J1' AND PNO='P1';
(3) 统计每种零件的供应总量。
SELECT PNO,SUM(QTY)
FROM SPJ
GROUP BY PNO;
第 5页 ,共11页
数据库原理及应用实验报告
时间: 20xx年5月 机房号: 05503J 得分:
实验3 嵌套查询和集合查询
实验目的:
1.熟练掌握SQL Server查询分析器的使用方法,加深对标准SQL查询语句的理解。
2.熟练掌握数据查询中的嵌套、分组、统计、计算和组合的操作方法。
实验内容:
1.基于实验一创建的教学管理JXGL数据库,实现数据的高级查询操作。
2.基于实验一创建的供应系统GYXT数据库,实现数据的基本查询操作。
实验步骤:
写出下列操作的SQL语句。
1.在教学管理JXGL数据库中进行如下操作:
(1) 求选修了数学的学生的学号和姓名。
SELECT STUDENT.Sno,STUDENT.Sname
FROM STUDENT
WHERE STUDENT.Sno IN
(SELECT SC.Sno
FROM SC
WHERE SC.Cno IN
(SELECT COURSE.Cno
FROM COURSE
WHERE COURSE.Cname='数学'));
(2) 求数学课程成绩高于李勇的学生学号和成绩。
SELECT SC.Sno,SC.Grade
FROM SC,COURSE
WHERE SC.Cno=COURSE.Cno AND COURSE.Cname='数学'
AND SC.Grade > ( SELECT SC.Grade
FROM SC,STUDENT,COURSE
WHERE STUDENT.Sname='李勇' AND SC.Sno=STUDENT.Sno AND COURSE.Cname='数学' AND COURSE.Cno=SC.Cno);
(3) 求其他系中年龄小于计算机系年龄最大者的学生。
SELECT STUDENT.Sno,STUDENT.Sname,STUDENT.Sage
FROM STUDENT
WHERE STUDENT.Sdept!='MA' AND Sage<
(SELECT MAX(Sage)
FROM STUDENT AS X
WHERE X.Sdept='MA');
第 6页 ,共11页
数据库原理及应用实验报告
(4) 求其他系中比计算机系学生年龄都小的学生。
SELECT STUDENT.Sno,STUDENT.Sname,STUDENT.Sage
FROM STUDENT
WHERE STUDENT.Sdept!='CS' AND STUDENT.Sage <
(SELECT MIN(Sage)
FROM STUDENT AS X
WHERE X.Sdept='CS');
(5) 求选修了数学课的学生姓名。
SELECT STUDENT.Sname
FROM STUDENT
WHERE STUDENT.Sno IN
(SELECT SC.Sno
FROM SC
WHERE SC.Cno IN
(SELECT COURSE.Cno
FROM COURSE
WHERE COURSE.Cname='数学' ));
(6) 求没有选修数学课的学生姓名。
SELECT STUDENT.Sname
FROM STUDENT
WHERE STUDENT.Sno NOT IN
(SELECT SC.Sno
FROM SC
WHERE SC.Cno IN
(SELECT COURSE.Cno
FROM COURSE
WHERE COURSE.Cname='数学'));
(7) 查询选修了全部课程的学生的姓名。
SELECT STUDENT.Sname
FROM STUDENT
WHERE STUDENT.Sno IN
(SELECT SC.Sno
FROM SC
GROUP BY SC.Sno
HAVING COUNT(*)=(SELECT COUNT(*) FROM COURSE));
第 7页 ,共11页
数据库原理及应用实验报告
(8) 求至少选修了学号为“95002”的学生所选修的全部课程的学生学号和姓名。 SELECT DISTINCT X.Sno
FROM SC X
WHERE NOT EXISTS(SELECT *FROM SC Y where Y.Sno='95002'
AND NOT EXISTS
(SELECT *FROM SC Z where Z.Sno=X.Sno and Z.Cno=Y.Cno));
(9) 求选修各门课的人数及平均成绩。
SELECT COUNT(*)AS 选修门课的人数,AVG(SC.Grade) AS 平均分
FROM SC
GROUP BY SC.Cno;
(10)求选修课程在2门以上且都及格的学生号及总平均分。
SELECT SC.Sno,AVG(SC.Grade) AS 平均分
FROM SC
GROUP BY SC.Sno
HAVING COUNT(*)>2 AND MIN(SC.Grade)>=60;
(11)求95级学生中选修课程在2门以上且都及格的学生号及总平均分,并按平均成绩排序。
SELECT SC.Sno,AVG(SC.Grade) AS 平均分
FROM SC
GROUP BY SC.Sno
HAVING COUNT(*)>2 AND MIN(SC.Grade)>=60
ORDER BY AVG(Grade);
(12)统计每个人及格的成绩的平均值,及格的门数,结果按平均成绩降序,及格门数降序排列。
SELECT SC.Sno,AVG(SC.Grade) AS 平均成绩,COUNT(*) AS 及格门数
FROM SC
WHERE SC.Grade>=60
GROUP BY SC.Sno
ORDER BY AVG(SC.Grade) DESC,COUNT(*) DESC;
第 8页 ,共11页
数据库原理及应用实验报告
(13)统计所有课程均及格学生的平均成绩,及格的门数,结果按平均成绩降序,及格门数降序排列。
SELECT SC.Sno,AVG(SC.Grade),COUNT(*)
FROM SC
GROUP BY SC.Sno
HAVING MIN(SC.Grade)>=60
ORDER BY AVG(SC.Grade) DESC,COUNT(*) DESC;
2.在供应系统GYXT数据库中进行如下操作:
(1) 求供应工程J1红色零件的供应商号SNO。
SELECT SNO
FROM SPJ
WHERE PNO IN
(SELECT P.PNO
FROM P
WHERE P.COLOR='红');
(2) 求零件供应总量在1000种以上的供应商名字。
SELECT S.SNAME
FROM S
WHERE S.SNO IN
(SELECT SPJ.SNO
FROM SPJ
GROUP BY SPJ.SNO
HAVING SUM(SPJ.QTY)>1000 );
第 9页 ,共11页
数据库原理及应用实验报告
时间: 20xx年6月 机房号: 05503J 得分:
实验4 数据完整性
实验目的:
1. 了解SQL Server用约束来维护数据完整性的机制。
2.掌握在企业管理器和查询分析器中如何创建、使用及删除约束的方法。 实验内容:
2.创建人事关系RSGX数据库,并定义职工和部门两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码;
要求在模式中完成以下完整性约束条件的定义:
(1) 定义每个模式的主码;
CREATE DATABASE RSGX;
CREATE TABLE STAFF
(Sno CHAR(10) PRIMARY KEY,
Sname VARCHAR(20),
Sage SMALLINT,
Sposition VARCHAR(20),
Swage int,
Sdeptno CHAR(10));
CREATE TABLE DEPARTMENT
(Deptno CHAR(10) PRIMARY KEY,
Deptname VARCHAR(20),
Managername VARCHAR(20),
Dphonenumber int);
(2) 定义参照完整性;
ALTER TABLE STAFF
ADD FOREIGN KEY (Sdeptno) REFERENCES DEPARTMENT (Deptno);
(3) 定义职工年龄不得超过60岁。
ALTER TABLE STAFF ADD CHECK (Sage<60);
第 10页 ,共11页
华北科技学院计算机学院综合性实验实验报告课程名称数据库原理与应用D实验学期20xx至20xx学年第2学期学生所在院部计算机学院年级…
数据库原理及应用实验报告数据库原理及应用实验报告学院信息科学与工程学院班级计算机20xx1班学号3100717109姓名薛斌时间2…
实验成绩数据库系统原理及应用实验报告三专业班级计科卓1101学号20xx16910233姓名范晓曈指导教师苏小玲20xx年10月2…
南京晓庄学院数据库原理与应用课程实验报告实验二数据库的创建管理备份及还原实验所在院系数学与信息技术学院班级学号姓名1实验目的1掌握…
实验成绩数据库系统原理及应用实验报告三专业班级计科卓1101学号20xx16910233姓名范晓曈指导教师苏小玲20xx年10月2…
河南省高等教育自学考试实验报告册计算机及应用专业本科段数据库原理姓名实验地点实验日期实验总成绩指导教师签名实验单位实验室意见主考院…