Lesson 14
创建其他的数据库对象
VIEW 视图
a.简单视图:在没有限制条件时可以有DML的语句
创建:CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[,alias]...)] AS
subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]](加此条件不允许修改);
AS后可以连接select 语句,从表中提取需要的信息,组成视图;例图一:![oracle初识9.25 <wbr>权限和角色 oracle初识9.25 <wbr>权限和角色](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
修改视图:用CREATE 或 REPLACE VIEW 可以理解为新建一个视图,覆盖原来的;
b.复杂视图
不能用DML语句对视图操作的情况:
1.有组函数;2.有GROUP BY语句;3.有DISTINCT关键字;4.有ROWNUM关键字;5。用关系
式定义的列(如:12*salsry);
当视图含有一下情况时不能往视图中添加数据:
1.有组函数;2.有GROUP BY语句;3.有DISTINCT关键字;4.有ROWNUM关键字;5。用关系
式定义的列(如:12*salsry);6.主表中非空的列没有被选到视图中(NOT NULL columns in the
base table that not selected by the view).
删除视图
DROP VIEW view'name;
序列(sequence),被所有对象所共享,不能产生重复的数字;
主要用途是生成主键的,生成一组数字;
语法:图二:
![oracle初识9.25 <wbr>权限和角色 oracle初识9.25 <wbr>权限和角色](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
一般不用CYCLE
NEXTVAL
CURRVAL 返回当前的值,但是执行此语句之前必须有一个NEXTVAL语句;
删除序列:
DROP SEQUENCE dept_deptid seq;
索引(index) 用来提升查询效率,是一个schema对象;可以减少对磁盘的读取次数;可以手动创
建或者系统创建;由Oracle server来维护;
创建:图三:
![oracle初识9.25 <wbr>权限和角色 oracle初识9.25 <wbr>权限和角色](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
创建的要求:图四:
![oracle初识9.25 <wbr>权限和角色 oracle初识9.25 <wbr>权限和角色](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
删除索引:drop index index'name;
同义词(synonyms)
既是别名的应用,便于操作;
创建:create SYNONYM d_sm
for ______;
删除:drop synonym d_sm;
Lesson 15
权限管理
系统级的权限
ANY
GRANT 例: grant creat session to 用户名(授予权限)
REVOKE 例:revoke creat session from 用户名(撤销权限)
可以给授予/撤销权限的用户两中情况:
1.grant creat session to 用户名(授予权限)with ADMIN OPTION;
2.由系统授予 ANY PRIVILEGE的用户;
PUBLIC 是定义在数据库中的一个用户组,数据库中的每一个用户都属于这个组;但是这个组
不是数据库的子;
SYSDBA 和 SYSOPER 是数据库中的两个用户;
DBA_SYS_PRIVS
SESSION_PRIVS
DBA_TAB_PRIVS
DBA_COL_PRIVS
对象级的权限
角色(权限组) (现在不做过多要求)
注意一下多对多关系的表的建立,需要一个中间表,并且需要联合主键;primary key(A,B)
既A B两个互为主键,插入的值可以为)(1,1)(1,2)(2,1)(2,2)但是不能再插入他们中的任何一个;