创建选修专业表oracle,数据库及数据表的创建与删除 (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 sc.cno=course.cno 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表的约束,如果某个表缺少应有的主码或外码约束,为该表添加缺失的主码或外码约束。
创建选修专业表oracle,数据库及数据表的创建与删除 (Oracle实验)相关推荐
- mysql数据库检表_MYSQL数据库检查数据表和修复数据表
数据库在运行中,会因为人为因素或一些不可抗力因素造成数据损坏.所以为了保护数据的安全和最小停机时间,我们需制定详细的备份/恢复计划,并定期对计划的有效性进行测试. 结合MySQL服务器的运行机制和所提 ...
- oracle数据库、数据表的创建与管理 实验笔记二
如何在命令窗口复制粘贴 鼠标移动到窗口边框然后右击 正文: 1.启动SQL*Plus,以SYS身份连接默认数据库. 2.创建一个用户默认表空间H1,并为该用户授相应的权限. 4.以新建用户身份连接默认 ...
- 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...
如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...
- php如何在mysql数据库里创建表_php创建mysql数据库以及数据表
php创建mysql数据库以及数据表 用php链接到mysqli,成功后利用,mysqli_query()创建数据库以及数据表. $con = mysqli_connect("localho ...
- oracle rman恢复表空间,Oracle数据库RMAN恢复之表空间和数据块介质的恢复
示例一:表空间的数据文件被误删除 open状态下删除表空间对应的所有数据文件. 在open状态下使用alter tablespace ... offline for recover 脱机表空间. 使用 ...
- sql server2008中怎样用sql语句创建数据库和数据表
这是简单用代码实现创建数据库和数据表的sql语句,如下: --调用系统数据库-- use master go /***防止你要创建的数据库同名,先把它删除掉****/ if Exists(select ...
- oracle中的表怎样保存,怎样保存excel 表格数据库中-如何将excel表格更新oracle数据库中数据...
如何将excel表格更新oracle数据库中数据 这里以SQL SERVE2008为例.SQLSERVER2008有一个"数据导入导出功能",当然我们也可以打开数据库之后,在数据库 ...
- mysql 收藏表如何建立_代码收藏系列--mysql创建数据库、数据表、函数、存储过程命令...
创建mysql数据库 CREATE DATABASE IF NOT EXISTS `database_name` DEFAULT CHARSET utf8 COLLATE utf8_general_c ...
- sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾
参考链接: SQL教程 MySQL教程 一.创建数据库语法 --用master数据库 use master --判断数据库是否存在,若存在则删除 if exists (select * from sy ...
最新文章
- Efficient Hybrid De Novo Error Correction and Assembly for Long Reads
- 超适合新手的Oracle查询语句
- How to resolve ASSERTION_FAILED error when you register the odata service expose
- 推荐一个国外SaaS产品-Olark
- js原生后代选择器_CSS 后代选择器
- 机器学习实战:PCA降维 样本协方差
- python 对redis key的基本操作
- Windows Firewall/Internet Connection Sharing (ICS) 无法启动解决办法
- 微信小程序css方式animation动画弹幕实现
- python图片转excel,用Python玩转图片处理,并导出文件列表到Excel文件
- 谷歌电子邮件服务器,谷歌Gmail为什么会能一统美国电邮服务
- 图文讲解flashfxp教程 flashfxp详细教程
- Pytorch版本过高产生的RuntimeError: Legacy autograd function with non-static forward method is deprecated.
- Vivo(IQOO)无法输出调试日志解决办法
- 【云原生】设备云之前端可视化编程基础
- cavium CN71XX芯片 GSER Interface总结
- “易语言.飞扬”十分钟入门教程
- 可观测性-Metrics-存储-InfluxDb连续查询(CQ)Continuous Queries
- phpstrom函数注释模板_PHPSTORM模板变量注释
- 关于iTunes11.1 不能刷自制固件的解决方案
热门文章
- JavaScript高级程序设计之什么是原型模式
- 思科服务器备份文件失败,思科路由器tftp备份、还原 IOS升级的方法
- 服务器多网站布置,如何在一台服务器上实现多个web站点的方法
- linux添加svn分支,TortoiseSVN 分支创建与合并
- CCF201403-2 窗口
- C语言课后习题(8)
- python操作mysql数据库(增、删、改、查)_python对 MySQL 数据库进行增删改查的脚本...
- Java 18 发布:甲骨文公司已开始将Java纳入其软件许可审计
- 实战经验:Oracle recyclebin过大导致的Insert逻辑读暴增问题的解决
- MySQL 8.0 数据字典有哪些变化?