Oracle事務和常用數(shù)據(jù)庫對象

博文結構
事務的使用
索引的使用
視圖的作用
序列、同義詞的使用
分區(qū)表的概念

我們提供的服務有:成都網站制作、網站建設、微信公眾號開發(fā)、網站優(yōu)化、網站認證、路南ssl等。為上千家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的路南網站制作公司

一.事務

Oracle通過事務來保證數(shù)據(jù)庫中數(shù)據(jù)的一致性。

  • 事務的含義

事務就是業(yè)務上的一個邏輯單元,它能夠保證其中對數(shù)據(jù)所有的操作要么全部成功,要么全部失敗

  • 事務開始于一條可執(zhí)行的SQL語句,繼續(xù)執(zhí)行事務主體,然后結束于以下的任意一種情況。

  • 顯式提交(commit): 當事務遇到cormmit指令時,將結束事務并永久保存所有更改的數(shù)據(jù)。

  • 顯式回滾(ollback); 當事務遇到rollback指令時,也將結束事務的執(zhí)行,但是此時它回滾
    所有更改的數(shù)據(jù)到事務開始時的原始值,即取消更改。

  • DDL語句:一旦用戶執(zhí)行了DDL (Data DefinitionLanguage,數(shù)據(jù)定義語言,如 CREATE. DROP
    等)語句,則之前所有的DML (Data Manipulation Language,數(shù)據(jù)操作語言)操作將作為一
    個事務提交.這種提交稱為隱式提交。

  • 正常結束程序:如果Oracle數(shù)據(jù)庫應用程序正常結束,如使用SQL Plus工具更改了數(shù)據(jù),
    而正常退出該程序(輸入"exit"), 則Oracle 自動提交事務。

  • 非正常地結束程序:當程序崩潰或意外中止時,所有數(shù)據(jù)更改都被回滾,這種回滾稱為隱
    式回滾。.

  • 事務的特點

事務的四個特性,即原子性(Atomicity). - 致性(Consistency)、隔離性. (Isolation)和持久性(Durability). 簡寫為ACID特性。

(1)原子性:要么同時成功,要么同時失敗,

(2) 一致性:無論是在事務前、事務中,還是在事務后,數(shù)據(jù)庫始終處于一致的狀態(tài)。

  • 事務控制

  • 先創(chuàng)建一個表空間
SQL> create tablespace sales
  2  datafile '/space/sales.dbf' size 100M;

表空間已創(chuàng)建。
  • 查看有哪些表空間
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
--------------------------------------------------------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
SALES

已選擇 6 行。
  • 創(chuàng)建表sales并將其放在sales空間中
SQL> create table sales
  2  (name varchar(50),
  3  sex varchar(10),
  4  address varchar(100),
  5  results float(10))
  6  tablespace sales;

表已創(chuàng)建。
  • 向表中插入如上表的第一條記錄
SQL> insert into sales values('zhangsan','nan','haidian',90);

已創(chuàng)建 1 行。
  • 提交事務(不提交則不會保存)
SQL> commit;                                                     

提交完成。
  • 回滾
SQL> rollback;

回退已完成。
  • 自動提交
    SQL> set autocommit on;

二.索引

  • 索引的含義

索引是Oracle的一個對象,是與表關聯(lián)的可選結構,提供了-種快速訪問數(shù)據(jù)的途徑,提高了數(shù)據(jù)庫的檢索性能。索引使數(shù)據(jù)庫程序無須對整個表進行掃描,就可以在其中找到所需要的數(shù)據(jù)。
索引的特點如下:

適當?shù)厥褂盟饕梢蕴岣卟樵兯俣取?br/>可以對表的一-列或多列建立索引。
建立索引的數(shù)量沒有限制
索引需要磁盤存儲,可以指定表空間,由Oracle自動維護。
索引對用戶透明,檢索時是否使用索引是由Oracle決定的。

  • Oracle的數(shù)據(jù)庫管理系統(tǒng)在訪問數(shù)據(jù)時使用以下兩種訪問方法.

全表掃描。
使用索引。

  • 索引的分類
  1. B樹索引
    索引的頂部為根,其中包含指向下一級索引的項。下一級為分支塊,分支塊又指向索引中下一級的塊。最低一級的塊稱為葉節(jié)點,其中包含指向表數(shù)據(jù)行的索引項。葉節(jié)點為雙向鏈接,有助于
    按關鍵字值的升序和降序掃描索引。
    如圖:

Oracle事務和常用數(shù)據(jù)庫對象

案例:

  • 對sales表的address列創(chuàng)建B樹索引sales_address_index
SQL> create index sales_name_index
  2  on sales(address);

索引已創(chuàng)建。
  • 對sales表的name列創(chuàng)建唯一索引sales_name_unique_index
SQL> create unique  index sales_name_unique_index  on sales(name);

索引已創(chuàng)建。
  • 創(chuàng)建反向索引
SQL> create index sales_reverse_index  on sales(results) reverse;

索引已創(chuàng)建。
  • 創(chuàng)建位圖索引
SQL> create bitmap index sales_bit_index on sales(sex);

索引已創(chuàng)建。
  • 創(chuàng)建索引的原則
