`
mxx_1111
  • 浏览: 59083 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

oracle基本笔记整理及案例分析2

 
阅读更多
/*
===================================================================

===================================================================
*/

/*
tp_orders表空间,大小10M,文件大小可自动增长,允许文件扩展,最大限度为无限制
创建A_oe用户的默认表空间为tp_orders 
密码 bdqn
授予connect,resource权限党文a_hr用户的employee
*/
--创建表空间和用户,并授予访问数据库的权限
create tablespace tp_orders
datafile 'E:\E盘\tp_orders01.dbf'
size 10M
autoextend on;

--创建用户
create user A_oe
identified by bdqn
default tablespace tp_orders

--赋予权限
grant connect,resource to A_oe;
grant select on test.employee to A_oe;
grant select on test.bumen to A_oe;


select * from test.employee;

/*
 使用序列生成部门编号的值
*/
/*
从60开始,间隔是10,最大值是10000的序列的对象dept_seq
*/
select * from bumen;
--创建一个序列
create sequence dept_seq
start with 60
increment by 10
maxvalue 10000
--插入数据
insert into bumen values(dept_seq.nextval,'学术部');
insert into bumen values(dept_seq.nextval,'学术部1');
--数据迁移前的工作
drop sequence dept_seq;

create sequence dept_seq
start with 80
increment by 10
maxvalue 10000;
create table deptBak as 
select * from bumen;

select * from deptBak;
--测试插入数据
insert into deptBak values(dept_seq.nextval,'人事部');

/*

创建A_oe模式下dept表的公有同义词,可以允许任何能够连接上数据库的用户访问
*/

--创建一个测试dept表
create table dept
as select * from test.bumen;

select * from dept;

--创建同义词
create public synonym p_sy_dept for a_oe.dept;
--赋予权限
grant select on  test.customers to A_oe;
grant create public synonym  to A_oe;
select * from p_sy_dept;


/*
切换用户,操作使用test用户
*/
--查看并且操作employee表

select * from customers;
--为客户编号创建反向建索引
create index index_reverse_customer_id on customers (customer_id) reverse;
--为地域列创建位图索引
create  bitmap index index_nls_territory on customers (nls_territory);
--为名和姓氏列创建组合索引
create index index_cus on customers(cust_fiest_name,cust_last_name);

/*
根据订单表创建范围分区表
*/
--(1)已完成
--(2)创建分区
create table rangeOrders
(
order_id number(12) primary key,           --订单编号
order_date date not null,                  --订货日期
order_mode varchar2(8) not null ,          --订货模式
customer_id number(6) not null,            --客户编号
order_status number(2),                    --订单状态
order_total number(8,2),                   --总定价
sales_rep_id number(6),                    --销售代表id
promotion_id number(6)                     --推广员id
)
partition by range (order_date)
(
partition part1 values less than (to_date('2013-01-01' , 'yyyy-mm-dd')),
partition part2 values less than (to_date('2014-01-01' , 'yyyy-mm-dd')),
partition part3 values less than (to_date('2015-01-01' , 'yyyy-mm-dd')),
partition part4 values less than (to_date('2016-01-01' , 'yyyy-mm-dd')),
partition part5 values less than (to_date('2017-01-01' , 'yyyy-mm-dd')),
partition part6 values less than (maxvalue)
)

--插入测试数据
insert into rangeOrders(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(1,'2017-02-09','网上下单',2,1,323.23,1,2);

insert into rangeOrders(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(2,'2016-11-09','上门购买',1,2,56.00,2,1);
insert into rangeOrders(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(3,'2017-12-20','熟人推荐',3,1,6000,1,2);
insert into rangeOrders(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(4,'2015-12-02','网上下单',5,2,365,2,2);
insert into rangeOrders(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(5,'2017-12-09','上门购买',3,1,3210,1,2);
insert into rangeOrders(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(6,'2014-11-11','网上下单',3,1,630,2,2);
insert into rangeOrders(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(7,'2017-01-01','上门购买',2,1,6300,1,2);

--查看表中的数据
select * from rangeOrders
--查询每一个分区中的数据
select * from rangeOrders partition (part1);
select * from rangeOrders partition (part2);
select * from rangeOrders partition (part3);
select * from rangeOrders partition (part4);
select * from rangeOrders partition (part5);
select * from rangeOrders partition (part6);

--查看分区情况
select table_name,partition_name from user_tab_partitions;

--把已存在的表改为分区表
create table rangeOrder
partition by range (order_date)
(
partition part1 values less than (to_date('2013-01-01' , 'yyyy-mm-dd')),
partition part2 values less than (to_date('2014-01-01' , 'yyyy-mm-dd')),
partition part3 values less than (to_date('2015-01-01' , 'yyyy-mm-dd')),
partition part4 values less than (to_date('2016-01-01' , 'yyyy-mm-dd')),
partition part5 values less than (to_date('2017-01-01' , 'yyyy-mm-dd')),
partition part6 values less than (maxvalue)
)
as select * from orders;

/*
间隔分区(自动化)
*/
--创建分区表(按照一年分一个表)
create table sales_interval1
partition by range (order_date)
interval (numtoyminterval(1,'year'))  --按照一年分区一个表
(partition part1 values less than (to_date('2017/01/01','yyyy/mm/dd')))
as select * from orders;

--查看分区情况
select table_name,partition_name,tablespace_name from user_tab_partitions
where table_name=upper('sales_interval1');
--插入一条测试数据
insert into sales_interval1(order_id,order_date,order_mode,customer_id,order_status,order_total,sales_rep_id,promotion_id)
values(98,'2018/01/03','熟人推荐',3,1,9658,2,2);

/*注意:刚刚加的那条记录现在肯定没有,所以
1.先执行
select table_name,partition_name,tablespace_name from user_tab_partitions
where table_name=upper('sales_interval1');
查看下一个分区是多少
2.复制刚刚查询出来的分区,eg:SYS_P21
3.执行select * from sales_interval1 partition (SYS_P21);
*/
select * from sales_interval1 partition (SYS_P21);

--添加分区
alter table rangeOrder 
add partition part7 values less tahn(to_date('2018-01-01','yyyy-mm-dd'));
--删除分区
alter table rangeOrder
drop partition part3;
--移动分区
alter table rangeOrder
move partition part1 tablespace works01;    --works01是表空间名称、


/*
1.创建一个单独的表空间
2.把分区的数据移动到这个表空间里面去
3.让这个表空间作为只读
*/

--以system的身份登陆上
create tablespace tb_name
datafile 'e:\oracle\tbdb.dbf'
size 10M;
--授权
alter user test quota unlimited on tb_name;
--移动
alter table rangeOrder
move partition part1 tablespace tb_name;
--设置为只读
alter tablespace tp_name read only;
--设置为读写
alter tablespace tp_name read write;

/*
课后简答题
*/
--(1)在test用户下创建一个表Stock_Received
create table Stock_Received
(
Stock_ID number,
Stock_Date date,
Cost varchar2(50)
)

--插入数据
insert into Stock_Received values (myseq.nextval,'2017/03/05','描述一');
insert into Stock_Received values(myseq.nextval,'2017/01/05','描述二');
insert into Stock_Received values (myseq.nextval,'2017/02/05','描述三');
insert into Stock_Received values(myseq.nextval,'2017/04/05','描述四');
insert into Stock_Received values(myseq.nextval,'2017/05/05','描述五');
insert into Stock_Received values(myseq.nextval,'2017/06/05','描述六');
insert into Stock_Received values(myseq.nextval,'2017/05/05','描述七');
insert into Stock_Received values(myseq.nextval,'2017/04/05','描述八');
insert into Stock_Received values(myseq.nextval,'2017/02/05','描述九');
insert into Stock_Received values(myseq.nextval,'2017/01/05','描述十');
insert into Stock_Received values(myseq.nextval,'2017/08/05','描述十一');
--创建一个名为myseq的序列
create sequence myseq
start with 1000
increment by 10
maxvalue 1100
cycle

--(2)创建一个公有的同义词
create public synonym p_Stock_received for Stock_Received
--给a_oe赋予一个可以查看Stock_Received的权限
grant select on p_Stock_received to a_oe;

--用a_oe登陆,测试能不能查看Stock_Received表
select * from p_Stock_received;
--↑测试成功

--(3)在Stock_Received中根据Stock_Date列创建3个范围分区
create table range_Stock_Received
partition by range(Stock_Date)
(
partition p1 values less than(to_date('2017/01/01','yyyy-mm-dd')),
partition p2 values less than(to_date('2017/03/01','yyyy-mm-dd')),
partition p3 values less than(to_date('2017/05/01','yyyy-mm-dd')),
partition p4 values less than(maxvalue)
)
as select * from Stock_Received

--查看每个分区里面的数据
select * from range_Stock_Received partition (p1);
select * from range_Stock_Received partition (p2);
select * from range_Stock_Received partition (p3);

--(4)在表的id上创建一个逐渐索引列
create index index_Stock_ID on Stock_Received (Stock_ID);


分享到:
评论

相关推荐

    2011MLDN李兴华Oracle课堂笔记PDF档

    5. **04-习题讲解2及表的创建、约束.pdf**:这部分可能讲解如何在Oracle中创建表,包括字段定义、数据类型选择,以及约束的设定,如主键、外键、唯一性约束等。 6. **05-视图、索引、备份、同义词、设计范式、设计...

    Oracle自整理学习资料

    BaseDoc文件可能包含了上述所有领域的文档,可能是教程、笔记、案例研究或者是练习题,它们将帮助你逐步深入Oracle的世界。通过系统地学习和实践,你将能够掌握这个强大的数据库系统,并在实际工作中发挥出它的潜力...

    Oracle EBS 开发笔记

    - **前言**:这部分主要介绍了作者王重东的学习心得和笔记整理的过程。 #### 三、EBS 入门指南 - **入门一周之口水贴**:介绍EBS的基础概念、术语和常见操作流程。 - **入门二周之口水贴**:深入讲解如何使用EBS...

    dwr笔记整理(三)

    标题 "dwr笔记整理(三)" 暗示了这篇笔记主要关注Direct Web Remoting (DWR) 技术的第三部分。DWR是一种Java技术,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行实时通信,实现AJAX功能。这篇笔记...

    韩顺平oracle课件

    只有一个文件:"韩顺平oracle课件.doc",这可能是一份综合性的文档,包含了整个课程的精华内容,涵盖了Oracle的基础知识、高级特性、管理工具的使用,甚至可能包括了一些实战案例分析和习题解答。通过这份文档,学习...

    java从入门到精通(韩顺平视频)笔记整理

    - 分析优秀案例而非闭门造车。 #### 第1讲 内容介绍、项目演示、原理剖析 - **课程覆盖内容**: - 面向对象编程。 - 图形用户界面开发。 - 数据库编程。 - 文件I/O操作。 - 网络编程。 - 多线程机制。 - **...

    个人日常学习资料整理最终

    在Oracle这个标签下,我们可以期待一些关于Oracle数据库系统的教学材料、笔记、实战项目或案例分析。Oracle是全球广泛使用的数据库管理系统,特别在企业级应用中非常普遍。因此,这些学习资料可能会涵盖以下几个关键...

    ORACLE性能调优

    "详细个人整理笔记.exe"和"config.ini"可能包含了个人的学习笔记和配置文件,帮助读者更好地理解和应用这些知识。 学习Oracle性能调优是一个持续的过程,需要不断实践和调试。熟悉上述知识点,并结合实际环境进行...

    Oracle Data Integrator學習筆記

    本文档基于 Derek.Jaa 的 ODI 学习笔记整理而成,主要围绕 ODI 的基本概念、系统架构、安装配置及常用功能进行深入探讨。 #### Part 1 – 概览 ##### 1. ETL 与 ELT - **ETL(Extract, Transform, Load)**: 是一...

    java学习笔记2

    视频可能涵盖了实际编程示例和案例分析,帮助学习者更好地理解和应用所学知识。 在学习过程中,建议结合实际项目练习,不断巩固和提高。如果有任何疑问,可以通过标签所示的编著者良葛格留言获取帮助。在整理和整合...

    软考高级2023年系统分析师考点汇总

    在准备2023年软考高级系统分析师的考试时,了解并掌握一系列关键知识点是至...在准备系统分析师考试时,不仅需要深入理解以上理论知识,还要结合实际案例分析和解决问题的能力,以展示出作为系统分析师应有的综合素养。

    我的文件内容

    【标题】:“我的文件内容”揭示了这是一份与个人工作或学习相关的文档集合,主要聚焦于Oracle...文件中的信息可能包括案例分析、代码示例、最佳实践和问题解决方案,对于深化理解Oracle和JSP的结合使用大有裨益。

    310-081考点汇总和笔记

    6. **案例分析**:可能会有实际场景的案例分析题目,要求考生根据给定情况做出决策或提出解决方案。 7. **法律法规**:某些IT认证考试会涉及到法规和合规性问题,例如数据保护法规、隐私政策等。 8. **最新趋势**...

    Java+数据库笔试和学习整理

    最后,这份“Java+数据库笔试和学习整理”的压缩包可能会包含详细的题目解析、编程题目的答案、数据库案例分析等,这些都是宝贵的自学资源。用户可以通过系统地学习和练习,逐步提高自己的技术水平,为面试或进一步...

    note:笔记

    这些文件将提供更详细的Java编程知识,例如具体的实现代码、问题案例分析、最佳实践建议等。 综上所述,这个名为“note:笔记”的压缩包提供了一套关于Java编程的详细学习资源,涵盖了语言基础到高级特性的方方面面...

Global site tag (gtag.js) - Google Analytics