索引
1 單列索引
create index 索引名 on 表名(列名);
2復合索引
在同一張表上可以有多個索引,但是要求列的組合必須不同。
create index 索引名 on 表名(列名1, 列名2.....)
3 建立索引的原則
--大表上建立索引才有意義
--在where子句或是連接條件上經常引用的列上建立索引
--索引的層次不要超過四層
4 索引的缺點
--建立索引,系統要占用大約為表的1.2倍的硬盤和內存空間來保存索引
--更新數據時,系統必須要有額外的時間來同時對索引進行更新,以維持數據和索引的一致性。
不經常引用的列不需要建立索引;邏輯型字段不需要建立索引。
oracle對unique字段自動添加索引
管理權限和角色
1 系統權限:針對數據庫的權限,能不能建表能不能登錄等。可以通過dba用戶查詢。
2 對象權限:針對用戶的權限,訪問別的用戶的方案的權限。
3 方案:當創建用戶后,oracle會自動給新用戶一個方案,方案與系統權限和對象權限沒有任何關系,方案的名字和用戶的名字是一樣的,方案中包含各種各樣的數據對象。
4 角色:多個系統權限或者對象權限的集合。
系統權限: 剛剛建立用戶時,用戶沒有任何權限,也不能執行任何操作,授予系統權限時要求該用戶有grant any privilege的系統權限,當帶有with admin option選項時,被授予權限的用戶或是角色還可以將該系統權限授予其它的用戶或是角色,例子如下:
--創建用戶:create user www identified by www;
create user ccc identified by ccc;
--授予權限:grant create session, create table to www with admin option;
grant create view to www;
--在www用戶下將create session授權給ccc是可以成功的。
--回收系統權限:回收系統權限是dba來完成的,revoke create session from www; 將www的登陸權限回收了,這時ccc的登陸權限依然能夠登陸。這種級聯授權回收時並不是級聯 回收。
對象權限:增(insert)刪(delete)改(update)查(select)修改(alter)引用(references)執行(excute)索引(index)
授權對象權限需要是由對象所有者(優先使用)和dba用戶完成。在后面帶上with grant option代表可以將權限傳遞,當授予角色時不可帶with grant option。
grant 權限 on 表名 to 用戶或者角色;
--ccc用戶下:grant select on 表名 to www;
--www用戶下:select * from ccc.表名;
--只希望www可以修改ccc中表的一行或多列:grant update on 表名(列名......) to www;
--回收對象權限: revoke select on 表名 from 用戶名或者角色;
這個是級聯回收的。