《数据库系统概论》
实验报告书
专业班级 学 号 姓 名 指导教师
安徽工业大学计算机科学与技术学院
计算机科学与技术
129074107 张明超 戴小平
《数据库系统概论》实验报告书 安徽工业大学计算机科学与技术学院
实验一:数据定义语言
[ 实验日期 ] 2014年 10 月 19 日 [ 实验目的 ]
熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引。 [ 实验内容 ]
Oracle上机环境以及Oracle客户端的配置参见附录。 1. SQL数据定义语句:
例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。
例1-2: (修改数据库表) 在Student表中增加SEX(C,2) 字段。 例1-3: (修改列名) 将Student表中列名SEX修改为SSEX。
例1-4: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。 例1-5: (建立索引) 为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE。 例1-6: (删除索引) 删除索引SC_GRADE。
例1-7: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。
例1-8: (修改数据库表) 删除成绩表Score的参照完整性约束关系。 例1-9: (修改数据库表) 添加成绩表Score的参照完整性约束关系。 例1-10: (修改数据库表名) 将数据库表S1改名为Student_Temp。 [ 实验要求 ]
① 熟悉Oracle上机环境,掌握Oracle客户端的配置; ② 建立数据库表,修改数据库表结构,建立、删除索引; [ 实验方法 ]
① 按照附录中的操作步骤进行客户端的配置; ② 将实验需求用SQL语句表示; ③ 执行SQL语句;
④ 查看执行结果,如果结果不正确,进行修改,直到正确为止。
[ 实验总结 ]
① SQL语句以及执行结果;
例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。 create table Student ( SNO CHAR(5), SNAME CHAR(8), SDEPT CHAR(2) NOT NULL,
1/19
《数据库系统概论》实验报告书 安徽工业大学计算机科学与技术学院
);
SCLASS CHAR(2) SAGE NUMBER(2),
NOT NULL,
CONSTRAINT SNO_pk PRIMARY KEY(SNO)
create table Course ( CNO CHAR(3) , CNAME CHAR(16) NOT NULL, CTIME NUMBER(3) NUT NULL , CONSTRAINT CNO_pk PRIMARY KEY(CNO) );
create table Teach ( TNAME CHAR(8), TSEX CHAR(2) NOT NULL, CNO CHAR(3), TDATE DATE NOT NULL, TDEPT CHAR(2), CONSTRAINT T_ck CHECK(TSEX IN('男','女')), CONSTRAINT T_pk PRIMARY KEY(TNAME,CNO,TDEPT), CONSTRAINT T_fk FOREIGN KEY(CNO) REFERENCES Course(CNO) );
create table Score ( SNO CHAR(5), CNO CHAR(3), SCORE NUMBER(5,2), CONSTRAINT S_pk PRIMARY KEY(SNO,CNO), CONSTRAINT S_fks FOREIGN KEY(SNO) REFERENCES Student(SNO), CONSTRAINT S_fkc FOREIGN KEY(CNO) REFERENCES Course(CNO)
2/19
《数据库系统概论》实验报告书 安徽工业大学计算机科学与技术学院
);
例1-2: (修改数据库表) 在Student表中增加SEX(C,2) 字段。 alter table Student add SEX CHAR(2) CHECK(SEX IN('男','女'));
例1-3: (修改列名) 将Student表中列名SEX修改为SSEX。 alter table Student rename column SEX to SSEX;
例1-4: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。 alter table Student modify (SNAME CHAR(10) NOT NULL);
例1-5: (建立索引) 为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE。 create index SC_GRADE on SCORE (SNO ASC,SCORE DESC);
3/19
《数据库系统概论》实验报告书 安徽工业大学计算机科学与技术学院
例1-6: (删除索引) 删除索引SC_GRADE。 drop index SC_GRADE;
例1-7: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。 create table S1 ( SNO CHAR(5), SNAME CHAR(10) NOT NULL, SD CHAR(2) NOT NULL, SA NUMBER(2), CONSTRAINT ST_pk PRIMARY KEY(SNO) );
例1-8: (修改数据库表) 删除成绩表Score的参照完整性约束关系。 alter table Score drop constraint S_fks; alter table Score drop constraint S_fkc;
例1-9: (修改数据库表) 添加成绩表Score的参照完整性约束关系。
alter table Score add constraint S_fks foreign key(SNO) references Student(SNO); alter table Score add constraint S_fkc foreign key(CNO) references Course(CNO);
4/19