600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 创建选修专业表oracle 数据库及数据表的创建与删除 (Oracle实验)

创建选修专业表oracle 数据库及数据表的创建与删除 (Oracle实验)

时间:2019-03-29 04:01:47

相关推荐

创建选修专业表oracle 数据库及数据表的创建与删除 (Oracle实验)

实验目的

在数据库中,基本表用于存储数据;视图是虚表,在数据库中只存储视图定义(物化视图除外),通过视图可以查询、更新基本表中的数据;索引主要用于提高存取效率。通过本次实验,可以掌握基本表、视图、索引在数据库中的基本管理方法。

实验要求

熟悉实验室实验环境,阅读本次实验预备知识,熟悉基本表、视图、索引的基本概念,了解基本表、视图、索引的基本管理语法。实验中根据实验步骤要求书写相应的SQL代码并运行,记录和分析运行结果,使用代码验证SQL代码执行后是否满足步骤要求,并独立完成实验报告。

实验环境

Oracle 10g,windows ;

实验内容和步骤

(建议先把实验内容和步骤拷贝到SQL Developer工作区,然后按步骤进行实验,后同)

--1.创建学生选课关系数据库中的STUDENT表;

create table student

(

sno char(9) primary key,

sname char(20) unique,

ssex char(3),

sage smallint,

sdept char(20)

);

--2.创建学生选课关系数据库中的COURSE表;

create table course

(

cno char(4) primary key,

cname char(40),

cpno char(4),

ccredit smallint,

FOREIGN key (cpno) REFERENCES course(cno)

);

--3.创建学生选课关系数据库中的SC表;

create table sc

(

sno char(9),

cno char(4),

grade smallint,

primary key(sno,cno),

FOREIGN key(sno) REFERENCES student(sno),

FOREIGN key(cno) REFERENCES course(cno)

);

--4.运行下列语句,为基本表添加数据;

--以下为学生表的初始数据

insert into Student(sname,ssex,sno, sage, sdept) values('李勇','男','200215121',20,'CS');

insert into Student(sname,ssex,sno, sage, sdept) values('刘晨','女','200215122',19,'CS');

insert into Student(sname,ssex,sno, sage, sdept) values('王敏','女','200215123',18,'MA');

insert into Student(sname,ssex,sno, sage, sdept) values('张立','男','200215125',19,'IS');

--以下为课程表的初始数据

insert into course(cno,cname,cpno,ccredit) values('6','数据处理',null,2);

insert into course(cno,cname,cpno,ccredit) values('2','数学',null,2);

insert into course(cno,cname,cpno,ccredit) values('7','PASCAL语言','6',4);

insert into course(cno,cname,cpno,ccredit) values('5','数据结构','7',4);

insert into course(cno,cname,cpno,ccredit) values('1','数据库','5',4);

insert into course(cno,cname,cpno,ccredit) values('3','信息系统','1',4);

insert into course(cno,cname,cpno,ccredit) values('4','操作系统','6',3);

--以下为选修表的初始数据

insert into sc(sno,cno,grade) values('200215121','1',92);

insert into sc(sno,cno,grade) values('200215121','2',85);

insert into sc(sno,cno,grade) values('200215121','3',88);

insert into sc(sno,cno,grade) values('200215122','2',90);

insert into sc(sno,cno,grade) values('200215122','3',80);

commit;

--5.修改Student表结构,为Student表格添加一个“入学时间”属性,属性名为Senrollment,各元组在属性Senrollment的值是多少;

alter table student add Senrollment date;

select * from student;

--6.修改Student表结构,把Ssex列的宽度设置为6个字节;

alter table student modify ssex char(6);

--7.修改Student表结构,删除Senrollment列;

alter table student drop column Senrollment;

--8.创建视图ds,该视图包含所有选修了“数据库原理”的学生信息(如果提示没有权限,请使用管理员授予当前用户Create view权限);

--方法一

create view ds as

select * from student where sno in

(select sno from sc where cno in

(select cno from course where cname='数据库原理'));

--方法二(将所有的表格先连接起来)

create view ds as

select * from student

where student.sno=sc.sno and o=o and cname='数据库原理';

--9.创建视图maleStudent,该视图包含男学生所有信息,通过视图maleStudent更新基本表数据时必须保证学生性别为男;

create view maleStudent as

select * from student

where ssex='男' with check option;

--10.删除视图maleStudent;

drop view maleStudent;

--11.为Course表的CName列建立唯一索引,索引名称为uniqueCname;

create unique index uniqueCname on course(cname);

--12.试着为Course表的Cpno列建立唯一索引,索引名为indexCpno1,如果发生错误,请说明普通索引和唯一索引有何区别;

create unique index indexCpno1 on course(Cpon);

--错误报告

--ORA-01452: 无法 CREATE UNIQUE INDEX; 找到重复的关键字

--01452. 00000 - "cannot CREATE UNIQUE INDEX; duplicate keys found"

--原因:唯一索引只能对应唯一数据(创建唯一索引的那一列存在重复数据)

--13.为Cource表的Cpno列建立普通索引,索引名称为indexCpno2;

create index indexCpno2 on course(Cpon);

--14.删除索引indexCpno2;

drop index indexCpno2;

--15.删除基本表Student,如果发生错误,请分析原因;

drop table student;

--错误报告

--ORA-02449: 表中的唯一/主键被外键引用

--02449. 00000 - "unique/primary keys in table referenced by foreign keys"

--原因:student表中的主键key被course引用了,他们之间存在联系没有断开

--16.删除基本表SC;

drop table sc;

--17.参考1.3节学生选课关系数据库的表结构,列出各个关系表应有的主码和外码约束(文字回答即可);

student表中:sno为主码,sname约束为唯一;

course表中:cno为主码,cpno为外码,引用自身表的cno;

sc表中:sno为外码,参照student中的sno,cno为外码,参照course表中的cno;

--18.查看已创建的Student、SC、Course表的约束,如果某个表缺少应有的主码或外码约束,为该表添加缺失的主码或外码约束。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。