Oracle笔记整理(3)

2019-04-08 21:42

(

partition E values('山东'),

partition W values('新疆','西藏') )

4.复合分区

范围分区与散列分区或列表分区的组合

PARTITION BY RANGE (column_name1) --范围分区 SUBPARTITION BY HASH (column_name2)--散列分区

SUBPARTITIONS number_of_partitions --散列分区的数量 (

PARTITION part1 VALUES LESS THAN(range1), PARTITION part2 VALUES LESS THAN(range2), ...

PARTITION partN VALUES LESS THAN(MAXVALUE) ); eg:

先按照薪资进行范围分区(3个分区)

再按照编号进行散列分区(创建4个分区)

create table employee4( empId number,

empname varchar(20), empaddress varchar(200), empsal number(7) )

partition by range(empsal) subpartition by hash(empId) subpartitions 4 (

partition s1 values less than (2000), partition s2 values less than (4000), partition s3 values less than (maxvalue) ) /

操纵已分区的表

在已分区的表中插入数据与操作普通表完全相同,Oracle会自动将数据保存到对应的分区 查询、修改和删除分区表时可以显式指定要操作的分区

insert into sale values(1,to_date('2010-9-1','yyyy-mm-dd'),1500);--将数据存放到sale表中p2分区上

--查询指定分区中的数据

select * from sale partition(p2)--p2为分区的名称 --删除指定分区的数据

delete from sale partition(p2)

6.序列和同义词

1.同义词是现有对象的一个别名。 同义词优点: a.简化SQL语句

b.隐藏对象的名称和所有者 c.提供对对象的公共访问

同义词的分类:私有同义词和公有同义词 创建私有同义词

create synonym 同义词名称 for 模式.表名 create synonym emp for scott.emp;

select * from emp;-->select * from scott.emp;

创建公有同义词:(需要为其授权:create public synonym) grant create public synonym to xiaoming;

create public synonym 同义词名称 for 模式.表名 create public synonym pub_emp for scott.emp; eg:

SQL> conn system/xasxt

Connected.

SQL> grant select on pub_emp to xiaohua; Grant succeeded.

SQL> conn xiaohua/xiaohua; Connected.

SQL> select * from pub_emp; 删除同义词:

drop synonym emp;

drop public synonym pub_emp;

2.序列:实现类似于sqlserver中的主键自增的功能 序列是用于生成唯一、连续序号的对象 序列可以是升序的,也可以是降序的 使用CREATE SEQUENCE语句创建序列 create sequence my_seq start with 1 increment by 1 maxvalue 100000 minvalue 1 nocycle cache 10 /

通过nextval获取下一个序列的值:select my_seq.nextval from dual 通过currval获取当前序列的值:select my_seq.currval from dual; 更改和删除序列:

更改: ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE; 删除: DROP SEQUENCE toys_seq;

7.视图和索引

1.视图:

视图以经过定制的方式显示来自一个或多个表的数据 视图可以视为“虚拟表”或“存储的查询” 创建视图所依据的表称为“基表” 视图的优点有:

提供了另外一种级别的表安全性 隐藏的数据的复杂性

简化的用户的SQL命令 隔离基表结构的改变

通过重命名列,从另一个角度提供数据 eg:

create or replace view V$_myview--建议视图名称以V$开头 as

select e.empno,e.ename,d.dname from emp e join dept d on(e.deptno=d.deptno) /

select * from V$_myview--查询视图(将视图看成一张表) 注意:视图是可以更新的,但是需要满足一下条件 a.只能修改一个底层的基表

b.如果修改违反了基表的约束条件,则无法更新视图

c.如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图

d.如果视图包含伪列或表达式,则将无法更新视图 删除视图: drop view V$_myview;

2.索引(字典中的索引目录) 优点:

1.用以提高 SQL 语句执行的性能 2.减少磁盘I/O访问次数 原则:

1.只有在大表上创建索引才有意义 2.在where子句中的条件(列)经常建立索引 3.建立索引会带来一些额外的开销:

a.写的速度会变慢:需要额外维护索引信息 b.加大磁盘和内存空间的占用量(1.2倍)

创建标准索引:

CREATE INDEX 索引名称 ON 表名 (列名) TABLESPACE 表空间

eg:

create index idx_myIndex on emp(ename);

create index idx_myIndex --组合索引

on emp(ename,sal);

select * from emp where ename='zhangsan' and sal=1000;

重建索引:

ALTER INDEX idx_myIndex REBUILD; 删除索引:

drop index idx_myIndex;

唯一索引:

Oracle自动在表的主键列上创建唯一索引 CREATE UNIQUE INDEX 索引名 ON 表名 (列名);

8.PL-SQL基础

--声明变量(建议变量名以v_开头) --变量名类型:=值; --赋值变量名:=值; declare

v_hello varchar2(20):='hello'; v_world varchar2(20);

v_cons constant number(4):=123;--声明常量:不能重新赋值 begin

v_world:=',xasxt!';

--v_cons:=345;

dbms_output.put_line(v_hello||v_world);--类似于System.out.println(); dbms_output.put_line('v_cons='||v_cons); end;

--使用select ..into语句为变量赋值 declare

v_name varchar2(20); v_sal number(10); v_empno number(10); begin

v_empno:='&empno';--获取控制台输入的编号:&(交互式命令) select ename,sal into v_name,v_sal from emp where empno=v_empno; dbms_output.put_line('姓名:'||v_name); dbms_output.put_line('薪水:'||v_sal);

end;

--%type:引用变量和数据库列的数据类型 --%rowtype:提供表示表中一行的记录类型 declare

v_name emp.ename%type;-- 与emp表中ename列的类型一致 v_sal emp.sal%type;

v_empno emp.empno%type;

v_record emp%rowtype;--保持一条记录 begin

v_empno:='&empno';--获取控制台输入的编号:&(交互式命令) select ename,sal into v_name,v_sal from emp where empno=v_empno; dbms_output.put_line('姓名:'||v_name);

dbms_output.put_line('薪水:'||v_sal);

dbms_output.put_line('**************************');

select * into v_record from emp where empno=v_empno;--将查询的记录赋值给v_record dbms_output.put_line('工作:'||v_record.job); end;

--条件结构 --if.... end if; declare

v_age number(3); begin

v_age:='&age'; if v_age >= 18 then

dbms_output.put_line('成年!'); end if; end;

--if....else....end if; declare

v_age number(3); begin

v_age:='&age'; if v_age >= 18 then

dbms_output.put_line('成年!'); else

dbms_output.put_line('未成年!'); end if; end;

---if...elsif...else....end if declare

v_age number(3); begin

v_age:='&age';


Oracle笔记整理(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:金榜题名宴会致辞

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: