Oracle数据库模式对象管理

实验四 Oracle数据库模式对象管理

一、预习报告

一、 实验目的
1) 掌握表的创建与管理。
2) 掌握索引的创建与管理。
3) 掌握视图的创建与管理。
4) 掌握序列的创建与管理。
5) 了解簇、同义词、数据库链接等其他模式对象的管理

1) 什么是模式,模式有什么特点?
模式是指一系列逻辑数据结构或对象的集合。特点:模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式的名称与这个用户的名称相同。
2) Oracle数据库中模式对象有哪些?表空间、用户、角色、目录、概要文件及上下文等数据库对象属于某个模式吗?
模式对象有:表、索引、索引化表、分区表、物化视图、属兔、数据库连接、序列、同义词、PL/SQL包、存储函数与存储过程、Java类与其它Java资源。表用户、用户、角色、目录、概要文件属于非对象模式。
3) 如何进行模式的选择与切换?
用户以normal身份登录,则进入同名模式;用户以sysdba身份登陆进入sys模式;用户以sysoper身份登陆,进入public模式。
4) 说明索引的作用,以及Oracle数据库中索引的类型。
数据库中引入索引的目的是提高对表中数据的查询速度。
类型:1.唯一性索引与非唯一性索引2.平衡树索引与位图索引3.单列索引与复合索引4.函数索引。

二、实验报告

一、 实验目的
1) 掌握表的创建与管理。
2) 掌握索引的创建与管理。
3) 掌握视图的创建与管理。
4) 掌握序列的创建与管理。
5) 了解簇、同义词、数据库链接等其他模式对象的管理
二、 实验环境
Windows 7/Windows 10 + Oracle10g+PL/SQL Developer
三、 实验内容及要求
1)为图书销售系统创建数据表。
2)在图书销售系统适当表的适当列上创建适当类型的索引。
3)为图书销售系统创建视图。
4)为图书销售系统创建序列。
四、 实验步骤
1) 打开SQL Plus,以system用户登录BOOKSALES数据库。
Sqlplus system/oracle
2) 按下列方式创建一个用户bs,并给该用户授权。
SQL>CREATE USER bs INDENTIFIED BY bs DEFAULT TABLESPACE USERS;
SQL>GRANT RESOURCE, CONNECT, CREATE VIEW TO bs;

create user bs identified by bs default tablespace users;
grant resource,connect,create view to bs;
3) 使用bs用户登录数据库,并进行下面的相关操作。
Conn bs/bs
4) 根据图书销售系统关系模式设计,创建表A-1至表A-6。
在这里插入图片描述
在这里插入图片描述

	create table customers(
	  customer_id number(4) primary key,
	  name char(20) not null,
	  phone varchar2(50) not null,
	  email varchar2(50),
	  address varchar2(200),
	  code varchar2(10));
	create table publishers(
	publisher_id number(2) primary key,
	name varchar2(50),
	contact char(10),
	phone varchar2(50));
	create table books(
	ISBN varchar2(50) primary key,
	title varchar2(50),
	author varchar2(50),
	pubdate date,
	publisher_id number(2),
	cost number(6,2),
	retail number(6,2),
	category varchar2(50),
	foreign key(publisher_id)references publishers(publisher_id));
		create table orders(
	order_id number(4) primary key,
	customer_id number(4) ,
	orderdate date,
	shipdate date,
	shipaddress varchar2(200),
	shipcode varchar2(10),
	foreign key(customer_id) references customers(customer_id));
	create table orderitem(
	order_id number(4),
	item_id number (4),
	isbn varchar2(50) not null,
	quantily number(4),
	primary key(order_id,item_id),
	foreign key(order_id) references orders(order_id));
	create table promotion(
	gift_id number(2),
	name char(20) primary key,
	minretail varchar2(50),
	maxretail char(10));

5) 在CUSTOMERS表的name列上创建一个B-树索引,要求索引值为大写字母。
create index customer_name_index on customers(upper(name));
6) 在BOOKS表的title列上创建一个非唯一性索引。
create index books on books(title);
7) 在ORDERS表的ISBN列上创建一个唯一性索引。
create unique index orders_index on orders(isbn) ;
8) 创建一个视图customers_book,描述客户与订单的详细信息,包括客户编号、客户名单、订购图书的ISBN、图书名称、图书数量、订货日期、发货日期等。
create view customers_book as
select c.customer_id,c.name,b.isbn,title,orderdate,shipdate
from customers c,books b,orderitem o1,orders o2
where c.customer_id=o2.customer_id and o2.order_id=o1.order_id and o1.ISBN=b.ISBN;
9)创建一个视图customers_gift,描述客户获得礼品的信息,包括客户名称、图书总价、礼品名称。
create view customers_gift(customers_name,book_allcost,gift_name)
as
select cname,p.name
from(select c.name cname
from customers c join orders o on c.customer_id=o.customer_id
join ordertime oi on o.order_id=oi.order_id
join books b on oi.ISBN=b.ISBN
group by c.name) orderinfo
join promotion p on allcost between minretail and maxretail;
10)定义序列seq_customers,产生客户编号,序列起始值为1,步长为1,不缓存,不循环。
create sequence seq_customers start with 1 increment by 1 nocache nocycle;
11)定义序列seq_orders,产生订单编号,序列起始值为1000,步长为1,不缓存,不循环。
create sequence seq_orders start with 1000 increment by 1 nocache nocycle;
12)定义序列seq_promotion,产生礼品编号,序列起始值为1,步长为1,不缓存,不循环。
create sequence seq_promotion start with 1 increment by 1 nocache nocycle;
五、 思考题
数据库中使用索引的优点和缺点,索引是如何工作的?

优点:可以提高对表中数据的查询速度。缺点:索引越多,维护索引所需开销越大。当更新表时,需要同时更新于表有关的索引,降低了数据的维护速度。索引需要占用物理空间,特别是聚集索引,需要较大的空间。
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值