数据库及数据表的创建与删除(Oracle实验)
实验⽬的
在数据库中,基本表⽤于存储数据;视图是虚表,在数据库中只存储视图定义(物化视图除外),通过视图可以查询、更新基本表中的数据;索引主要⽤于提⾼存取效率。通过本次实验,可以掌握基本表、视图、索引在数据库中的基本管理⽅法。
实验要求
熟悉实验室实验环境,阅读本次实验预备知识,熟悉基本表、视图、索引的基本概念,了解基本表、视图、索引的基本管理语法。实验中根据实验步骤要求书写相应的SQL代码并运⾏,记录和分析运⾏结果,使⽤代码验证SQL代码执⾏后是否满⾜步骤要求,并独⽴完成实验报告。
实验环境
Oracle 10g,windows 2003;
实验内容和步骤
(建议先把实验内容和步骤拷贝到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 sco=courseo and cname='数据库原理';
--9.创建视图maleStudent,该视图包含男学⽣所有信息,通过视图maleStudent更新基本表数据时必须保证学⽣性别为男;
create view maleStudent as
select * from student
where ssex='男' with check option;
--10.删除视图maleStudent;
drop view maleStudent;oracle数据库怎么查询表
--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表的约束,如果某个表缺少应有的主码或外码约束,为该表添加缺失的主码或外码约束。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论