頻繁搜索的列可以作為索引。
經常排序、分組的列可以作為索引。
經常用作連接的列(主鍵/外鍵)可以作為索引。
將索引放在一 個單獨的表空間中,不要放在有回退段、 臨時段和表的表空間中。
對大型索引而言,考慮使用NOLOGGING子句創(chuàng)建。
根據(jù)業(yè)務數(shù)據(jù)發(fā)生的頻率定期重新生成或重新組織索引,以進行碎片整理。
根據(jù)業(yè)務數(shù)據(jù)發(fā)生的頻率定期 重新生成或重新組織索引,以進行碎片整理。
不要在下面情況創(chuàng)建索引:
僅包含幾個不同值的列。
表中僅包含幾行。

三.視圖

視圖(View) 是- -個虛表,不占用物理空間,因為視圖本身的定義語句存儲在數(shù)據(jù)字典中。視圖中的數(shù)據(jù)是從一個或多個實際表中獲得的。那些用于產生視圖的表叫作視圖的基表。一個視圖也可以在另一個視圖中產生,。

物化視圖(Materialized View) 也稱實體化視圖、快照(Oracle 8i以前的說法),含有數(shù)據(jù),占用存儲空間,在數(shù)據(jù)倉庫中很有實用價值。

  • 視圖的作用
視圖隱藏了數(shù)據(jù)的復雜性,
視圖簡化了用戶的命令,
視圖將應用程序與基表定義的修改隔離開來,
視圖通過重命名列.

四.序列

序列是用來生成唯一的、 連續(xù)的整數(shù)類型的數(shù)據(jù)庫對象。序列通常用來自動生成主鍵或唯一鍵的值。序列可以按升序排列,也可以按降序排列。例如,銷售流水表中的流水號可以使用序列自動
生成。

  • 創(chuàng)建序列
SQL> create sequence sale_seq
  2  start with 1
  3  increment by 1
  4  nomaxvalue
  5  nocycle;

序列已創(chuàng)建。
  • 創(chuàng)建表project
SQL> create table project(id int,name varchar2(10));

表已創(chuàng)建。
  • 向project表添加記錄
SQL> create table project(id int,name varchar2(10));

表已創(chuàng)建。

SQL> insert into project values(sale_seq.nextval,'zhangsan');

已創(chuàng)建 1 行。

提交完成。
SQL> insert into project values(sale_seq.nextval,'lisi');

已創(chuàng)建 1 行。

提交完成。
SQL> select * from project;

    ID NAME
---------- ------------------------------
     1 zhangsan
     2 lisi
  • 查看序列的CURRVAL值
SQL> select sale_seq.currval from dual;

   CURRVAL
----------
     2
  • 修改序列的最大值到5000
SQL> alter sequence sale_seq
  2  maxvalue 5000
  3  cycle;

序列已更改。
  • 查看序列
SQL> select sequence_name,increment_by,cache_size from user_sequences where 
  2  sequence_name='SALE_SEQ';

SEQUENCE_NAME
--------------------------------------------------------------------------------
INCREMENT_BY CACHE_SIZE
------------ ----------
SALE_SEQ
       1         20

五.同義詞

同義詞是對象的一個別名,不占用任何實際的存儲空間,只在Oracle 的數(shù)據(jù)字典中保存其定義描述。在使用同義詞時,Oracle 會將其翻譯為對應對象的名稱。

  • 同義詞的用途

1)簡化SQL語句
2)隱藏對象的名稱和所有者
3)為分布式數(shù)據(jù)庫的遠程對象提供位置透明性
4)提供對數(shù)據(jù)庫對象的公共訪問

  • 同義詞的分類

同義詞可分為以下兩類
1)私有同義詞
2)公有同義詞

六.分區(qū)表

  • 分區(qū)表的含義
    Oracle允許用戶把-個表中的所有行分成幾部分,并將他們存儲在不同的表空間。分成的每部分稱為一個分區(qū),被分區(qū)的表稱為分區(qū)表(Partition).

  • 對于包含大量數(shù)據(jù)的表來說,分區(qū)很有必要.分區(qū)表的優(yōu)點如下:

改善表的查詢性能。在對表進行分區(qū)后,用戶執(zhí)行SaL查詢時可以只訪問表中的特定分區(qū)
而非整個表.表更容易管理。因為分區(qū)表的數(shù)據(jù)存儲在多個部分中,按分區(qū)加載和刪除數(shù)據(jù)比在表中加
載和刪除更容易。
便于備份和恢復??梢元毩⒌貍浞莺突謴兔總€分區(qū)。提高數(shù)據(jù)安全性。將不同的分區(qū)分布在不同的磁盤,可以減小所有分區(qū)的數(shù)據(jù)同時損壞的可能性。

案例:

創(chuàng)建表并且分區(qū),以age分區(qū)。
create table student
(
  id number,
  name varchar2(10),
  age number)
partition by range (age)
(
 partition p1 values less than (10),
 partition p2 values less than (20),
 partition p3 values less than (maxvalue)
);

2、向表中插入數(shù)據(jù)
insert  into student values(1,'t1',8);
insert  into student values(2,'t2',9);
insert  into student values(3,'t3',15);
insert  into student values(4,'t4',18);
insert  into student values(5,'t5',50);
3、分別查詢p1,p2,p3的數(shù)據(jù)
select * from student partition(p1);
select * from student partition(p2);
select * from student partition(p3);
4、要刪除小于10歲的數(shù)據(jù)。
delete from  student  partition(p1);

名稱欄目:Oracle事務和常用數(shù)據(jù)庫對象
URL鏈接:http://muchs.cn/article48/igspep.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、網站制作、域名注冊、全網營銷推廣定制開發(fā)、用戶體驗

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司