Oracle回顧,oracle
回來之後錄了幾集視頻,開始錄得時候還不知道怎麼錄,錄了幾集就沒什麼了,每一集十幾分鐘錄得不好了可以重新錄,過程中也也把Oracle資料庫這部分看了一遍,收穫也挺多的,學習是重複積累的過程,對於一些零散的知識點又回顧了一下,重新複習一遍其中有些已經學過,有些僅僅是有一點點印象,記得有一句話叫做“一本書只要其中有一句話對你很有協助,那麼它是有價值的”,看完這個視頻也學習和加深了一些知識的離家,並總結如下,大家可以作為參考。
資料庫理解
電腦就如同我們的身體各個部分,資料庫=大腦,五官=程式設計語言,血液=資料匯流排,作業系統=人體。
在大腦裡面儲存著各種資訊,通過我們的眼、耳等五官輸入到我們的大腦裡面,因此五官就像我們平時使用的各種程式設計語言,而作業系統就好比我們的身體支撐著我們個個部分的結構完整,保證它們能夠正確運行,電腦和我們的身體是一樣的,大同小異,畢竟是人發明了電腦。
Oracle使用者
超級管理員sys/chage_on_install
普通管理員system/manage
普通使用者scott/triger
Oracle中的函數
單行函數
字元函數
substr(),截取字串
數字函數
round()隨機函數
mod()取摸函數
日期函數
Sysdate()取得當前日期
對於日期,加減一個數,等於若干天之後或之前的一個日期
轉換函式
to_char(),To_char('12345678'.'999,999')
to_date(),例如To_date(SYSDATE,'yyyy-mm-dd')
通用函數
NVL(),將一個null的欄位值變為0,例如select NVL(name,0) from table1 ,如果name為null時,將輸出0而不是null
decode(),判斷一個欄位等於多少,然後,輸出多少,例如上面name=1.輸出張三;name=2輸入李四
多表查詢
一般超過兩個表一起查詢就會差生笛卡爾積的現象,查詢出來的結果為兩個表的記錄數乘機,我們需要利用等值條件消除笛卡爾積,只是查詢出來的結果進行了消除,但是從本質上看並沒有消除,還是有笛卡爾積的現象,因此,並不建議使用多表查詢,多表查詢影響查詢效率,尤其是在多表大資料查詢時更不建議使用聯集查詢,
在真正的大資料系統中 通常在查詢資料之前,需要先看一下裡面有多少資料,只查詢出自己想要的資料即可。
分組查詢
對於複雜的SQL語句需要自己多練習才可以靈活掌握,並想它們之間的關係和每個SQL語句的作用,隨著使用的加深會對每個SQL文法理解更深刻,如果再出現類似的查詢會出現的思路變多。
查詢時PS:
1. 通常子查詢寫在from或where關鍵字之後;作用是形成新的表和結果集,可以從新的結果集中查詢或得到條件。
2.where條件在group by之前執行,即先進行條件過濾,把過濾後的結果按照某一個欄位進行分組。
3.如果分組之後還需要對結果進行過濾,那麼就得使用HAVING欄位設定過濾條件了。
4.排序關鍵系ORDER BY在SQL語句的最後執行。
只要記住這幾個原則,再加上多多練習複雜一些的查詢,SQL語句應該是沒有什麼問題的,再難的查詢也不過是這些單詞的拼接和組合。
序列的使用
以前也聽說過序列,但是自己沒用過。因為總覺得很麻煩,所以沒有使用過。這次項目中用到了,而且視頻也講到了,才發現,很簡單很實用。
文法:
CREATE SEQUENCE myseq
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數
NOMAXVALUE -- 不設定最大值
NOCYCLE -- 一直累加,不迴圈
CACHE 10;
使用的時候,例如插入,只用在對應的列賦值myseq.NEXTVAL即可。
例如
INSERT INTO emp VALUES (myseq.nextval, 'LEWIS');
交易處理
對於操作資料庫的每一次串連,它是同資料庫建立了一個session,即一個會話這個會話雖然不是web層的會話但同那個會話也很類似,在一個session中對資料庫進行各種操作即是在同一個事務中,這種事物是本地事務,如果是更新操作上一個事物沒有更新完成,下一個事物不能進行提交和操作,因為在更新的時候資料庫會自動枷鎖,知道更新操作完成才會釋放鎖。
資料偽列
指的不是我們設計資料庫的人自己添加的列,而是隱含的列我們可以使用,Oracle中常見的兩個偽列為ROWNUM、ROWID,經常用到的是ROWNUM這個列,ROWID為記錄的物理地址,我們可以利用這一點實現分頁效果,看下面代碼
Select * from(select ROMNUM rm,id whereROMNUM<=10) temwhere tem>5
ROWNUM;每次查詢都變不固定
ROWID:資料記錄的物理地址
閃回技術
從Oracle10g之後的資料庫都提供了閃回技術,相當於一個資源回收筒的功能,刪除的資料或者表什麼的可以從資源回收筒裡面找回來,這個功能在有時候挺實用的,值得我們去瞭解瞭解。
簡單命令:
查看資源回收筒裡面內容show recyclebin
找回刪除的表:Flashback table tablename to before drop
清空資源回收筒:Purge recyclebin
約束
非空
一個欄位不可為空,not null
唯一性
該約束是對某個具體欄位而言,將某個欄位設為唯一則該欄位不會出現重複記錄,但要記住null是可以的,只要不重複就行。
主鍵
主鍵=非空+唯一性
外鍵
如果一個表的主鍵再另一個表中當做外鍵,那麼這個鍵就是外鍵約束,外鍵和主鍵約束是同時存在的。
檢查
即對一個欄位做一些限制,例如性別:在資料庫中限制只能輸入男或女。
聯集查詢
串連兩個表的查詢結果
Union:聯集查詢,相同的部分不顯示
Union all:相同的部分顯示
Intsersect:只顯示相同的部分
Minus:只顯示不同部分
視圖
第一類 on with check option
這種視圖是待查詢條件的視圖,可以更新,但是不能更新查詢條件
第二類 with read only
該視圖為唯讀,不可以對該視圖中的任何一個欄位
索引
索引的主要功能就是用於提升資料庫的操作效能。
Select * from table1 where id>10000
i. 上面的語句是逐行進行判斷,沒有加索引
ii. 加索引之後會對加索引的那列,二叉樹排列,如下
1)
2) 再執行上面語句,只查詢部分記錄
3) 如果某列是主鍵約束,則自動建立索引
4) 手工建立,在某一個列上建立
iii. 這種索引有一個問題,即:如果想要性誰能提高,則必須維持以上的這棵樹,如果資料需要頻繁修改的話,則代碼效能會下降。
iv. 所以,一般索引只使用在不會頻繁修改的表中,而如果一張表上頻繁修改資料切又使用索引,效能會降低,所以,效能提升永遠是相對的。
v. 這種所以是Oracle十幾種索引中的一種,也是最簡單一種稱為:B樹索引。還有位元影像索引、函數索引等
Database Backup
在上線的項目中,Database Backup是很重要的一個工作。
匯入匯出
冷備份
先把資料庫停止運行了,再進行備份,類似於熱插拔。
資料庫監聽
1.監聽用戶端串連
監聽為資料庫執行個體服務,當使用者第一次登陸執行個體時先通過監聽,再串連,第二次串連就不通過監聽了
b. Oracle開始沒有在window上,後來移植到了window所以,提供監聽了
c. 當安裝到window上之後,適應了些window操作習慣,可以傻瓜登陸,window模式
e. 監聽需要判斷是普通使用者登入還是sysdba登入,如果是普通使用者就去資料庫驗證;如果是dba就是密碼檔案或作業系統驗證
f. 作業系統驗證
i. 對於DBA,首先是作業系統驗證,所以,不寫密碼或則隨便寫都可以登入,因為他是作業系統使用者
1) 如果把作業系統認證 取消,則進行密碼檔案驗證,再不寫密碼就不行了
2.管理執行個體
多個資料庫執行個體可以同時註冊到一個監聽器上,它們把自己的執行個體名等參數資訊在監聽器註冊,當用戶端串連監聽器時就可以通過這些參數來找到資料庫執行個體,在用戶端與執行個體之間實現了一個橋樑的作用。
3.負載平衡
一個小小的監聽器具有均衡用戶端串連的作用,如果有一個執行個體的串連數量非常的多,那麼監聽器會自動將多一部分串連轉移到其它執行個體上面。
Oracle(甲骨文)資料庫之探討回顧
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關聯式資料庫管理系統。
1.Oracle的穩定性要比Sql server好。
2.Oracle在導資料工具sqlload.exe功能比Sqlserver的Bcp功能強大,Oracle可以按照條件把文字檔資料匯入.
3.Oracle的安全機制比Sql server好。
4.Sql server的易用性和友好性方面要比Oracle好。
5.在處理大資料方面Oracle會更穩定一些。
6.Sql Server在資料匯出方面功能更強一些。
7.處理速度方面比Oracle快一些,和兩者的協議有關.
oracle最常用的語句,或關鍵總結?
INSERT語句;INSERT INTO table [(column [,column]) ] VALUES (values [,values..]);
UPDATE語句:UPDATE table SET column=value[,column=vallue...] [WHERE condition];
DELETE語句:DELETE FROM table [WHERE comdition];