Oracle數據庫學習筆記(下)

1只泼、組函數:組函數作用于一組數據矛辕,并對一組數據返回一個值。

AVG 平均值

COUNT?計數

MAX?最大值

MIN?最小值

SUM?求和

可以對數值型數據使用AVG 和 SUM 函數

可以對任意數據類型的數據使用 MIN 和 MAX 函數漓柑。

不能在WHERE子句中使用組函數竟宋。

可以在HAVING子句中使用組函數。

嵌套組函數

SELECT MAX (AVG(salary))

FROM employees

GROUP BY department_id;

2泄私、可以使用 GROUP BY 子句將表中的數據分成若干組

SELECT department_id,AVG(salary)

FROM employees GROUP BY department_id ;

使用 HAVING 過濾分組:

行已經被分組房揭。

使用了組函數。

滿足HAVING子句中條件的分組將被顯示晌端。

SELECT department_id, MAX(salary)

FROM employees

GROUP BY department_id

HAVING MAX(salary)>10000 ;

3捅暴、SQL支持下列類別的命令:

數據定義語言(DDL)

CREATE? ALTER? DROP

數據操縱語言(DML)

INSERT? SELECT? DELETE UPDATE

事務控制語言(TCL)

COMMIT? SAVEPOINT? ROLLBACK

數據控制語言(DCL)

GRANT REVOKE

4、事務的ACID特性

原子性:任何一個事務都是一個整體咧纠,不可以再分割蓬痒,要么一起執(zhí)行要么一起回滾。

一致性:必須從一個正確的狀態(tài)到另外一個正確的狀態(tài)漆羔。

隔離性:一個會話沒有提交的數據梧奢,其他的會話是不能看到。

持久性:提交事務以后演痒,事務的操作會被持久化到數據庫當中亲轨,不能回退,別的會話可以看到事務操作的結果

5鸟顺、使用 SAVEPOINT 語句在當前事務中創(chuàng)建保存點惦蚊。

使用 ROLLBACK? TO? SAVEPOINT 語句回滾到創(chuàng)建的保存點。

自動提交在以下情況中執(zhí)行:

DDL語句讯嫂。

DCL語句蹦锋。

不使用COMMIT或ROLLBACK語句提交或回滾,正常結束會話欧芽。

會話異常結束系統(tǒng)異常會導致自動回滾莉掂。

6、讀一致性為數據提供一個一致的視圖

一個用戶的對數據的改變不會影響其他用戶的改變

對于相同的數據讀一致性保證:

查詢不等待修改千扔。

修改不等待查詢憎妙。

7库正、Oracle 數據庫中,鎖是 :

并行事務中避免資源競爭厘唾。

避免用戶動作诀诊。

自動使用最低級別的限制。

在事務結束結束前存在阅嘶。

兩種類型:顯式和隱式属瓣。

兩種模式:

獨占鎖:屏蔽其他用戶。

共享鎖:允許其他用戶操作讯柔。

8抡蛙、只讀事務:在事務中看不到其他會話的修改,在當前會話只允許查詢

順序事務:同上魂迄,但是可以在當前會話中做DML操作

9粗截、多表查詢 :自連接、內連接捣炬、外鏈接熊昌、子查詢

自連接就是把某一張表中的行同該表中另外一些行連接起來。自連接主要用于查詢比較相同的信息湿酸,所比較的列必須有相同的或兼容的數據類型婿屹。

為了連接同一個表,需要為該表指定兩個不同的別名推溃,只有這樣才能把該表邏輯上作為兩個不同的表使用昂利。

select a.ename, a.sal, b.ename from empa,emp b?

where a.deptno=b.deptno;

內連接把兩個表連接成一個表(稱為第三個表),在這個表中僅包含那些滿足連接條件的記錄行铁坎。

內連接保證了兩個表中所有的行都滿足連接條件蜂奸,但卻丟失了一些不滿足連接條件的數據。

select * from goods, buy where goods.goods_no=buy.goods_no;

外連接如果想只限定一個表的條件而不限定另外一個表的條件硬萍,就需要使用外連接扩所。

外連接只能用于兩或兩張以上的連接。

包括左外連接和右外連接朴乖,用(+)表示可以 填充NULL值祖屏。

SELECT 別名1.colmun, 別名2.colmun

