create sequence student_sid; --创建序列 oracle只能通过手动方式创建序列
-
ORACLE SQL视图
2019-05-27 09:45:00视图是什么呢? 视图是一种虚表。 视图建立在已有表的基础上, 视图赖以建立的这些表...可以创建和修改视图的定义,删除视图 可以从视图中查询数据 可以通过视图插入,修改和删除视图 可以使用Top-N分析视图 ...视图是什么呢?
视图是一种虚表。
视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
视图向用户提供基表数据的另一种表现形式
那么视图:
- 可以创建和修改视图的定义,删除视图
- 可以从视图中查询数据
- 可以通过视图插入,修改和删除视图
- 可以使用Top-N分析视图
常用的数据可对象有:
那么我们为什么会使用视图呢:
1.因为它控制数据访问
2.简化查询
3.避免重复访问相同的数据
视图有分两种,简单视图和复杂视图,看下图简单了解下
下面我们看下如何创建视图
CREATE VIEW empvu80
AS SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
这是简单的创建视图
在创建视图时可以在子查询中给列定义别名:看代码
CREATE VIEW salvu50
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;
修改视图可以使用CREATE OR REPLACE VIEW 子句修改视图
CREATE OR REPLACE VIEW empvu80
(id_number, name, sal, department_id)
AS SELECT employee_id, first_name || ' ' || last_name,
salary, department_id
FROM employees
WHERE department_id = 80;
我们看下复杂的视图创建
CREATE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT d.department_name, MIN(e.salary),
MAX(e.salary),AVG(e.salary)
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY d.department_name;
再看下使用视图的一些规定
1.可以在简单视图中执行 DML 操作
2.当视图定义中包含以下元素之一时不能使用delete:
3.组函数
4.GROUP BY 子句
5.DISTINCT 关键字
6.ROWNUM 伪列
当视图定义中包含以下元素之一时不能使用update:
1.组函数
2.GROUP BY子句
3.DISTINCT 关键字
4.ROWNUM 伪列
5.列的定义为表达式
当视图定义中包含以下元素之一时不能使insert:
1.组函数
2.GROUP BY 子句
3.DISTINCT 关键字
4.ROWNUM 伪列
5.列的定义为表达式
6.表中非空的列在视图定义中未包括
那我们既然可以使用DML操作那也就以为着可以屏蔽它
屏蔽DML的操作
可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作
任何 DML 操作都会返回一个Oracle server 错误
看下例子:
CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT employee_id, last_name, job_id
FROM employees
WHERE department_id = 10
WITH READ ONLY;
删除视图只是删除视图的定义,并不会删除基表的数据
DROP VIEW empvu80;
Top-N 分析
查询最大的几个值的 Top-N 分析:
SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;
注意:
对 ROWNUM 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。
-
对比SQL SERVER,ORACLE,DB2视图建立语句。
2011-08-17 14:23:00下面对比一下建立视图的语句: SQL SERVER: 建立视图: CREATE VIEW empv20 AS SELECT * FROM emp WHERE deptno = 20 ; 修改视图: alter VIEW empv20 AS SELECT ename FROM ...视图可以简单的认为是一个查询的别名:
它有限制数据访问和简化查询的作用。
下面对比一下建立视图的语句:
SQL SERVER:
建立视图:CREATE VIEW empv20AS SELECT *FROM empWHERE deptno = 20 ;修改视图:alter VIEW empv20AS SELECT enameFROM empWHERE deptno = 20 ;ORACLE和DB2上建立的语句完全相同。
•CREATE OR REPLACE VIEW empvu20•AS SELECT *•FROM emp•WHERE deptno = 20还可以加上WITH CHECK OPTION选项来保护视图的完整性:CREATE OR REPLACE VIEW empvu20AS SELECT *FROM empWHERE deptno = 20WITH CHECK OPTION CONSTRAINT empvu20_ck;SQL> UPDATE empvu20SET deptno = 10WHERE empno = 7788;update empvu20*ERROR at line 1:ORA-01402: view WITH CHECK OPTION where-clause violation -
oracle视图就是封装了一条写好的sql语句 可通过视图修改表结构 ; oracle需要手动创建序列...
2018-12-23 23:19:00create sequence student_sid; --创建序列 oracle只能通过手动方式创建序列 转载于:https://www.cnblogs.com/classmethond/p/10166420.html转载于:https://www.cnblogs.com/classmethond/p/10166420.html
-
Oracle 11g 使用SQL Tuning Advisor调优SQL语句
2014-01-15 21:00:09使用SQL Tuning Advisor与SQL Access Advisor可以调用advisory 模式下的优化器来帮助检查一个SQL语句或者一组SQL语句,来提高他们的效率。SQL Tuning Advisor与SQL Access Advisor可以给出一系列的建议。SQL Access...在CBO模式下,优化器判断是使用全表扫描还是使用索引效率更高。优化器比对所有可能的方法,并选择最低代价的方法。
使用SQL Tuning Advisor与SQL Access Advisor可以调用advisory 模式下的优化器来帮助检查一个SQL语句或者一组SQL语句,来提高他们的效率。SQL Tuning Advisor与SQL Access Advisor可以给出一系列的建议。SQL Access Advisor主要负责给出模式修改建议,例如增加或者drop索引、物化视图。SQL Tuning Advisor主要给出其他建议,例如创建SQL Profile、重构SQL语句。如果通过创建一个索引可以获得明显的性能提升,SQL Tuning Avisor也会推荐,然而这些建议放在SQL Access Advisor中验证通过,这个SQL Advisor使用包含了一组典型SQL语句的sql workload.
ADDM会自动识别高负载(high-load)的SQL语句,也当然也可以手工使用SQL Tuning Advisor。手工使用有两种方法,一种是调用package,如dave dai的文章:http://blog.csdn.net/tianlesoftware/article/details/5630888, 一种是使用DBconsole(入口是Related links->Advisor Central->SQL Advisors),一步步的方法如下:http://docs.oracle.com/cd/B28359_01/server.111/b28275/tdppt_sqltune.htm#TDPPT160.
-
oracle sql语句分类
2011-04-10 18:23:00ORACLE SQL语句分类SQL语句可以被看作是一种简单、强大的计算机语言或指令。sql语句被分为以下6类:数据定义类、数据操作类、事务控制类、会话控制、系统控制、嵌入式SQL语句。 数据操作语言语句[Data manipulation... -
java oracle 查询视图_oracle中的视图详解
2021-02-27 22:04:091.视图的概述视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的... -
ORACLE SQL 语句分类
2010-03-11 16:19:50Oracle SQL 语句可以分为以下几类: 数据操作语言语句[Data manipulation language,DML] 从一个或多个表或视图中查询数据(SELECT);获取操作[fetch]是可滚动 的[scrollable](见“可滚动游标”) 向表或... -
oracle导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等
2008-12-25 14:50:00导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等前言: 这是我用很长时间才写的存储包,其间经历了多次修改,以适应多种情况,今将其贡献出来,如果能读懂这个存储包,恭喜你,你的... -
Oracle数据库笔记4(sql语句实例)
2019-03-06 17:23:38修改:表名,索引名,视图名,完整性约束(空值) 删除:表列,列里面的值,主键,唯一性,外键,check 示例: 创建雇员表(Employee),包括员工号(empno),员工名(empname),工作职位(job),主管领导(mana... -
oracle导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等...
2008-12-25 14:50:00导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等 前言:这是我用很长时间才写的存储包,其间经历了多次修改,以适应多种情况,今将其贡献出来,如果能读懂这个存储包,恭喜你,你的... -
oracle 视图
2015-03-17 11:24:00视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会... -
Oracle视图
2017-01-23 17:38:10简化查询(把复杂的SQL语句写成视图,别人直接用视图来查询即可,无须再写复杂的SQL语句) 隐藏数据(不是把整张表的数据给别人,而是通过指定字段弄成视图,把视图给别人,让别人查视图) 视图操作步骤 创建视图、... -
oracle 视图的概述
2015-08-23 16:54:16视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被... -
Oracle使用学习笔记(二)_Sql语句
2019-01-20 18:19:00一、Sql语句的分类 数据操作语言,简称DML(data manipulation language),如增加,删除,修改,查询数据等 数据定义语言,简称DDL(data defination language),如创建、修改和删除数据库中的表,用户,视图等,修改... -
oracle 创建视图view
2014-07-03 02:30:24视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束) -
oracle-视图(view)
2018-06-07 16:45:07oracle-视图(view)视图概述视图也称为虚表,视图本身不占用物理存储空间,视图存放于数据字典中,简单的来说视图可以看做是sql语句的集合。视图从数据库中的表产生,这些表称为视图的基表,一个视图可以从另一个视图... -
Oracle创建视图(View)
2018-12-06 14:14:23修改视图: 通过OR REPLACE 重新创建同名视图即可。 视图上的DML 操作: DML操作应遵循的原则: 1.简单视图可以执行DML操作; 2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能删除数据行; 3.... -
oracle视图
2020-01-11 00:38:171.视图的定义 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,视图基于的表称为基表。视图只有逻辑定义,每次使用的时候只是重新执行SQL。通过它可以对表里面的数据进行查询和修改。 视图是存储在数据... -
Oracle中视图和基表的联系与区别。
2019-09-28 02:45:281、视图是已经编译好的sql语句。而表不是2、视图没有实际的物理记录。而表有。3、表是内容,视图是窗口4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但... -
Oracle 视图
2012-08-14 23:52:38视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被...