Oracle Concept读书笔记(一)

本文介绍了三种数据库表分区策略:范围分区、列表分区和哈希分区。通过实例详细展示了每种分区方式的应用场景及创建语法。此外,还提供了事物控制语句和系统控制语句的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分区

1 分区策略

1)   范围分区

CREATE TABLE time_range_sales 

  ( prod_id        NUMBER(6)    ,

cust_id        NUMBER    ,

time_id        DATE    ,

channel_id     CHAR(1)    ,

promo_id       NUMBER(6)    ,

quantity_sold  NUMBER(3)    ,

amount_sold    NUMBER(10,2)    )

PARTITION BY RANGE (time_id)  ( /*以time id字段分区*/

PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),   /*time id 小于01 JAN 1999 为分区SALES_1998*/

PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')), /*time id 小于01 JAN 2000 为分区SALES_1999*/

PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')), /*time id 小于01 JAN 2001 为分区SALES_2000*/

PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE)  );/*其他 为分区SALES_2001*/

2)列表分区

CREATE TABLE list_sales   

( prod_id        NUMBER(6)    ,

cust_id        NUMBER    ,

time_id        DATE    ,

channel_id     CHAR(1)    ,

promo_id       NUMBER(6)    ,

quantity_sold  NUMBER(3)    ,

amount_sold    NUMBER(10,2)    )

PARTITION BY LIST (channel_id)  (/*以channel id字段分区*/

PARTITION even_channels VALUES (2,4),    /*channel id 为2或4的为分区even_channels */

PARTITION odd_channels VALUES (3,9)  )/*channel id 为3或9的为分区odd_channels */

3) 哈希分区

根据哈希算法决定所在的分区。当您插入行时,数据库会尝试随机、 均匀地将它们分布在各个分区之间。 您不能指定某行被放置在哪一个分区。数据库应用哈希函数,其结果确定由 哪个分区包含此行。如果重新更改了分区数目,那么数据库会在所有分区上 重新分布数据

CREATE TABLE hash_sales    (

prod_id        NUMBER(6)    ,

cust_id        NUMBER    ,

time_id        DATE    ,

channel_id     CHAR(1)    ,

promo_id       NUMBER(6)    ,

quantity_sold  NUMBER(3)    ,

amount_sold    NUMBER(10,2)    )

PARTITION BY HASH (prod_id)

PARTITIONS 2;



事物控制语句 example

SET TRANSACTION NAME 'Update salaries';   //事务
SAVEPOINT before_salary_update;  //设置事务回滚点
UPDATE employees SET salary=9100 WHERE employee_id=1234 # DML  //update
ROLLBACK TO SAVEPOINT before_salary_update;  //回滚到之前设定的回滚点
UPDATE employees SET salary=9200 WHERE employee_id=1234 # DML  //update
COMMIT COMMENT 'Updated salaries'; //commit提交update


系统控制语句

唯一的系统控制语句是 ALTER SYSTEM。

example:

ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM KILL SESSION '39, 23';
ALTER SYSTEM 语句不会隐式提交当前事务


嵌入式的 SQL 语句

定义、 分配、和释放游标 (DECLARE CURSOR, OPEN, CLOSE)。
 指定一个数据库,并连接到该数据库(DECLARE DATABASE, CONNECT)。
 分配变量名称 (DECLARE STATEMENT)。
 初始化描述符(DESCRIBE)
指定如何处理错误和警告(WHENEVER)。
分析并运行 SQL 语句 (PREPARE, EXECUTE, EXECUTE IMMEDIATE)。
从数据库中检索数据(FETCH)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值