FROM table1 別名1 LEFT (OUTER) JOIN table2 別名2

ON 別名1.colmun1=別名2.colmun2;

左外連接查詢

SELECT別名1.colmun,別名2.colmun

FROM table1 別名1,table2 別名2?

WHERE 別名1.colmun1=別名2.colmun2(+);

右外連接查詢

SELECT 別名1.colmun, 別名2.colmun

FROM table1 別名1, table2別名2

WHERE 別名1.colmun1(+)= 別名2.colmun2;

子查詢在主查詢之前一次執(zhí)行完成

SELECT last_name FROM employees

WHERE salary >

(SELECT salary FROM employees WHERE last_name= 'Abel');

子查詢要包含在括號內。

將子查詢放在比較條件的右側寒砖。

除非進行Top-N分析赐劣,否則不要在子查詢中使用ORDER BY子句嫉拐。

單行操作符對應單行子查詢哩都,多行操作符對應多行子查詢。

多行子查詢:返回多行婉徘,使用多行比較操作符

多行比較操作符

10漠嵌、EXISTS 操作符檢查在子查詢中是否存在滿足條件的行

如果在子查詢中存在滿足條件的行:

不在子查詢中繼續(xù)查找

條件返回TRUE

如果在子查詢中不存在滿足條件的行:

條件返回FALSE

繼續(xù)在子查詢中查找

11咐汞、Oracle?數據對象:視圖、序列儒鹿、索引化撕、同義詞

為什么使用視圖?

控制數據訪問

簡化查詢

數據獨立性

避免重復訪問相同的數據


簡單視圖和復雜視圖

12约炎、創(chuàng)建視圖

CREATE VIEW empvu80

AS SELECT employee_id,last_name,salary

FROM employees?

WHERE department_id= 80;

13植阴、修改視圖

使用CREATE OR REPLACE VIEW子句修改視圖

CREATE OR REPLACE VIEW empvu80

(id_number, name, sal, department_id)

AS? SELECT employee_id, first_name || ' ' || last_name,

salary,department_id FROM employees

WHERE department_id = 80;

14、當視圖定義中包含以下元素之一時不能使用delete:

組函數

GROUP BY 子句

DISTINCT關鍵字

ROWNUM 偽列

當視圖定義中包含以下元素之一時不能使用update

組函數

GROUP? BY子句

DISTINCT 關鍵字

ROWNUM 偽列

列的定義為表達式

當視圖定義中包含以下元素之一時不能使用insert

組函數

GROUP BY子句

DISTINCT關鍵字

ROWNUM偽列

列的定義為表達式

表中非空的列在視圖定義中未包括

15圾浅、n使用WITH CHECK OPTION子句確保DML只能在特定的范圍內執(zhí)行

CREATE? OR REPLACE VIEW empvu20

ASSELECT * FROM employees

WHERE department_id= 20

WITH CHECK OPTION CONSTRAINT empvu20_ck ;

任何違反WITH CHECK OPTION約束的請求都會失敗

刪除視圖只是刪除視圖的定義掠手,并不會刪除基表的數據

DROP VIEW view;

16、什么是序列狸捕?

自動提供唯一的數值

共享對象

主要用于提供主鍵值

代替應用代碼

將序列值裝入內存可以提高訪問效率

創(chuàng)建序列DEPT_DEPTID_SEQ 為表 DEPARTMENTS 提供主鍵

不使用CYCLE選項

CREATE SEQUENCE dept_deptid_seq

INCREMENT BY 10

START WITH 120

MAXVALUE 9999

NOCACHE?

NOCYCLE ;

查詢數據字典視圖USER_SEQUENCES獲取序列定義信息

SELECT sequence_name, min_value, max_value,

increment_by , last_number

FROM? user_sequences;

17喷鸽、NEXTVAL 和 CURRVAL 偽列

NEXTVAL 返回序列中下一個有效的值,任何用戶都可以引用

CURRVAL 中存放序列的當前值

NEXTVAL 應在 CURRVAL 之前指定 灸拍,二者應同時有效

18做祝、修改序列

修改序列的增量,最大值,最小值,循環(huán)選項,或是否裝入內存

ALTER SEQUENCE dept_deptid_seq

INCREMENT BY 20

MAXVALUE 999999

