1. 程式人生 > >Oracle事務和常用數據庫對象

Oracle事務和常用數據庫對象

oracle

1、事務:有一組命令組成的邏輯單元,保證所有操作要麽全部成功要麽全部失敗。
以下情況事務結束:1)顯式提交(commit) 2)顯式回滾(rollback) 3)ddl語句隱身提交 4)正常結束程序提交 5)非正常結束程序回滾
事務特點:ACID特性
1)原子性 2)一致性 3)隔離性 4)持久性
命令:commit 提交 rollback 回滾 set autocommit on 自動提交(回滾無效)
2、索引:快速訪問數據,一個單列最多只能建一個索引
訪問數據的方法:全表掃描、通過rowid(行號)、索引
索引分類:1)B樹索引:(balance平衡索引)每個節點查詢速度一樣,默認為b樹索引,唯一索引和復合索引同時也是b樹索引。
2)唯一索引(unique):索引列沒有重復值
3)反向鍵索引(reverse):反轉索引列的數據值。適應建在列值連續增長的列上。不能做範圍查詢。
4)位圖索引(bitmap):適應於列值很少的列上。占用空間小、減少響應時間,不適應頻繁更改的表
5)其他索引:組合索引、函數索引
命令: 1)創建索引:create [unique|bitmap] index 索引名 on 表名(列名) [reverse]
2) 重建索引:alter index 索引名 rebulid
3)合並索引:alter index 索引名 coalesce
3、視圖:虛擬表不占空間,數據存儲在基表中。
語法:create [or replace替換] [force強制] view 視圖名 as sql語句 [with check option約束][with read only只讀]
force強制創建帶錯誤視圖:無論基表是否存在、列是否有效、表是否有權限 sql語句中可以帶order by字句
with check option只能插入或更新可以訪問的行
對視圖的修改只能對一個基表並且不能違反約束不包含聚合函數
作用:保證數據安全性、隱藏數據的復雜性、簡化命令、與基表定義的修改隔離、可以靈活的重命名列
物化視圖:具有物理存儲空間的特殊視圖。有兩個概念:查詢重寫和物化視圖同步,同步刷新有on commit(基表更改即同步到視圖)和on demand(手動)兩種方式,刷新方式有complete(完全)、force(默認方式,優先fast)、fast(增量)、never(不刷新)四種
創建物化視圖(需要有相應權限):1)創建物化日誌:create materialized view log on 表名 with rowid;
2)創建物化視圖:create materialized view 視圖名 build immediate refresh fast on commit enable query rewrite as sql語句
4、序列: 用來生成連續的整數值的列值,可以升序或降序。
語法:create sequence 序列名 [start with 初始數字][increment by 增長值][maxvalue 最大值][minvalue 最小值]
可以用nextval查詢下一個序列值和currval查詢當前序列值,偽列的值存儲在虛擬表dual中
查詢序列:select sequence_name,increment_by from user_sequences
5、同義詞:對象的別名,不占用空間
用途:簡化sql語句、隱藏對象名稱和所有者、為遠程對象提供位置透明性、提供對數據庫對象的公共訪問。
分類:私有同義詞、公有同義詞
1)私有同義詞:只能被當前模式用戶訪問必須有create [any] synonym權限
creae synonym 同義詞名稱 for 對象名
2)公有同義詞:可以被所有的用戶訪問,必須有create public synonym權限
create public synonym 同義詞名 for 對象名
6、分區表:將一個表分成幾部分存儲在不同的表空間成為一個個分區。
有點:改善表的查詢性能、表更容易管理、便於備份和恢復、提高數據安全性
分區方法:範圍(range)、列表(list)、散列(hash)、復合、間隔、虛擬列分區
語法:create table 表名(字段1,字段2,..) patiton by range(分區字段) (partition p1 values less then (值),partition p2 ....)
查詢分區表:select from 表名 partition(p1)
命令:
alter user scott account unlock 解除對scott用戶的鎖定
alter user scott identified by 密碼 設置scott用戶的密碼
grant connect,resource to scott 為scott用戶授權
select username,account_status from dba_users 查用戶的鎖定狀態
select object_name,object_type from user_objects 查用戶所有對象及類別
select rowid,rownum from dept 查dept表的偽列rowid和rownum,序列中的nextval和currval都是偽列,可查不可修改
select table_name,index_name,column_name from user_ind_columns 查被索引字段
create unique index dept_index on dept(dname) 在dept表中創建dname的唯一索引
create index emp_reserve on emp(empno) reverse; 在emp表中創建empno的反向索引
alter table emp drop constraint pk_emp cascade drop index; 刪除主鍵索引
create view v3 as select
from dept where loc=‘BOSTON‘ with check option constratint ycq; 在dept表創建v3視圖,並添加約束禁止修改loc列
grant create materialized view,query rewrite,create any table,select any table to scott;授予scott有創建物化視圖和任意表的權限
select 序列名.nextval,序列名.currval,user,sysdate from dual 查詢下一個和當前序列號及當前用戶和系統時間
grant create any synonym to scott; 授予scott用戶有創建任意同義詞的權限
create synonym e for emp; 為emp表創建私有同義詞e
create public synonym a for emp; 為emp表創建公有同義詞a
create table student (id int,name char(10)) partition by range (id) (partition p1 value less than (‘10‘),partition p2 value less than (‘20‘),partition p3 value less than (‘30‘),partition p4 value less than (maxvalue)); 創建student表,id小於10的為第一分區表...

Oracle事務和常用數據庫對象