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

数据库实验报告

《数据库系统概论》实验报告书专业班级软件学号********姓名哈哈指导教师陈业斌安徽工业大学计算机学院实验一:数据定义/数据操纵语言[ 实验日期 ] 2016 年 9 月 24 日[ 实验目的 ]熟悉Oracle上机环境;熟练掌握和使用DDL语言,建立、修改和删除数据库表;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。

[ 实验内容 ]1.SQL数据定义语句:例1-1: (建立如附录一所示的四张数据表) 按要求建立教学数据库表结构及其完整性约束关系,并将数据分别插入到教学数据库的四个数据库表中。

例1-2: (修改表结构) 在Student表中将SSEX字段修改为char(2),观察返回结果,分析原因。

显示:alter table STUDENT modify (SSEX char(2))错误报告 -SQL 错误: ORA-01441: 无法减小列长度, 因为一些值过大01441. 00000 - "cannot decrease column length because some value is too big"例1-3: (修改表结构) 在Student表中增加BirthDay(date) 字段。

alter table STUDENT add BirthDay DATE;例1-4: (修改表结构) 在Student表中删除BirthDay字段。

alter table STUDENT drop column BirthDay;例1-5: (修改表结构) 在Student表中增加一个默认值约束,约束’性别’的默认值为’男’。

alter table STUDENT modify (SSEX default '男');2. SQL数据操纵语句:例2-1: (插入数据) 执行如下语句向student表中插入一条数据。

insert into student(sno,sname,sdept) values('96001','张三','SC');(1)根据返回信息解释其原因;显示:在行: 5 上开始执行命令时出错 -insert into student(sno,sname,sdept) values('96001','张三','SC')错误报告 -SQL 错误: ORA-01400: 无法将 NULL 插入 ("STU"."STUDENT"."SCLASS")01400. 00000 - "cannot insert NULL into (%s)"原因:在定义表结构时已将SCLASS约束为NOT NULL。

并且学号是主键,表里已经有学号为96001的学生,违反了主键的唯一性约束条件。

(2)修改上面插入语句,让其能正确地插入一条记录。

正确的为:insert into student(sno,sname,sdept,sclass) values('97006','张三','SC','02');例2-2:(插入数据) 执行如下语句向Score表中插入一条数据。

insert into Score values('96006','001',85);(1)根据返回信息解释其原因;显示:在行: 6 上开始执行命令时出错 -insert into Score values('96006','001',85)错误报告 -SQL 错误: ORA-02291: 违反完整约束条件 (STU.FK_STUDENT_SCORE) - 未找到父项关键字02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"原因:在表SCORE中,sno作为其外键,在表STUDENT中学号为96006的学生,所以自然插不进去。

(2)修改上面插入语句,让其能正确地插入一条记录。

修改为:insert into Score values('96002','002',85);例2-3: (修改数据) 将Student表中所有学生的年龄加2。

update STUDENT set SAGE=SAGE+2;例2-4: (修改数据) 将Course表中‘程序设计’课时数修改成50。

update COURSE set CTIME=50 where CNAME='程序设计';例2-5: (修改数据) 将Student表中的学号’96001’改为‘96010’,根据返回信息解释其原因。

update STUDENT set SNO='96010' where SNO='96001';显示:在行: 10 上开始执行命令时出错 -update STUDENT set SNO='96010' where SNO='96001'错误报告 -SQL 错误: ORA-02292: 违反完整约束条件 (STU.FK_STUDENT_SCORE) - 已找到子记录02292. 00000 - "integrity constraint (%s.%s) violated - child record found"原因:学号为96001的学生已经出现在成绩表SCORE中,不可更改例2-6: (删除数据) 删除Student表中学号为‘96001’的成绩信息,根据返回信息解释其原因。

delete from STUDENT where sno='96001';显示:在行: 11 上开始执行命令时出错 -delete from STUDENT where sno='96001'错误报告 -SQL 错误: ORA-02292: 违反完整约束条件 (STU.FK_STUDENT_SCORE) - 已找到子记录02292. 00000 - "integrity constraint (%s.%s) violated - child record found"原因:在表SCORE中已经有学号为96001的成绩记录。

例2-7: (创建表) 利用Student表的查询结果创建Sc表,表中记录与Student表相同。

create table Scasselect * from STUDENT;例2-8: (删除数据) 删除Sc表中性别为’男’的所有学生。

delete from Sc where SSEX='男';例2-9: (删除数据) 删除数据库表Sc中所有学生的数据。