NOCACHE

NOCYCLE;

注意事項:

必須是序列的擁有者或對序列有ALTER權限

只有將來的序列值會被改變

改變序列的初始值只能通過刪除序列之后重建序列的方法實現

其它的一些限制

使用DROP SEQUENCE語句刪除序列

刪除之后,序列不能再次被引用

19鸡岗、索引

一種數據庫對象

通過指針加速Oracle服務器的查詢速度

通過快速定位數據的方法混槐,減少磁盤I/O

索引與表相互獨立

Oracle服務器自動使用和維護索引

創(chuàng)建索引

自動創(chuàng)建:在定義PRIMARY KEY或UNIQUE約束后系統(tǒng)自動在相應的列上創(chuàng)建唯一性索引

手動創(chuàng)建:用戶可以在其它列上創(chuàng)建非唯一的索引,以加速查詢

在表EMPLOYEES的列LAST_NAME上創(chuàng)建索引

CREATE INDEX emp_last_name_idx

ON employees(last_name);

適合創(chuàng)建B-TREE索引的時機:

列值基數比較高(重復率比較低)

不以空值做條件

列經常出現在條件子句中

表很大

經常做查詢操作轩性,而不是DML操作

滿足條件的數據不超過總記錄數的15%

模糊查詢不走索引纵隔,如果模糊查詢想使用索引,必須用全文檢索技術

可以使用數據字典視圖USER_INDEXES和USER_IND_COLUMNS查看索引的信息

SELECT ic.index_name,ic.column_name,ic.column_positioncol_pos,ix.uniqueness

FROM user_indexesix,user_ind_columnsic

WHERE ic.index_name=ix.index_name

AND ic.table_name= 'EMPLOYEES';

基于函數的索引是一個基于表達式的索引

索引表達式由列,常量,SQL函數和用戶自定義的函數

CREATE INDEX upper_dept_name_idx

ON departments (UPPER(department_name));

Index created.

SELECT * FROM departments

WHERE UPPER(department_name) ='SALES';

位圖索引是在基數較小炮姨,即重復率很大的列值中創(chuàng)建比較適用

create bitmap index emp_jobid_bmidx

on empcopy (job_id);

使用DROP INDEX命令刪除索引

DROP INDEX index捌刮;

只有索引的擁有者或擁有DROP ANY INDEX權限的用戶才可以刪除索引

20、使用同義詞訪問相同的對象:

方便訪問其它用戶的對象

縮短對象名字的長度

為視圖DEPT_SUM_VU創(chuàng)建同義詞

CREATE SYNONYM? d_sum

FOR dept_sum_vu;

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末舒岸,一起剝皮案震驚了整個濱河市绅作,隨后出現的幾起案子,更是在濱河造成了極大的恐慌蛾派,老刑警劉巖俄认,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異洪乍,居然都是意外死亡眯杏,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門壳澳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岂贩,“玉大人,你說我怎么就攤上這事巷波∥颍” “怎么了卸伞?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锉屈。 經常有香客問我荤傲,道長,這世上最難降的妖魔是什么颈渊? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任遂黍,我火速辦了婚禮,結果婚禮上俊嗽,老公的妹妹穿的比我還像新娘妓湘。我一直安慰自己,他們只是感情好乌询,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布榜贴。 她就那樣靜靜地躺著,像睡著了一般妹田。 火紅的嫁衣襯著肌膚如雪唬党。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天鬼佣,我揣著相機與錄音驶拱,去河邊找鬼。 笑死晶衷,一個胖子當著我的面吹牛蓝纲,可吹牛的內容都是我干的。 我是一名探鬼主播晌纫,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼税迷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锹漱?” 一聲冷哼從身側響起箭养,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哥牍,沒想到半個月后毕泌,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡嗅辣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年撼泛,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澡谭。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡愿题,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情抠忘,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布外永,位于F島的核電站崎脉,受9級特大地震影響,放射性物質發(fā)生泄漏伯顶。R本人自食惡果不足惜囚灼,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祭衩。 院中可真熱鬧灶体,春花似錦、人聲如沸掐暮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽路克。三九已至樟结,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間精算,已是汗流浹背瓢宦。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灰羽,地道東北人驮履。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像廉嚼,于是被迫代替她去往敵國和親玫镐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容