索引
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 用户名或者角色;
这个是级联回收的。