oracle(8)视图和查询数据库对象方法
视图 view
视图是数据库的对象之一。 视图也叫做虚表,既虚拟表,本质是对应一条select 语句,
select语句的结果集赋予一个名字就是视图的名字。
作用:
1.可以简化复杂的查询
2.可以限制数据的访问,对基表的其他数据起到安全和保密的作用。
创建一个 表 create table emp(
empno number(6), name char(10), id number(4), deptno number(10), job varchar2(10) );
*创建视图:create view emp_v as
;创建视图时,create对应的表叫做基表。* 查询视图 select *from emp_v ; 根据查询所的方式可分为三种视图: 1.简单视图:根据单表建立的,且不包含任何函数运算,表达式和分组,既单表的子集。 2.复杂视图:根据单表建立,包含有单行函数/表达式/分组的视图。 3.连接视图:基于多表建立的视图。*删除视图 drop view emp_v;
*简单视图可以进行DML操作,但是复杂视图不允许DML操作。
修改视图:视图的结构取决于对应的子查询,所以修改视图即替换对应
的子查询。REPLACE
CREATE OR REPLACE VIEW V_EMP_J
AS
SELECT EMPNO,ENAME,SAL
FROM EMP_XIAOJIE;
SELECT * FROM V_EMP_J;
对视图的不当DML操作会污染基表数据:
对简单视图进行DML操作后,视图对基表做对应的操作,但是影响的数据对应视图来说
是不可见的,就是对基表数据的污染。
为了避免视图对基表产生数据的污染。我们可以对视图添加检查选项要求(检查约束)
使其对视图进行DML时操作时检查视图时操作后是否对操作的数据可见,如果不可见
则不允许操作。
*简单视图可以进行DML操作,但是复杂视图不允许DML操作。
视图本身是不包含数据的,只是基表的逻辑映射,所以
对视图执行DML操作时,实际上操作的是基表。
对视图进行DML操作,实际上是对基表进行DML操作,
如果不去约束,我们对视图不可视进行DML操作会对
基表的数据产生污染。
对视图进行DML操作基本原则:
*简单视图可以进行DML操作,但是有以下情况除外,
基表中定义了非空列,但是简单视图对应的 SELECT
语句没有包含这个非空列,导致非空列对于视图不可视,
这时无法对视图进行 INSERT 操作。
*复杂视图不允许DML操作
*DML操作不能违反基表的约束条件。
创建具有 CHECK OPTION 的约束视图。
CREATE OR REPLACE VIEW V_EMP_J
AS
SELECT EMPNO,ENAME,SAL
FROM EMP_XIAOJIE
WHERE SAL<3000
WITH CHECK OPTION; --添加约束后无法对基表进行数据污染。
SELECT * FROM V_EMP_J;
创建具有 READ ONLY 约束的视图。
对简单进行DML操作是合法的但是不安全,如果没有在视图进行DML
操作的必要的话,要在建立视图时声明只读来避免这种情况,包含
基表数据不会被非法的修改。
无法对只读视图执行DML操作。
CREATE OR REPLACE VIEW V_EMP_J
AS
SELECT EMPNO,ENAME,SAL
FROM EMP_XIAOJIE
WHERE SAL<3000
WITH READ ONLY;--用来只读
数据字典:
数据字典是一系列的表,这些表的数据由数据库自行维护,记录清单清单信息。
1.在数据字典 user_objects 中查询所有视图:
SELECT object_name FROM user_objects
where object_type='VIEW';--查找所有视图
view:视图 table:表 sequence:序列 index:索引
2.在数据字典 USER_VIEWS 查询所有的指定视图:
3.在数据字典 user_updatable_columns 中查询视图:
SELECT COLUMN_NAME,INSERTABLE,UPDATABLE,DELETABLE --看操作权限
FROM USER_UPDATABLE_COLUMNS
WHERE TABLE_NAME='V_EMP_J';
oracle(8)视图和查询数据库对象方法的更多相关文章
- Oracle shutdown immediate无法关闭数据库解决方法
在测试服务器上使用shutdown immediate命令关闭数据库时,长时间无法关闭数据库,如下所示 1: [oracle@DB-Server admin]$ sqlplus / as sysdba ...
- C# Oracle海量数据瞬间插入到数据库的方法
C# 海量数据瞬间插入到数据库的方法 当我们在数据库中进行大量的数据追加时,是不是经常因为数据量过大而苦恼呢?而所谓的海量数据,一般也是上万级的数据,比如我们要添加一百万条数据,应该如何提高它的效率呢 ...
- Oracle和SQL server查询数据库中表的创建和最后修改时间
有时候我们需要查看下数据数据库中表的创建时间和最后修改时间,可以通过以下语句实现: Oracle数据库 -- 查看当前用户下的表 SELECT * FROM USER_TABLES -- 查看数据库中 ...
- oracle(查询数据库对象1)
1 --查询表信息 2 xxx_tables--包含表的基本描述信息和统计信息 3 xxx_tab_columns--包含表中列的描述信息和统计信息 4 xxx_all_tables--包含当前数据库 ...
- Oracle锁表数据查询及解决方法
首先:查询数据那些表被锁定1. SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name, ...
- Oracle之视图联合查询加排序问题
在公司修改bug,有这样的需求:需要从两张视图中查出相同字段的数据,按照导师姓名先排序,再按照学号排序 union联合两张表,SELECT * from((SELECT DS_ID,PYLX_ID,Y ...
- 查询数据库对象的DDL信息
表的DDL select dbms_metadata.get_ddl('HBBL','TABLE','AGREEMENT_MIRROR') from dual:
- oracle 查询数据库的各种命令
以下查询都是使用plsql查询oracle 11g 1.查询数据库版本信息 select * from v$version; 2.查询数据库优化模式 select name, value from v ...
- 【Oracle】实现Oracle数据库对象的一键升级
引言 公司内部的项目比较倾向于将业务逻辑放在oracle存储过程中实现,所以每次项目升级都涉及到很多的oracle表,存储过程等数据库对象的升级.然而采取的升级方式是比较"原始&qu ...
随机推荐
- springMVC,spring和Hibernate整合(重要)
springMVC,spring和Hibernate整合 https://my.oschina.net/hugohxb/blog/184715 第一步:搭建一个springmvc工程,需要的jar有: ...
- oracle 实现主键id自增
公司现在项目数据库使用oracle,oracle实现表主键自增比mysql麻烦 mysql 在表主键auto_increment 打钩即可.oracle没有改属性,就相对麻烦.特此记录一下自增方法 测 ...
- SpringBoot---条件(th:if)
Thymeleaf 的条件判断是 通过 th:if 来做的,只有为真的时候,才会显示当前元素 <p th:if="${testBoolean}" >如果testBool ...
- python pandas数据分析基础入门2——(数据格式转换、排序、统计、数据透视表)
//2019.07.18pyhton中pandas数据分析学习——第二部分2.1 数据格式转换1.查看与转换表格某一列的数据格式:(1)查看数据类型:某一列的数据格式:df["列属性名称&q ...
- 【学CG系列】web之审查元素
一.审查元素的作用 审查元素(你的F12)可以做到定位网页元素.实时监控网页元素属性变化的功能,可以及时调试.修改.定位.追踪检查.查看嵌套 ,修改样式和查看js动态输出信息,是开发人员得心应手的好工 ...
- ACM-小偷的背包
题目描述:小偷的背包 设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,...,wn.问能否从这n件物品中选择若干件放入背包中,使得放入的重量之和正好为S.如果有满足条 ...
- 08 MySQL存储引擎
查询当前默认存储引擎 SHOW VARIABLES LIKE 'table_type' ; 查询当前数据库支持的引擎有哪些 : SHOW ENGINES \G -- 推荐 ...
- 剑指offer自学系列(三)
题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变,例如{5,1,4,2 ...
- 小程序中的web-view与h5网页之间的交互
官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html web-view 基础库 1.6.4 开始支 ...
- POJ2392:Space Elevator
Space Elevator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9244 Accepted: 4388 De ...