数据库实验报告一.实验目的运用所学知识设计并实现一个最小应用系统,初步了解数据库系统的开发过程,积累实际开发经验,为进一步的提高打下必备的基础二.实验内容实验一1.建立数据库”选课信息”2.在数据库中建立以下三张表学生表(学号,姓名,性别,院系)课程表(课程号,课程名,考试方式)选课表(选课号,学号,课程号,成绩)3.在JManager中直接插入、修改、删除记录4.对所建立的三张表定义完整性约束及外键约束5.采用 insert语句插入新记录6.采用update语句修改元组信息7.采用delete语句删除记录实验二1.采用sql语句完成对单表的简单查询2.采用sql语句完成对单表的组合查询,适当引入集函数3.采用sql语句完成对两表的简单联合查询4.采用sql语句完成对三表的简单联合查询5.定义视图并执行简单的查询操作三. 实验过程首先创建一个新数据库命名为CW,创建一个新用户,并且将CW的权限赋予给新用户user1CREATE DATABASE cw DATAFILE 'cw.dbf' SIZE 128;CREATE LOGIN USER1 IDENTIFIED BY USER11;CREATE USER user1 AT cw;ALTER USER er1 RELATED BY user1;GRANT RESOURCE TO user1 AT cw;实验一创建用户表STU,其中约束条件:学号SNO为主码,性别SEX默认为男CREATE TABLE STU(SNO VARCHAR(10) NOT NULL PRIMARY KEY,SEX VARCHAR(2) NOT NULL DEFAULT '男',DEP VARCHAR(20) NOT NULL,NAME VARCHAR(10))创建成绩表,其中约束条件:考试方式FANGSHI默认为闭卷,课程号CNO为主码CREATE TABLE COURSE(CNO VARCHAR(10) NOT NULL PRIMARY KEY,CNAME VARCHAR(20) NOT NULL,FANGSHI VARCHAR(4) DEFAULT '闭卷')创建选课表,其中约束条件:SNO,CNO为外码,成绩SCORE在0-100之间CREATE TABLE SELECTCOURSE(SCNO VARCHAR(10) NOT NULL,SNO VARCHAR(10) NOT NULL ,CNO VARCHAR(10) NOT NULL,SCORE INT DEFAULT 0,CHECK(SCORE>0 AND SCORE<101),FOREIGN KEY(SNO) REFERENCES STU(SNO),FOREIGN KEY(CNO) REFERENCES COURSE(CNO))--DROP TABLE COURSE向学生表中插入四条数据INSERT INTO STU (SNO,SEX,DEP,NAME)VALUES('2005001','男','计算机','张三') INSERT INTO STU VALUES('2005002','男','自控','李四')INSERT INTO STU VALUES('2005003','女','计算机','王五')INSERT INTO STU VALUES('2005004','男','机械','赵六')向课程表中插入四条数据INSERT INTO COURSE VALUES('kc1','组成原理','闭卷')INSERT INTO COURSE VALUES('kc2','数据库','开卷')INSERT INTO COURSE VALUES('kc3','数据结构','闭卷')INSERT INTO COURSE VALUES('kc4','马哲','开卷')向选课表中插入数据INSERT INTO SELECTCOURSE VALUES('xk01','2005001','kc2',86)INSERT INTO SELECTCOURSE VALUES('xk02','2005002','kc1',72)INSERT INTO SELECTCOURSE VALUES('xk03','2005004','kc4',59)INSERT INTO SELECTCOURSE VALUES('xkc04','2005003','kc2',65)INSERT INTO SELECTCOURSE VALUES('xk05','2005001','kc3',82)INSERT INTO SELECTCOURSE VALUES('xk06','2005002','kc1',97)INSERT INTO SELECTCOURSE VALUES('xk07','2005003','kc3',100)INSERT INTO SELECTCOURSE VALUES('xk08','2005004','kc4',65)INSERT INTO SELECTCOURSE VALUES('xk09','2005001','kc2',75)INSERT INTO SELECTCOURSE VALUES('xk10','2005002','kc2',54)修改张平的信息UPDATE STU SET NAME='张平' WHERE SNO='2005001' 插入一条新记录INSERT INTO STU VALUES('2005005','女','计算机','钱五') 删除一条记录DELETE FROM STU WHERE NAME='钱五'以下分贝是执行后的数据库中的结果向成绩表中插入一条新记录INSERT INTO COURSE VALUES('kc6','高等数学','开卷')更新一条记录UPDATE COURSE SET FANGSHI='闭卷' WHERE CNO='kc6' 删除课程号为KC6的那条记录DELETE FROM COURSE WHERE CNO='kc6'执行后结果如下:实验二选择一条记录,课程名为组成原理SELECT CNO FROM COURSE WHERE CNAME='组成原理'筛选成绩大于80分的记录,显示学号和课程号SELECT SNO,CNO FROM SELECTCOURSE WHERE SCORE>80计算成绩及格的学生的平均成绩SELECT AVG(SCORE)AS PINGJUN FROM SELECTCOURSE WHERE SCORE>60筛选出成绩及格而且课程号为KC3的同学SELECT SNO FROM SELECTCOURSE WHERE SCORE>60 AND CNO='kc3'筛选出选择了课程KC2的人数SELECT COUNT(*)FROM SELECTCOURSE WHERE CNO='kc2'连接查询课程号为KC1的学生姓名SELECT DISTINCT NAME FROM STU,SELECTCOURSE WHERESTU.SNO=SELECTCOURSE.SNO AND CNO='kc1'选择不及格的学生,得到其名字SELECT NAME FROM STU,SELECTCOURSE WHERE SCORE<60 ANDSTU.SNO=SELECTCOURSE.SNO查询选修了考试方式为开卷的课程的学生的个人信息SELECT DISTINCT STU.*FROM STU,SELECTCOURSE,COURSE WHERECOURSE.FANGSHI='开卷'AND STU.SNO=SELECTCOURSE.SNO ANDO=O创建一个视图CREATE VIEW NEWVIEW AS SELECTSCNO,NAME,DEP,O,FANGSHI,SCORE FROMSTU,COURSE,SELECTCOURSE WHERE O=O ANDSELECTCOURSE.SNO=STU.SNO-SELECT*FROM NEWVIEW查询成绩不及格的学生姓名及所选课程名SELECT NAME,CNO FROM NEWVIEW WHERE SCORE<60四.实验心得做完实验,总算对达梦数据库有了一个初步的认识,因为原先都是用的是sql server进行开发,所以做了一个简单的对比,觉得达梦数据库在稳定性和性能方面还是需要做很大的提高,同时达梦数据库给人的感觉是没有那种大气,给人的感觉就是不够专业.因为做过相关方面的数据库开发,所以这次实验还是相当的简单,也没有自己做一个系统,直接就按照PPT操作了一遍,达梦数据库还是给国人很大的信心,相信很多有识之士都应该投入到这个国人自己的数据库开发中去,为民族企业的崛起贡献自己的力量!。