1. 程式人生 > >Oracle複習(3)

Oracle複習(3)

26 Oracle 預設事務是開啟的 但是不自動提交
	 Mysql 是自動提交的 預設不開啟事務或者本身並不支援事務
27 事務的概念
資料庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,
要麼完全地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,
否則不會永久更新面向資料的資源。通過將一組相關操作組合為一個要麼全部成功要麼全部失敗的單元,
可以簡化錯誤恢復並使應用程式更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、
一致性、隔離性和永續性)屬性。事務是資料庫執行中的邏輯工作單位,由DBMS中的事務管理子系統負責事
務的處理。
28 sql99 支援的四種隔離級別
READ UNCOMMITED (讀未提交) :髒讀,幻讀  不可重複讀
READ COMMITED(讀已提交);幻讀,不可重複讀。(ORACLE預設的隔離級別)
REPEATABLE READ(可重複讀)幻讀
SERIALIZABLE(序列化) 限制併發,效能低下
注:ORACLE 支援的2種事務隔離級別 READ COMMITED SERIALIZABLE 預設事務隔離級別為READ COMMITED 寫的時候只允許一個寫 讀的時候多個讀
		Mysql支援四種事務隔離級別 預設情況下是可重讀讀(REPEATABLE READ)。
29 幾個基本概念
髒讀:讀取了同一個資料庫中被更新 但是還沒有被提交的操作 若一旦這些操作被回滾,那麼讀取的內容就是臨時和無效的。
不可重複讀:對於同一個資料庫中的更新前後,對原有欄位的讀取值發生了變化,這裡主要是指對資料的更新
幻讀:插入新的一行後,前後兩次讀取的行數不一致,會多出幾行,這裡主要是指對資料的插入
30 事務的四個性質(ACID)
	(1)原子性(Atomicity)
			指的是事務包含的所有操作,要麼全部成功,要麼全部失敗回滾。
	(2)一致性(Consistency)
			指的是必須使資料庫從一個一致性狀態變換到另一個一致性狀態事務執行之前和執行之後都必須處於一致性狀態。
	(3)隔離性
			指的是多使用者併發訪問資料庫時,資料庫為每一個使用者開啟事務,不能被其他事務的操作干擾,多個併發事務之間不能相互干擾。
	(4)永續性
			指的是對資料庫的操作一旦提交,那麼對資料集資料的改變是永久的。即使資料庫系統遇到故障的情況下也不會丟失已經提交的事務的操作。
31 ROWID指的是資料庫的某一行的指標 指標相當於一個索引
		SELECT rowid ,t.* FROM T1 t; 
32 修改表結構 屬於DDL(資料庫定義語言)
	ALTER TABLE T1 ADD tnamess varchar2(20);--增加列
	ALTER TABLE T1 MODIFY tname2 varchar2(40) --修改列的型別和大小
	ALTER TABLE T1 RENAME COMLUMN tnamess TO tnames --修改列的名字
	ALTER TABLE T1 DROP COLUMN tnames --
33 表約束		
		CREATE  TABLE TEACHER(tid number  constraint teacher_tid_pk primary key ,--主鍵約束
		tname  varcahr(20) constraint teacher_tname_notnull not null,--非空約束
		temail  varcahr(40) constraint teacher_temail_unique unique,--唯一約束
		tsex number constraint  teacher_tsex_check check(tsex in(1,2)),--只能為1或者2
		tage  number constraint teacher_tage_check check(tage >10)--只能大於10
		);
		***主外來鍵約束***
		eg:給表增加外來鍵約束
		alter table teacher  add dept .number  constraint student_fk references dept(deptno) on delete set null;
34 資料庫物件
		表 基本的資料儲存的集合由行和列組成
		檢視 從表中抽出的邏輯上相關的資料集合(表的邏輯抽象,檢視本身沒有資料,還是來源於表 檢視相當於快捷方式 快速查看錶
		 檢視就是為了簡化查詢,限制資料訪問、提供資料的相互獨立性 同樣的資料,可以有不同的顯示方式)
		序列 提供有規律的數值
		索引 提高查詢的效率
		同義詞 給物件起別名
35 檢視建立
		CREATE VIEW v_emp AS (SELECT *FROM emp WHERE deptno =10) WITH CHECK OPTION ;--限制只能插入10號部門的員工資訊
		檢視中的DML語句 可以在簡單檢視中使用DML語句 
				當檢視定義中包含了以下元素之一的時候 不能使用delete :組函式、group by子句 distinct 關鍵字 rownum偽列
				當檢視中定義包含了以下元素之一的時候,不能使用update:組函式,group by, distinct關鍵字,rownum偽列,列的定義為表示式
				當檢視中定義包含了以下元素之一的時候,不能使用insert:組函式,group by,distinct 關鍵字,rownum偽列,烈的定義為表示式,表中非空的列在檢視中的定義未包括
35 刪除檢視
		drop view v_emp;
36 序列
		CREATE Sequence dept_seq [INCREMENT BY N] [START WITH N][{MAXVALUE N | NOMAXVALUE}] [MINVALUE N |NOMINVALUE] [CYCLE |NOCYCLE] [CACHE N |NOCACHE]
		可提供多個使用者用來產生唯一數值的資料庫物件
				自動提供唯一的數值 共享物件 主要用於提供主鍵值 將序列值裝入記憶體可以提高訪問效率
				注:多個表使用同一個序列回使序列不連續 回滾 系統異常也會使序列不連續。
37 關於索引的小專題
	索引和表示單獨存放的
	索引對DBA和開發人生,使用起來是透明的的 只要建立索引。
	加快檢索速度
	CREATE INDEX MYINDEX ON EMP(DEPTNO);
		CREATE INDEX MYINDEX ON EMP(DEPTNO,JOB);		
		索引 :一種獨立於表的模式物件,可以存在於表不同的磁碟中,或者表空間中,索引被刪除或者損壞,不會對錶產生影響,其影響的只是查詢的速度。
	索引一旦建立,ORACLE管理系統會對其進行自動維護,而且Oracle管理系統決定何時會引用索引,使用者不用再查詢語句中指定使用哪一個索引 在刪除一個表的時候
	也會刪除基於該表的索引 通過指標加速ORACLE伺服器的查詢速度 通過快速定位資料的方法,減少磁碟I/O