oracle學習筆記零碎(五)--基礎知識複習(2)
20. 一下情況中不能使用序列.nextval和currval,會報錯的:
1. 有group by , having 或 order by 的select 語句;
2. select,delete,update語句的子查詢裡面;
21. 在以下情況中,序列的值會出現不連續:
1.發生回滾 ;2.系統崩潰 ; 3. 被其他物件呼叫過。
22. 建立序列時,如果我們使用了nocache,那麼還可以通過user_sequences的last_number欄位來檢視序列的下一個值;可是如果快取了序列值的話,last_number就不一定準確了。
索引:
23. 索引的建立主要有兩種方式: 1.自動建立(當為表定義了主鍵或者某個欄位加上了unique約束),會自動建立唯一索引; 2.手動建立:我們可以在多列上手動建立非唯一索引來加快檢索速度。(注意:一個列不能建立多個index)
24. 什麼時候需要建立索引?
1. 當表的某列包含的資料值在很大範圍
2. 某列包含了大量的null值
3. 表很大,有很多行,可是返回的資料行數很少(少於2%~4%)
4. 某列經常用於where子句中作為查詢條件,或者join的連線條件
什麼時候不建議建立索引?
1. 上面的情況的相反;
2. 表經常被DML
3. Where子句中這個列無可避免的合成表示式後才作為查詢條件
25. 常常通過連線user_indexes和user_ind_columns檢視來徹底瞭解一個索引;
26. 基於函式的索引的建立:其實就是指基於表示式建立的索引
Creat index index_name on table_name(upper(id));
要注意 的是:只有當查詢條件中出現upper(id)時,才會使用此列上的索引。否則只會全表掃描。原因是這個索引的“指標,值”中的“值”是upper(id)計算後的值。
27. 只有索引的所有者或者具有drop any index許可權的使用者才能刪除這個索引。
同義詞:
28. 建立同義詞如果指定了public ,那麼這個同義詞(公有同義詞)就預設可以供所有使用者使用;否則(私有同義詞)就只能OWNER或擁有許可權的人使用。
注意:刪除公有同義詞是要帶上public,否則報:不存在,因為沒有public的話就認為它是私有的。
角色:
29. 值得注意的是,我們還可以將對一個表的列的操作許可權賦予給使用者(角色),可是僅僅限於update和reference。例如,grant references (id,name) on department to luozhixiao;可是在回收這個許可權的時候,就只有revoke references on department from luozhixiao;就是:只不能回收表中部分列的許可權。
30.
USER_TAB_PRIVS_MADE Object privileges granted on the user’s objects
檢視指定物件可以給別人操作的許可權
USER_TAB_PRIVS_RECD Object privileges granted to the user
USER_COL_PRIVS_MADE Object privileges granted on the columns of the user’s objects
檢視錶的指定列可以給別人操作的許可權
USER_COL_PRIVS_RECD Object privileges granted to the user on specific columns
31. 一個重大的盲點:A將某物件許可權賦予給B(with grant options),後來B又將此許可權賦予C,那麼當A從B收回此許可權時,C的許可權也被級聯回收!!
32. 使用alter table 來修改table時,要注意:alter table t_name drop column (c_name);(而 add , modify 就沒有column關鍵字了)。
其次,當我們modify某欄位的資料型別和size時,如果之前的資料有不符合修改後的資料型別和size的,修改將會失敗!
還有當我們modify某欄位的資料型別,size,預設值,是否空時,我們只需要將此欄位的修改的屬性寫在altert table語句中即可
為什麼要設定欄位為unused呢?又如何將欄位重使用呢?
Alter table t_name set unused (c_name_1, c_name_2……);
Desc t_name;//會發現unused的欄位沒有了----是隱藏了還是刪除了??
資料字典:
33.資料字典,無非就是一些基表和一些檢視(all_,dba_ ,user_和v$)的組合體,用來記錄整個資料庫使用者,物件,和執行狀態。所以可以通過資料字典來檢視絕大部分資料庫的資訊。
基表:基表中儲存著資料庫的資訊,只有oracle可以讀寫(SYS也不行),使用者很少能夠直接的訪問這些基表,因為這些基表中的資訊是難以看懂的,並且通常情況下都被加密儲存。
檢視:基表主要是供oracle資料庫自己用的,檢視把其中的一些資訊抽取解析出來供使用者使用,部分檢視是可以被所有資料庫使用者訪問的,部分只供管理員使用。
一個很特別的資料字典檢視:dictionary,這個檢視包含了對所有資料字典表和檢視的描述。普通使用者也可以通過它來查詢自己可以訪問的資料字典檢視(例如user_tables)的描述,可是對於無權訪問的資料字典檢視就無法查到。
一個技巧:當我們有時候只記得某個檢視的一部分名字時,可以通過對dictionary模糊查詢來找到它!!
user_objects : 我們可以通過此檢視來查詢我們建立的某個物件的“何時建立”“上一次修改時間”“目前狀態”等資訊。不過我感覺很奇怪的是,拿table做例子,為什麼不在user_tables就可以查詢到“何時建立”“上一次修改時間”“目前狀態”等資訊呢?為何要將這些資訊另放在user_objects中?
user_tab_columns :檢視錶的列的詳細資訊
user_constraints : 可以檢視到約束的詳細,可是不知是哪個列的
user_cons_columns : 可以檢視到約束的列。所以經常兩者連線查詢。
USER_INDEXES : 可以檢視到INDEX的詳細,可是不知是哪個列的
USER_IND_COLUMNS : 可以檢視到INDEX的列。所以經常兩者連線查詢。
我們使用者建立的所有表和檢視,都會在user_tab_comments 和 user_col_comments 檢視中有一個記錄,可是comments欄位沒有內容,除非自己新增進去。
為表/檢視和列新增註釋:
Comment on t_name is ‘888888’;
要刪除註釋,可將該註釋設定為之間沒有空格的兩個單引號:
Comment on table BIRTHDAY is '';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29900383/viewspace-1461726/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基礎知識學習筆記筆記
- RxJava 學習筆記 -- 基礎知識RxJava筆記
- Redis基礎知識(學習筆記2--分散式鎖)Redis筆記分散式
- Redis基礎知識(學習筆記16--持久化 (2))Redis筆記持久化
- Redis基礎知識(學習筆記9--Redis命令(2))Redis筆記
- C++基礎知識學習筆記(1)C++筆記
- C++基礎知識學習筆記(3)C++筆記
- GO 學習筆記 《1. 基礎知識》Go筆記
- Redis基礎知識(學習筆記1--五種基礎資料結構)Redis筆記資料結構
- Python學習筆記—day1—基礎知識Python筆記
- LiteOS學習筆記[01]-weharmonyos-基礎知識筆記
- Redis基礎知識(學習筆記3--Redlock)Redis筆記
- Redis基礎知識(學習筆記11--SDS)Redis筆記
- 資料庫學習筆記 - MySQL基礎知識資料庫筆記MySql
- Redis基礎知識(學習筆記5--Redis Cluster)Redis筆記
- Redis基礎知識(學習筆記19--Redis Sentinel)Redis筆記
- Go語言核心36講(Go語言基礎知識五)--學習筆記Go筆記
- Redis基礎知識(學習筆記21--Lua 指令碼語言2)Redis筆記指令碼
- Redis基礎知識(學習筆記8--Redis命令(1))Redis筆記
- Redis基礎知識(學習筆記17--持久化 (3))Redis筆記持久化
- Redis基礎知識(學習筆記15--持久化 (1))Redis筆記持久化
- Redis基礎知識(學習筆記10--Redis命令(3))Redis筆記
- 技術分享 | Kubernetes 學習筆記之基礎知識篇筆記
- salesforce零基礎學習(一百零三)專案中的零碎知識點小總結(五)Salesforce
- 計算機基礎知識複習計算機
- 前端基礎知識複習之CSS前端CSS
- 前端基礎知識複習之html前端HTML
- (五)numpy知識學習2-python資料分析與機器學習實戰(學習筆記)Python機器學習筆記
- Android基礎知識學習Android
- Redis基礎知識(學習筆記22--分散式鎖 Redisson )Redis筆記分散式
- Redis基礎知識(學習筆記14--釋出/訂閱)Redis筆記
- Redis基礎知識(學習筆記18--主從叢集)Redis筆記
- React學習手記1--基礎知識React
- Scala學習筆記(2)-基礎語法筆記
- 機器學習學習筆記——基本知識機器學習筆記
- Redis基礎知識(學習筆記21--Lua 指令碼語言)Redis筆記指令碼
- Redis基礎知識(學習筆記4--高併發問題)Redis筆記
- Redis基礎知識(學習筆記6--執行緒IO模型)Redis筆記執行緒模型
- Linux基礎學習-Docker學習筆記LinuxDocker筆記