数据库视图的超详细解析📖

简介: 数据库视图的超详细解析📖

视图

视图也是数据库对象之一

所有数据库对象名字不可重复,以“v_”开头的视图名相对来说更规范。

视图在是SQL语句中体现的角色与表相同,但是视图并不是一张真实存在的表,而只是对应一个select 语句的查询结果集,并将其当做表看待而已。

使用视图的目的是为了简化SQL语句的复杂度,重用子查询,限制数据访问。

创建视图

create view v_k_depino
as 
select kname,depino,sal
from k
desc v_k_depino

查看视图数据

select *from v_k_depino
select *from (select kname,depino,sal from k)

视图对应的子查询中的字段若有函数或者表达式,那么该字段必须使用别名。

当视图对应的子查询中的字段使用了别名,那么视图中该字段就用别名来命名。

修改视图

由于视图仅仅对应一个select语句,所以修改视图就是替换该select语句而已。

create or replace view v_k_depino
as
select kname name,depino,sal s
from k

视图分类

视图分为简单视图和复杂视图

简单视图

简单视图:对应的子查询中不含有关联查询,查询字段不包含函数,表达式等,没有分组没有去重,反之,则是复杂视图。

对视图进行DML操作。

仅能对简单视图进行DML操作,对视图进行DML操作就是对视图数据来源的基础表进行操作。

插入数据

insert into v_k_depino(name,s,depino) values('d',2300,30)
select *from v_k_depino
select * from k

更改数据

update v_k_depino set s=1800 where name='cc' 
select * from k

删除数据

delete from v_k_depino where name='cc'

对数据的DML操作就是对基表操作,那么操作不当可能对基表进行数据污染。

只有删除操作删除不了视图中没有或者看不见的数据,但是可以删除视图中存在或可见的数据,但是在视图中进行了更新,插入操作,即使这是视图中的不可见的数据,操作也能进行,这就对基表产生了污染。

with check option

为视图添加检查选项,可以保证对视图的DML操作后视图对其可见,否则不允许进行DML操作,这样就可以避免数据污染。

create view v_k_depino
as 
select kname,depino,sal
from k
where depino=20
with check option

为视图添加只读选项,不允许该视图进行DML 操作。在SQL语句后加上

with read only,代表只读,不允许操作 。

数据字典

select object_name from user_objects
//objects,查出所有数据库对象

select text,view_name from user_views//查视图名,text显示当时写入的SQL语句
select table_name from user_tables //查数据库名

复杂视图

复杂视图

create view v_k
as 
select h.loc,k.kname,min(sal) msal,sum(sal) ssal
from k,h
where k.depino=h.depino
group by h.loc,k.kname

删除视图

删除视图本身不影响基表,但是删除数据,会影响基表本身,会删除基表对应的数据。

drop view v_k

目录
相关文章
|
6天前
|
SQL druid Java
Javaweb之数据库连接池以及lombok类库的详细解析
Javaweb之数据库连接池以及lombok类库的详细解析
23 0
|
6天前
|
SQL 存储 关系型数据库
数据库开发之图形化工具以及表操作的详细解析
数据库开发之图形化工具以及表操作的详细解析
23 0
|
1月前
|
API 数据库 C语言
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
171 0
|
1月前
|
消息中间件 存储 数据库
RocketMQ 流数据库解析:如何实现一体化流处理?
RocketMQ 5.0 是一款云原生的消息中间件,旨在覆盖更多业务场景。它针对国内企业在数字化转型中面临的多场景消息处理需求,提供了一体化的解决方案。
111930 7
|
6天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
14 0
|
17天前
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
25 0
|
25天前
|
数据库
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
10 0
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
|
1月前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
3天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
11天前
yolo-world 源码解析(六)(2)
yolo-world 源码解析(六)
23 0

热门文章

最新文章

推荐镜像

更多