视图、索引

本文介绍了数据库中的视图概念,视图是从一个或多个表或视图中导出的虚拟表,数据存储在基本表中。视图的定义、语法及使用场景进行了详细阐述,包括如何创建和修改视图,以及`WITH CHECK OPTION`和`READ ONLY`的使用。此外,还提及了索引的相关内容。
摘要由CSDN通过智能技术生成

视图

视图的定义:

视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。和表一样,视图也是包括几个被定义的数据列和多个数据行,但就本质而言这些数据列和数据行来源于其所引用的表。
所以视图不是真实存在的基础表而是一张虚表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

视图语法:

添加链接描述create [ or replace ] [ force ] view [schema.]view_name
[ (column1,column2,…) ]
as
select …
[ with check option ] [ constraint constraint_name ]
[ with read only ];

tips:
1 or replace: 如果存在同名的视图, 则使用新视图"替代"已有的视图
2 force: “强制"创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限
3 column1,column2,…:视图的列名, 列名的个数必须与select查询中列的个数相同; 如果select查询包含函数或表达式, 则必须为其定义列名.此时, 既可以用column1, column2指定列名, 也可以在select查询中指定列名.
4 with check option: 指定对视图执行的dml操作必须满足“视图子查询”的条件即,对通过视图进行的增删改操作进行"检查”,要求增删改操作的数据, 必须是select查询所能查询到的数据,否则不允许操作并返回错误提示. 默认情况下, 在增删改之前"并不会检查"这些行是否能被select查询检索到.
5 with read only:创建的视图只能用于查询数据, 而不能用于更改数据.

--创建单表视图
create view empview
as
--视图里面的数据来源
select empno,ename,sal from emp where deptno = '20';


--查看视图
select * from empview;


select * from emp where empno = '7935';


--对视图数据进行增删改

insert into empview values(6666,'shadows',888.88);

update empview set sal = 2000 where empno = '7935';

delete from empview where empno = '7935';



--创建多表视图
create view emp_dept_view
as
----视图里面的数据来源
select e.empno,e.ename,e.sal,d.dname from emp e,dept d
where e.deptno = d.deptno;

索引

转载:
https://www.cnblogs.com/wishyouhappy/p/3681771.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值