truncate table Sc;例2-10: (删除表) 删除数据库表Sc。

drop table Sc;[ 实验要求 ]①熟悉SQL Server上机环境;②建立数据库表,修改数据库表结构;③对数据库表进行插入、修改和删除数据的操作。

[ 实验方法 ]①执行SQL语句;②将实验需求用SQL语句表示;③查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]① SQL语句以及执行结果;②对重点实验结果进行分析;③实验中的问题和提高;④收获与体会。

附录一. 教学管理数据库设计各表的数据结构和数据如下:1. 学生情况表 Student主关键字:SNO 非空字段:SNAME ,SDEPT ,SCLASS2. 课程名称表 Course 3. 教师授课表 Teach主关键字:CNO 候选关键字:CNAME 主关键字:TNAME ,CNO ,TDEPT 参照关系:Course(CNO)4. 成绩表 Score主关键字:SNO ,CNO 参照关系:Student(SNO),Course(CNO)IS :信息系CS :计算机系 MA :数学系附录二:《数据库概论》实验操作指导创建一个新的方案:SHIYAN在方案中建立基本数据表的SQL1.建立学生表。

create table Student( SNO char(5) primary key,SNAME varchar2(20) not null,SDEPT char(2) not null,SCLASS char(2) not null,SSEX char(3),SAGE number(2,0));insert into Student values('96001','马小燕','CS','01','女',21); insert into Student values('96002','黎明','CS','01','男',18); insert into Student values('96003','刘东明','MA','01','男',18); insert into Student values('96004','赵志勇','IS','02','男',20); insert into Student values('97001','马蓉','MA','02','女',19); insert into Student values('97002','李成功','CS','01','男',20); insert into Student values('97003','黎明','IS','03','女',19); insert into Student values('97004','李丽','CS','02','女',19); insert into Student values('96005','司马志明','CS','02','男',18); commit;2.建立课程表create table Course(CNO char(3) primary key,CNAME varchar2(50),CTIME number(3,0));insert into COURSE values('001','数学分析',144);insert into COURSE values('002','普通物理',144);insert into COURSE values('003','微机原理',80);insert into COURSE values('004','数据结构',72);insert into COURSE values('005','操作系统',80);insert into COURSE values('006','数据库原理',80);insert into COURSE values('007','编译原理',60);insert into COURSE values('008','程序设计',40);commit;3.建立教师表create table Teach(TNAME VARCHAR2(20),TSEX CHAR(3),CNO CHAR(3),TDATE date,TDEPT CHAR(2),CONSTRAINT PK_STUDENT PRIMARY KEY(TNAME,CNO,TDEPT),CONSTRAINT FK_C_T FOREIGN KEY (CNO ) REFERENCES Course(CNO));insert into TEACH values('王成刚','男','004','9-5月-99','CS');insert into TEACH values('李正科','男','003','09-5月-99','CS');insert into TEACH values('严敏','女','001','09-5月-99','MA');insert into TEACH values('赵高','男','004','09-5月-99','MA');insert into TEACH values('刘玉兰','女','006','23/2月/00','CS');insert into TEACH values('王成刚','男','004','23/2月/00','IS');insert into TEACH values('马悦','女','008','6/9月/00','CS');COMMIT;4.建立成绩表create table Score(sno char(5),cno char(3),Score number(4,1),CONSTRAINT PK_Score primary key(sno,cno),CONSTRAINT FK_Student_Score FOREIGN KEY (sno ) REFERENCES student(sno),CONSTRAINT FK_Sourse_Score FOREIGN KEY (cno) REFERENCES Course(cno) );insert into Score values('96001','001',77.5);insert into Score values('96001','003',89);insert into Score values('96001','004',86);insert into Score values('96001','005',82);insert into Score values('96002','001',88);insert into Score values('96002','003',92.5);insert into Score values('96002','006',90);insert into Score values('96005','004',92);insert into Score values('96005','005',90);insert into Score values('96005','006',89);insert into Score values('96005','007',78);insert into Score values('96003','001',69);insert into Score values('97001','001',96);insert into Score values('97001','008',95);insert into Score values('96004','001',87);insert into Score values('96003','003',91);insert into Score values('97002','003',91);insert into Score values('97002','004', null);insert into Score values('97002','006',92);insert into Score values('97004','005',90);insert into Score values('97004','006',85);COMMIT;实验二:数据查询语言[ 实验日期 ] 年月日[ 实验目的 ]体会SQL语言数据查询功能的丰富和复杂。

相关主题