实验目的

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

实验要求

熟悉实验室实验环境,阅读本次实验预备知识,熟悉基本表、视图、索引的基本概念,了解基本表、视图、索引的基本管理语法。实验中根据实验步骤要求书写相应的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实验)相关推荐

  1. mysql数据库检表_MYSQL数据库检查数据表和修复数据表

    数据库在运行中,会因为人为因素或一些不可抗力因素造成数据损坏.所以为了保护数据的安全和最小停机时间,我们需制定详细的备份/恢复计划,并定期对计划的有效性进行测试. 结合MySQL服务器的运行机制和所提 ...

  2. oracle数据库、数据表的创建与管理 实验笔记二

    如何在命令窗口复制粘贴 鼠标移动到窗口边框然后右击 正文: 1.启动SQL*Plus,以SYS身份连接默认数据库. 2.创建一个用户默认表空间H1,并为该用户授相应的权限. 4.以新建用户身份连接默认 ...

  3. 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...

    如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...

  4. php如何在mysql数据库里创建表_php创建mysql数据库以及数据表

    php创建mysql数据库以及数据表 用php链接到mysqli,成功后利用,mysqli_query()创建数据库以及数据表. $con = mysqli_connect("localho ...

  5. oracle rman恢复表空间,Oracle数据库RMAN恢复之表空间和数据块介质的恢复

    示例一:表空间的数据文件被误删除 open状态下删除表空间对应的所有数据文件. 在open状态下使用alter tablespace ... offline for recover 脱机表空间. 使用 ...

  6. sql server2008中怎样用sql语句创建数据库和数据表

    这是简单用代码实现创建数据库和数据表的sql语句,如下: --调用系统数据库-- use master go /***防止你要创建的数据库同名,先把它删除掉****/ if Exists(select ...

  7. oracle中的表怎样保存,怎样保存excel 表格数据库中-如何将excel表格更新oracle数据库中数据...

    如何将excel表格更新oracle数据库中数据 这里以SQL SERVE2008为例.SQLSERVER2008有一个"数据导入导出功能",当然我们也可以打开数据库之后,在数据库 ...

  8. mysql 收藏表如何建立_代码收藏系列--mysql创建数据库、数据表、函数、存储过程命令...

    创建mysql数据库 CREATE DATABASE IF NOT EXISTS `database_name` DEFAULT CHARSET utf8 COLLATE utf8_general_c ...

  9. sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾

    参考链接: SQL教程 MySQL教程 一.创建数据库语法 --用master数据库 use master --判断数据库是否存在,若存在则删除 if exists (select * from sy ...

最新文章

  1. Efficient Hybrid De Novo Error Correction and Assembly for Long Reads
  2. 超适合新手的Oracle查询语句
  3. How to resolve ASSERTION_FAILED error when you register the odata service expose
  4. 推荐一个国外SaaS产品-Olark
  5. js原生后代选择器_CSS 后代选择器
  6. 机器学习实战:PCA降维 样本协方差
  7. python 对redis key的基本操作
  8. Windows Firewall/Internet Connection Sharing (ICS) 无法启动解决办法
  9. 微信小程序css方式animation动画弹幕实现
  10. python图片转excel,用Python玩转图片处理,并导出文件列表到Excel文件
  11. 谷歌电子邮件服务器,谷歌Gmail为什么会能一统美国电邮服务
  12. 图文讲解flashfxp教程 flashfxp详细教程
  13. Pytorch版本过高产生的RuntimeError: Legacy autograd function with non-static forward method is deprecated.
  14. Vivo(IQOO)无法输出调试日志解决办法
  15. 【云原生】设备云之前端可视化编程基础
  16. cavium CN71XX芯片 GSER Interface总结
  17. “易语言.飞扬”十分钟入门教程
  18. 可观测性-Metrics-存储-InfluxDb连续查询(CQ)Continuous Queries
  19. phpstrom函数注释模板_PHPSTORM模板变量注释
  20. 关于iTunes11.1 不能刷自制固件的解决方案

热门文章

  1. JavaScript高级程序设计之什么是原型模式
  2. 思科服务器备份文件失败,思科路由器tftp备份、还原 IOS升级的方法
  3. 服务器多网站布置,如何在一台服务器上实现多个web站点的方法
  4. linux添加svn分支,TortoiseSVN 分支创建与合并
  5. CCF201403-2 窗口
  6. C语言课后习题(8)
  7. python操作mysql数据库(增、删、改、查)_python对 MySQL 数据库进行增删改查的脚本...
  8. Java 18 发布:甲骨文公司已开始将Java纳入其软件许可审计
  9. 实战经验:Oracle recyclebin过大导致的Insert逻辑读暴增问题的解决
  10. MySQL 8.0 数据字典有哪些变化?