最近想玩玩oracle中的视图操作,由于长时间没有操作自己的本机的虚拟机上的oracle数据库,导致密码给忘记了,百度了一下说是可以通过登录管理员来操作。于是就进行了一些列操作,由于之前接触oracle较少,所以尝试起来还是有点吃力,于是就各种尝试。oracle的用户分为如下几个等级:
- 最高权限用户:SYSTEM 密码:MANAGER
- 管理员权限用户:SYS 密码:CHANGE_ON_INSTALL
- 普通用户权限:SCOTT 密码:TIGER
流程是这样的:
1.首先登录管理员账号进行修改用户密码:但是我的管理员密码也不知道,别急,这里有办法。
首先登进去你的oracle所在的服务器(我的安装在本机window虚拟机里)。所以直接进入win+R命令输入cmd进入命令行窗口,
输入sqlplus/nolog
输入connect/as sysdba
输入alter user 用户名identified by 密码
就可以了。
这种方法对于忘记管理员密码同样适用。
下边就可以进行视图操作
视图具有以下优点:
1. 可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。
2. 可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。
3. 限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。
4. 从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
语法:
CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
AS
SELECT查询
[WITH READ ONLY CONSTRAINT]
解析:
1. OR REPLACE:如果视图已经存在,则替换旧视图。
2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
案例:基于EMP表和DEPT表创建视图
CREATE OR REPLACE VIEW EMPDETAIL
2 AS
3 SELECT EMPNO,ENAME,JOB,HIREDATE,EMP.DEPTNO,DNAME
4 FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO
5 WITH READ ONLY
使用视图:
SELECT * FROM EMPDETAIL;
视图就是将复杂的sql语句封装成一个虚表,一般都是常用的业务逻辑进行封装视图,具体操作和表一样,一般视图都是设置为只读的,创建的sql语句如上图。