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

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

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

一.事務(wù)

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

  • 事務(wù)的含義

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

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

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

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

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

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

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

  • 事務(wù)的特點(diǎn)

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

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

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

  • 事務(wù)控制

  • 先創(chuàng)建一個(gè)表空間
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 行。
  • 提交事務(wù)(不提交則不會(huì)保存)
SQL> commit;                                                     

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

回退已完成。
  • 自動(dòng)提交
    SQL> set autocommit on;

二.索引

  • 索引的含義

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

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

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

全表掃描。
使用索引。

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

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

三.視圖

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

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

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

四.序列

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

  • 創(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

五.同義詞

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

  • 同義詞的用途

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

  • 同義詞的分類

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

六.分區(qū)表

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

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

改善表的查詢性能。在對表進(jìn)行分區(qū)后,用戶執(zhí)行SaL查詢時(shí)可以只訪問表中的特定分區(qū)
而非整個(gè)表.表更容易管理。因?yàn)榉謪^(qū)表的數(shù)據(jù)存儲在多個(gè)部分中,按分區(qū)加載和刪除數(shù)據(jù)比在表中加
載和刪除更容易。
便于備份和恢復(fù)??梢元?dú)立地備份和恢復(fù)每個(gè)分區(qū)。提高數(shù)據(jù)安全性。將不同的分區(qū)分布在不同的磁盤,可以減小所有分區(qū)的數(shù)據(jù)同時(shí)損壞的可能性。

案例:

創(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、要?jiǎng)h除小于10歲的數(shù)據(jù)。
delete from  student  partition(p1);

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

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

廣告

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

成都app開發(fā)公司