美文网首页
数据库笔记5-视图

数据库笔记5-视图

作者: 照照寒 | 来源:发表于2016-11-20 21:35 被阅读0次

视图是一个从几个基本表中导出的虚表,所以视图里没有真正的数据。数据库存放的只是视图的定义,真正的数据还是在基本表中。

作用:
1.最重要的就是查询功能,可以简化查询,将多张基本表在一个视图中展现可以简化复杂的查询操作。
2.在视图中可以以不同角度看同一个数据
3.提供一定程度的逻辑独立性,当重构数据库时,有的基本表可能被拆成多个表,但通过视图可以将表拼合起来查询,从用户角度可以继续用原语句查询。
4.安全性。对不同用户定义不同视图,可以防止用户获得其他用户的数据。

一、建立视图

(sno,sname,sage,ssex,sdept,grade)
as 
select students.sno,sname,sage,ssex,sdept,grade
from students,reports
where students.sno=reporets.sno;```
建立一个叫做stu的视图,包括学生的基本信息和成绩。

```create view _students
as
select *
from students;```

建立一个叫_students的视图,视图名后面包括的列名可以省略,省略时默认使用子查询中的列名,所以在这种情况下子查询列名不能是常数,表达式或者集函数且不能有重复列名。

```create view _courses(cno,cname,sno)
as
select courses.cno,cname,sno
from courses,reports
where courses.cno=reports.cno
with check option;```

子查询可以是任意查询子句,但不能使用distinct和order by,当加上with check option时,更新视图时会DBMS会核对如果操作了之后创建试图时的select子句还能不能正确执行,如果不能执行则拒绝更新。

比如说创建了一个数学系学生信息的视图,当你想把视图中的一个学生的系改成计算机,这就破坏了当初的select子句,所以你不能修改。

```create view stu_1
as 
select sno,sname,sdept
from stu
where grade>90;```

建立在视图上的视图;

*注意:建立视图的子查询中尽量不要select * ,因为如果基本表中的列数发生变化时会导致视图无法工作。*
>视图查询

1.视图实体化法。
先实例化视图,也就是从基本表中查出一个临时表,然后再根据查询条件在临时表中查找数据。
2.视图消解法。
将查询语句与视图的定义相结合,生成对基本表的查询语句,再到基本表中查出数据。

```select *
from stu
where grade>90;```

和对基本表的查询语法相同。

>视图更新

*视图更新和基本表的更新基本一致,但有几种情况不能进行更新:
1.不满足with check option
2.涉及两个表及以上的视图不允许更新(牵一发而动全身,你想更新一条数据多个表都得变)
3.即使只涉及一个表,但定义中使用了嵌套查询且嵌套查询的子查询所用的表和父查询的表相同则不能更新
4.视图的列是集函数构成则不能更新(因为基本表里根本没有这一列)
5.不能更新的视图上建立的视图也不能更新
6.定义中含有distinct和order by的视图不能更新。*

```update stu
set sname='233'
where sno='s01';```

修改数据;

```delete stu
where sno='s01';```

删除数据;

```insert into _students
values('s10','hh','女','19','数学');```

插入数据。

>删除视图。

```drop view stu;```




相关文章

  • 数据库笔记5-视图

    视图是一个从几个基本表中导出的虚表,所以视图里没有真正的数据。数据库存放的只是视图的定义,真正的数据还是在基本表中...

  • 关系数据库标准语言SQL(二)

    声明:最近在准备考试,故整理数据库原理笔记。 视图 视图的创建和删除 CREATE VIEW <视图名 > [ ...

  • 数据库相关

    视图 视图:数据库中表和视图都...

  • Mysql 学习笔记

    Mysql 学习笔记(四) 视图(View) ➢从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。从...

  • thinkphp v5 视图查询

    视图查询可以实现不依赖数据库视图的多表查询,并不需要数据库支持视图 注意,视图查询无需调用table和join方法...

  • 数据库视图简介

    在本教程中,您将了解一个叫作数据库视图的新数据库对象。我们将讨论使用数据库视图的优点和缺点。 数据库视图是一个虚拟...

  • 李善友课程笔记5-第一性原理背后的哲学基石

    李善友课程笔记5-第一性原理背后的哲学基石

  • MySQL之视图

    SQL语言之视图 前言 本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用...

  • SAP ABAP CDS view 视图的 Replacemen

    在ABAP Dictionary中,可以使用其 CDS 实体的名称将 CDS 视图赋给透明数据库表和经典数据库视图...

  • ORACLE之视图和系统函数

    视图 视图是什么? 视图(View)是从一个或多个表(或视图)导出的表。视图与数据库中的物理表不同,视图是一个虚表...

网友评论

      本文标题:数据库笔记5-视图

      本文链接:https://www.haomeiwen.com/subject/apsypttx.html