1、常见的数据库对象
对象 | 描述 |
---|---|
表 | 基本的数据存储集合,由行和列组成。 |
视图 | 从表中抽出的逻辑上相关的数据集合 |
序列 | 提供有规律的数值 |
索引 | 提高查询的效率 |
同义词 | 给对象起别名 |
2、什么是视图:
视图是一种虚表。
视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
视图向用户提供基表数据的另一种表现形式
直白点说就是,视图就是一段sql语句,通过执行这段语句查询出的一个表,这个表就叫视图,这个表只能看,无法改。
简单视图和复杂视图的区别:
简答的说,简单视图没有使用函数,复杂视图用函数了。
为什么使用视图:
控制数据访问
简化查询
避免重复访问相同的数据
3、创建视图
CREATE VIEW empvu80
AS SELECT employee_id id, last_name name, salary
FROM employees
WHERE department_id = 80;
empvu80:视图名
employee_id:表列名
id:视图名(别名)
employees:表名
4、修改视图
使用 or replace 子句修改视图
creat 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;
5、屏蔽 DML 操作
(对数据操作叫做:DML)
可以使用 with read only 选项屏蔽对视图的DML 操作
任何 DML 操作都会返回一个Oracle server 错误
creat 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;
with read only
6、视图中使用DML的规定
当视图定义中包含以下元素之一时不能使用delete:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
当视图定义中包含以下元素之一时不能使用update:
组函数
GROUP BY子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
当视图定义中包含以下元素之一时不能使insert:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
表中非空的列在视图定义中未包括
7、删除视图
DROP VIEW empvu80;
empvu80:视图名
8、Top-N 分析
rownum:
查询最大的几个值的 Top-N 分析:
SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;
注意:
对 rownum 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据。
查询一段范围:
select *
from(
select rownum rn,employee_id,salary
from(
select employee_id,salary,last_name
from employees
order by salary desc
)
)where rn <=50 and rn >40