? 范围分区
? 以
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
中的一个列或一组列的值的范围分区
? 范围分区的语法:
PARTITION BY RANGE (column_name)
(
PARTITION part1 VALUE LESS THAN(range1),
PARTITION part2 VALUE LESS THAN(range2),
...
[PARTITION partN VALUE LESS THAN(MAXVALUE)]
);
? 散列分区
? 允许用户对不具有逻辑范围的数据进行分区
? 通过在分区键上执行HASH函数决定存储的分区
? 将数据平均地分布到不同的分区
? 散列分区语法
PARTITION BY HASH (column_name)
PARTITIONS number_of_partitions;
或
PARTITION BY HASH (column_name)
( PARTITION part1 [TABLESPACE tbs1],
PARTITION part2 [TABLESPACE tbs2],
...
PARTITION partN [TABLESPACE tbsN]);
? 列表分区
? 允许用户将不相关的数据组织在一起
? 列表分区的语法:
PARTITION BY LIST (column_name)
(
PARTITION part1 VALUES (values_list1),
PARTITION part2 VALUES (values_list2),
...
PARTITION partN VALUES (DEFAULT)
);
? 复合分区
? 范围分区与散列分区或列表分区的组合
? 复合分区的语法:
PARTITION BY RANGE (column_name1)
SUBPARTITION BY HASH (column_name2)
SUBPARTITIONS number_of_partitions
(
PARTITION part1 VALUE LESS THAN(range1),
PARTITION part2 VALUE LESS THAN(range2),
...
PARTITION partN VALUE LESS THAN(MAXVALUE)
);
引用分区:基于由外键引用的父表的分区的方
法,它依赖已有的父表子表的关系,子表通过外键
关联到父表,进而继承了父表的分区方式而不需自
己创建,子表还继承了父表的维护操作。
1,主表是范围分区,子表是引用分区
2,主表是列表分区,子表是引用分区
3,主表是散列分区,子表是引用分区
间隔分区:可以完全自动地根据间隔阈值创建范
围分区,它是范围分区的扩展 。
在数据仓库中有广泛的应用。
基于虚拟列的分区:把分区建立在某个虚拟列
上,即建立在函数或表达式的计算结果上,来完成
某种任务。
系统分区:不指定分区列,由ORACLE来完成分
区的控制和管理,它没有了范围分区或列表分区的
界限
? 在已分区的表中插入数据与操作普通表完全相同,Oracle会自动将数据保存到对应的分区
? 查询、修改和删除分区表时可以显式指定要操作的分区
INSERT INTO SALES3 VALUES (‘P001’, ’02-3月-2001', 2000);
INSERT INTO SALES3 VALUES (‘P002’, ’10-5月-2001', 2508);
INSERT INTO SALES3 VALUES (‘P003’, ’05-7月-2001', 780);
INSERT INTO SALES3 VALUES (‘P004’, ’12-9月-2001', 1080);
SELECT * FROM SALES3 PARTITION (P3);
DELETE FROM SALES3 PARTITION (P2);
? 分区维护操作修改已分区表的分区。
? 分区维护的类型:
?
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
事件 - 定期删除最旧的分区
? 非计划事件 - 解决应用程序或系统问题
? 分区维护操作有:
? 添加分区
? 删除分区
? 截断分区
? 合并分区
? 拆分分区
? 添加分区 – 在最后一个分区之后添加新分区
SQL> ALTER TABLE SALES
ADD PARTITION P4 VALUES LESS THAN (4000);
? 删除分区 – 删除一个指定的分区,分区的数据也随之删除
SQL> ALTER TABLE SALES DROP PARTITION P4;
? 截断分区 – 删除指定分区中的所有记录
SQL> ALTER TABLE SALES TRUNCATE PARTITION P3;
? 合并分区 - 将范围分区或复合分区的两个相邻分区连接起来
SQL> ALTER TABLE SALES
MERGE PARTITIONS S1, S2 INTO PARTITION S2;
? 拆分分区 - 将一个大分区中的记录拆分到两个分区中
SQL> ALTER TABLE SALES SPLIT PARTITION P2 AT (1500)
INTO (PARTITION P21, PARTITION P22);
? 同义词是现有对象的一个别名。
? 简化SQL语句
? 隐藏对象的名称和所有者
? 提供对对象的公共访问
? 同义词共有两种类型:
私有同义词只能在其模式内访问,且不能与当前模式的对象同名。
? 序列是用于生成唯一、连续序号的对象
? 序列可以是升序的,也可以是降序的
? 使用CREATE SEQUENCE语句创建序列
指定内存中预先分配的序号数
SQL> CREATE SEQUENCE stu_seq
START WITH 1
INCREMENT BY 1
MAXVALUE 2000
MINVALUE 1
NOCYCLE
CACHE 10;
通过序列的伪列来访问序列的值
NEXTVAL 返回序列的下一个值
CURRVAL 返回序列的当前值
第一次使用序列中的值的时候,要使用NEXTVAL
使用ALTER SEQUENCE语句修改序列,
不能更改序列的START WITH参数
SQL> ALTER SEQUENCE stu_seq MAXVALUE 5000 CYCLE;
使用DROP SEQUENCE语句删除序列
SQL> DROP SEQUENCE stu_seq;
? 视图以经过定制的方式显示来自一个或多个表的数据
? 视图可以视为“虚拟表”或“存储的查询”
? 创建视图所依据的表称为“基表”
? 视图的优点有:
? 提供了另外一种级别的表安全性
? 隐藏的数据的复杂性
? 简化的用户的SQL命令
? 隔离基表结构的改变
? 通过重命名列,从另一个角度提供数据
创建视图的语法:
CREATE [OR REPLACE] [FORCE] VIEW
view_name [(alias[, alias]...)]
AS select_statement
[WITH CHECK OPTION]
[WITH READ ONLY];
使用 WITH CHECK OPTION 选项创建视图
create or replace view view2 as select * from student where sno=3 with check option;
使用 ORDER BY 子句创建视图
create or replace view view3 as select * from student order by sno desc;
创建带有错误的视图
CREATE FORCE VIEW ven AS
SELECT * FROM address;
联接视图
相等连接(第一种写法):
select table1.column,table2.column
from table1, table2
where table1.column1=table2.column2
可以使用表的别名,为了书写的简化。
相等连接(第二种写法):
select table1.column,table2.column
from table1 inner join table2
on table1.column1=table2.column2
可以使用表的别名,为了书写的简化。
左外连接(第一种写法):
select table1.column,table2.column
from table1 left outer join table2
on table1.column1=table2.column2
可以使用表的别名,为了书写的简化。
左外连接(第二种写法):
select table1.column,table2.column
from table1, table2
where table1.column1=table2.column2(+)
可以使用表的别名,为了书写的简化。
? 在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE
? 视图上的DML语句有如下限制:
? 只能修改一个底层的基表
? 如果修改违反了基表的约束条件,则无法更新视图
? 如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图
? 如果视图包含伪列或表达式,则将无法更新视图
键保留表
department
student
CREATE VIEW view_stu_dept AS
select s.sno, s.sname, s.deptno, d.deptname
from student s, department d where s.deptno = d.deptno;
update view_stu_dept set deptno='d' where sno=1;
-- 可以更新 键保留表的 列
update view_stu_dept set department='历史系' where sno=1;
-- 不可以更新 非键保留表的 列
? 视图中可以使用单行函数、分组函数和表达式
? 必须为使用函数或者表达式的字段指定名字
CREATE VIEW item_view AS
SELECT itemcode, LOWER(itemdesc) item_desc
FROM itemfile;
? 使用DROP VIEW语句删除视图
SQL> DROP VIEW toys_view;
? 索引是与表相关的一个可选结构
? 用以提高 SQL 语句执行的性能
? 减少磁盘I/O
? 使用 CREATE INDEX 语句创建索引
? 在逻辑上和物理上都独立于表的数据
? Oracle 自动维护索引
? 索引分为:B树索引(平衡树索引)、位图索引。
? B树索引分为:唯一索引、组合索引、反向键索引、基于函数的索引
创建
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
索引
SQL> CREATE INDEX item_index ON itemfile (itemcode)
TABLESPACE index_tbs;
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
索引
? analyze index
validate structure;
查看index_stats表中的pct_used列的值,如果pct_used的
值过低,说明在索引中存在碎片,可以重建索引,来提高
pct_used的值,减少索引中的碎片。
? 唯一索引确保在定义索引的列中没有重复值
? Oracle 自动在表的主键列上创建唯一索引
? 使用CREATE UNIQUE INDEX语句创建唯一索引
SQL> CREATE UNIQUE INDEX item_index
ON itemfile (itemcode);
? 组合索引是在表的多个列上创建的索引
? 索引中列的顺序是任意的
? 如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度
SQL> CREATE INDEX comp_index
ON itemfile(p_category, itemrate);
? 反向键索引反转索引列键值的每个字节
? 通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
? 创建索引时使用REVERSE关键字
SQL> CREATE INDEX rev_index
ON itemfile (itemcode) REVERSE;
SQL> ALTER INDEX rev_index REBUID NOREVERSE;
? 位图索引适合创建在低基数列上
? 位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
? 节省空间占用
? 如果索引列被经常更新的话,不适合建立位图索引
? 总体来说,位图索引适合于数据仓库中,不适合OLTP中
SQL> CREATE BITMAP INDEX bit_index
ON order_master (orderno);
? 基于一个或多个列上的函数或表达式创建的索引
? 表达式中不能出现聚合函数
? 不能在LOB类型的列上创建
? 创建时必须具有 QUERY REWRITE 权限
SQL> CREATE INDEX lowercase_idx
ON toys (LOWER(toyname));
SQL> SELECT toyid FROM toys
WHERE LOWER(toyname)='doll';
重建索引
? ALTER INDEX index_name REBUILD [ONLINE] [NOLOGGING] [COMPUTE STATISTICS];
其中:ONLINE使得在重建索引过程中,用户可用对原来
的索引进行修改;
NOLOGGING表示在重建过程中产生最少的重做条目redo
Entry;
COMPUTE STATISTICS表示在重建过程中就生成了oracle
优化器所需的统计信息,避免了索引重建之后再进行analyze
或dbms_stats来收集统计信息。
删除索引
SQL> DROP INDEX item_index;
? 可以将索引存储在不同的分区中
? 与分区有关的索引有三种类型:
? 局部分区索引 - 在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致
? 全局分区索引 - 在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关
? 全局非分区索引 - 在分区表上创建的全局普通索引,索引没有被分区
? 与索引有关的数据字典视图有:
? USER_INDEXES - 用户创建的索引的信息
? USER_IND_PARTITIONS - 用户创建的分区索引的信息
? USER_IND_COLUMNS - 与索引相关的表列的信息
SQL> SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME
FROM USER_IND_COLUMNS
ORDER BY INDEX_NAME, COLUMN_POSITION
Stud_details
Sub_dets