oracle學習

數據庫:

	對數據持久化操作。持久安全存儲叫大量的數據,支持多用戶操作、支持錯誤操作撤銷,具有多樣性數據,支持數據備份、移植;
	是按照數據結構來組織、存儲、操作數據的倉庫;簡單的視作電子文庫用來存儲電子文件

數據庫分爲關係型和非關係型:根據存儲數據之間的聯繫;通常關係型數據庫使用二維表來存儲數據,而非關係型數據庫使用網狀(或者多維表)來存儲數據

關係型數據庫中oracle的數據存儲形式爲:
表(table):存儲數據之間的結構 列(column):存儲數據的屬性
主鍵(primary key):關鍵字,唯一標識一行數據 行(row):數據的具體內容

SQL語言

	sql語句存在預期結果與實際結果!所有出現結果不一定代表是對的!!只能說明當前sql語句的語法沒有錯誤!!!
**select語句(查詢數據庫內數據)順序不能混亂**
	select 列名 from 表名(只要能形成一張表都可以添加在此處)
	where 條件
	group by 列名	(分組後查詢的列名只能爲分組後添加的)
	having 條件	(分組判斷)
	order by 列名		desc(降序),asc(默認,升序)

**篩選關鍵字**
	distinct:去除查詢結果中重複的數據
	純數字字符組成的列可以進行簡單的運算;多列數據合並可以使用||來合併,並使用as關鍵字來取代合併後的新列名
	as:可以用來聲明屬性的別名(可以省略);表也有別名,但不用as關鍵字,直接在表名後空一格直接聲明
	like:模糊查詢,與通配符“%(表示可以爲任意長度的任意字符)”和“_(可以代替一個字符)”配合使用
	null不能使用=來判斷,需要使用is來判斷;操作中要使用到空時,可以使用函數nvl(列名,0)來使空對應的列轉爲0
	sysdate:表示系統當前時間
	dual是一個虛擬存在的表,稱爲啞表、虛表
	between...and...在什麼區間之內(是閉區間)
	rowid:僞列(數據庫對存入數據進行編號),不主動發起調用不會展示
	rownum:僞列(對於查詢結果進行編號),不主動發起查詢不會展示;
	利用rownum進行分業操作時,需要注意編號與判斷的時機:
	如果rownun與where同時使用,則只能使用與小於號相關的判斷類型,否則竟沒有任何結果

**單值函數:**
	to_char()可以把日期類型轉化爲字符類型
	to_date()可以把字符類型轉換爲日期類型

**組函數:**
	sum():求和函數,統計所有數據或者分組數據
	avg():求平均數,所有數據平均數或者分組平均數
	count():統計所有數據的個數(注意:不會統計null)

**連接查詢:**
	(內)連接查詢:select 列名(需要註明來源的表) from  A  (inner)  join B	  on  連接條件
	(左)外鏈接:select 列名(需要註明來源的表) from  A  left  (outer)  join  B  on  連接條件
	(右)外鏈接:select 列名(需要註明來源的表) from  A  right (outer)  join  B  on  連接條件
	(全)外鏈接:select 列名(需要註明來源的表)  from  A  full  (outer)  join B  on  連接條件

DDL數據定義語言

**數據類型:**
	number(位數,小數位數):定義整數時可以省略小數部分的書寫;表示一共是幾位數,包含幾位小數
	Integr:表示32位整數
	char(長度)定長:存儲數據時系統會根據定義時的長度,來開闢空間,如果數據位數不足,則使用“ ”(空格)來補位,存儲進數據庫時使用null補位。
	varchar(長度)變長:存儲數據時,系統會根據實際需求來分配合適的空間;因此產生了測量,浪費時間
	varchar2(長度):oracle數據庫獨有,使用算法來減少測量所花費的時間
	Date 日期
**約束條件:**
	主鍵約束:primary  key  唯一、非空
	非空約束:not null
	唯一約束:unique
	檢查約束:chaeck通常在前端都已經檢查過符合數據庫存儲
	外鍵約束:references 表名(唯一約束列名)
	外鍵通常來源於另一張表的唯一約束
	外鍵通常存在數據較多的一張表;存在違建的表稱爲子表,被應用外鍵的稱爲父表
**建表:**create table 表名(列名 類型 約束條件)	   記得在最後一個列名後不要書寫逗號
**銷燬:**drop table 表名		
**級聯刪除(刪除表不管是否存在與其他表的關聯關係)**:drop table 表名 cascade constraint
**修改:**alter table 表名 modify 列名 類型(修改前提表內沒有數據)
			  alter table 表名	rename column 原列名 to 新列明
			  alter table 表名 add 列名 類型
創建表:父表創建要先於子表的創建
刪除表:父表的刪除要先於子表的刪除

DML數據庫管理語言

**增加**:insert into 表名(列名)	values(對應數據)
**刪除**:delete 表名 where	條件(如果不寫條件,默認刪除所有數據)
**修改**:update 表名 set 列名 = 修改內容 where 篩選條件

TCL事物控制語言

數據庫的一種機制,保證業務操作的完整性:要麼完成整個操作,要麼整個操作都不完成;使用commit、rollback來控制
**ACID**:A(atomic)業務操作(多條sql語句)的原子性;C(consistency)業務操作前後保持一致性;I(isolation)併發訪問數據庫中操作者的事物相互獨立;D(durability)操作完成後需要經數據存入數據庫

Oracle數據庫中的對象

**sequence:數字自增長策略**
	創建:create sequence 序列名 ...
	後面可以接:start with(代表序列從幾開始)、increment by(每次增加幾)、minvalue\maxvalue(上下限)、cycle(循環自增)、cache size(緩存大小)
	序列並不是臨時創建,而是一次性創建多個。默認20個、
	使用:序列名.nextval()
	刪除:drop sequence 序列名

**view視圖(虛表)**
	創建:create view 視圖名 as 查詢語句
	使用:根表一樣
	銷燬:drop view 視圖名
	注意:不能使用視圖來進行DML操作;視圖不會提高效率

**Index索引**
	創建:create index 索引名 on 表名
	使用:自動調用
	銷燬:drop index 索引名
	索引會降低增刪改效率,回體改查詢效率
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章