精华内容
下载资源
问答
  • 在数据库中视图只存放其
    2021-11-20 21:43:00

    之前介绍了

    接下来说一下数据库中的视图。

    视图的概念:视图(view)是一个从单张表或多张表或其他视图中构建出来的虚拟表。也就是说,这个表是一个确切但存在的表。但是数据库中只存放对应的sql语句,并不存放视图中的数据。换句话说,视图就是数据库表的一层面纱,我们可以直接获取我们想要的部分。其本质就是一个查询的语句,是一个虚拟的表,是不存在的表。查看视图其实就是查看视图对应的sql语句执行的结果。

    视图的好处:

    • 简化用户的操作,视图可以使用户将注意力集中在数据上,而不需要关心表的结构、表之间的关联以及查询条件等。
    • 可以对机密数据进行保护,一些机密数据,我们可以在视图的时候过滤掉。

    视图的创建:

    • 一般创建:create view 视图名 as 需要的查询语句;
      • 例如,创建一个视图,基于emp表,只查询empno,ename,job,deptno这些字段,然后条件是deptno=20,那么需要执行的sql语句是:create view deptno20 as select empno,ename,job,deptno from emp where deptno=20;,这里我将视图名定义为deptno20。
    • 视图存在就替换:create or replace view 视图名 as 需要的查询语句;
    • 句 with check option;
    • 创建基于视图的视图:create view 视图名 as select 需要的字段 from 基于的视图[ where 条件];,也就是说再加一层面纱。

    查看视图:select * from 视图名;,其实这里视图就是一张表,但是这张表就是一个sql语句。我们在查看这个视图的时候,也可以再嵌套条件。

    • 例如,我们查看上面创建的视图deptno20,那么需要执行的sql语句是:select * from deptno20;,并且我们可以再加where条件,或者查看部分字段等。

    在视图中插入、修改和删除的时候其实对应的真实的内容也会变化。

    更多相关内容
  • 在数据库中,存放的只是视图的定义而已,而不存放数据,这些数据仍然存放在原来的基本表结构.只是有使用视图的时候才回执行视图的定义,从基本表查询数据.视图的作用非常多,主要有以下几点:首先,它可以简化数据...

    视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表,它是一个虚表.在数据库中,存放的只是视图的定义而已,而不存放数据,这些数据仍然存放在原来的基本表结构中.只是有在使用视图的时候才回执行视图的定义,从基本表中查询数据.

    67105fb69807b2e88f1f08e1c650294a.png

    视图的作用非常多,主要有以下几点:首先,它可以简化数据查询语句:其次,它可以使用户从多角度看待同一数据:再次,它可以提高数据的安全性:最后它提供了一定程度的逻辑独立性等.

    36c2eb645e32ff76371fdd1d11adc46d.png

    通过引入视图机制,用户可以将注意力集中在其关心的数据上而非全部数据,这样就大大提高了用户效率与用户满意度,而且如果这些数据来源于多个基本表结构,或者数据不仅来自于基本表结构,还有一部分数据来源于其他视图,并且搜索条件又比较复杂时,需要编写的查询语句就会比较繁琐,此时定义视图就可以使用数据的查询语句变得简单可行.定义视图可以将表与表之间的复杂的操作连接和搜索条件对用户不可见,用户只需要简单地对一个视图进行查询即可,所以,增加了数据的安全性,但是不能提高查询效率.

    展开全文
  • 主流数据库视图

    多人点赞 热门讨论 2022-04-11 23:15:49
    查询information schema.views表,可以查看到数据库中所有视图的详细信息 修改视图 CREATE OR REPLACE VIEW语句修改视图 使用ALTER语句修改视图 视图操作 使用SQL语句更新视图 基本表数据新增后视图自动更新 ...

    文章目录

    目录

    文章目录

    前言

    视图

    视图概述

    创建视图

    格式

    注意问题:

    示例

    查看视图的方法

    DESCRIBE语句查看视图基本信息

    SHOW TABLES语句查看视图基本信息

    查询information schema.views表,可以查看到数据库中所有视图的详细信息

    修改视图

    CREATE OR REPLACE VIEW语句修改视图

    使用ALTER语句修改视图

    视图操作

    使用SQL语句更新视图

    基本表数据新增后视图自动更新

    删除视图中的数据

    删除视图


    前言

    大家好,我是ice三分颜色。

    个人主页:ice三分颜色的博客

    本文讲了视图的相关知识,创建查看修改删除等。

    走过路过的小伙伴们点个赞和关注再走吧,欢迎评论区交流,努力什么时候开始都不算晚,那不如就从这篇文章开始!

    大家一起成长呀!笔芯


    视图

    视图概述

    1.视图(View)是一个存储指定查询语句的虚拟表,视图中数据来源于由定义视图所引用的表,并且能够实现动态引用,即表中数据发生变化,视图中的数据随之变化。(其本质是来说,是查询语句,起了名称的查询语句,一般我们在查询中写得普通的查询语句,查询完后关掉就没有了。但可以作为视图存下来)

    2.视图是一种数据库对象,是从一个或者多个数据表或视图(视图也可以从视图里进行查询哦)中导出的虚拟表,在数据库中只有视图的定义,而并没有存放视图中的数据,因为视图并没有真实存在的数据,真实的数据还在表中。

    3.浏览视图时所对应数据的行和列数据来自定义视图查询所引用的表,并且在引用视图时动态生成。通过视图可以实现对基表数据的查询修改。(不能直接进行插入操作哦)

    4.视图让数据库用户使用的更方便了,主要包括:

    简化数据查询和处理。视图可以为用户集中多个表中的数据,简化用户对数据的查询和处理。

    屏蔽数据库的复杂性。数据库表的更改不影响用户对数据库的使用,用户也不必了解复杂的数据库中的表结构。(对于定义了若干张表连接的视图,则将表与表之间的连接操作对用户隐蔽起来。)

    安全性。如果要使用户只能查询或修改用户有权限访问的数据,可以只授予用户访问视图的权限,而不授予访问表的权限,这样来提高数据库的安全性。

    创建视图

    格式

    视图可以建立在一张表上,也可以建立在多张表或既有视图上。格式如下:

    CREATE [OR REPLACE] VIEW 视图名[(column_list)]AS select查询语句

    [ WITH [ CASCADED|LOCAL] CHECK OPTION] ;其中:

    REPLACE表示替换已经创建的视图; WITH[CASCADED|LOCAL]CHECK OPTION表示视图在更新时保证在视图的权限范围之内CHECK OPTION 也叫做强制视图,不建议。CASCADED为默认值,表示更新视图时要满足所有相关视图和表的条件;LOCAL表示更新视图时满足该视图本身定义的条件即可,但一般不被允许。

    视图属于数据库,默认情况下将在当前数据库创建视图,若想在给定数据库常见视图,创建时应将名称指定为 库的名字.视图名字。

    创建视图要求用户具有针对视图的CREATE VIEW权限,同时具有查询设计的列的SELECT权限。

    例:通过SELECT语句查询user表获取权限信息(其中Select priv表示用户是否具有SELECT权限,Create_view表示用户是否具有CREATE VIEW权限)

    SELECT Select_priv,Create_view_priv

    FROM mysql.user WHERE user='root';

    注意问题:

    使用CREATE VIEW语句创建视图时需要注意:

    1.在视图的from子句中不能使用子查询。

    2.在视图的select语句中不能引用系统或用户变量。

    3.在视图的select语句中不能引用预处理语句参数。

    4.在视图定义中允许使用order by,但是,如果从特定视图进行了选择,而该视图使用了具有自己order by的语句,它将被忽略。

    5.在定义中引用的表或视图必须存在。可使用check table语句检查视图定义是否存在。

    6.在定义中不能引用temporary表,不能创建temporary视图。

    7.不能将触发程序与视图关联在一起。

    示例

    创建一个包含员工编号、姓名、职位和部门编号,并按员工编号升序排序的员工基本信息视图

    CREATE VIEW v_emp_base

    AS SELECT empno,ename,job,deptno FROM employee ORDER BY empno;

    创建一个包含多表连接,以及分组查询的视图(视图的SELECT查询可以包含函数、数据组或经过运算得到的数据,也可以是从多个表中获取数据。)

    CREATE OR REPLACE VIEW v_dept_sal(name,minsal,maxsal,avgsal)

    AS

    SELECT d.dname,MIN(e.sal),MAX(e.sal),AVG(e.sal)

    FROM department d,employee e

    WHERE d.deptno = e.deptno GROUP BY d.dname;

    查询这个视图

    SELECT *from v_dept_sal;

    【示例】创建一个工资大于2000的员工年薪信息的视图(如果视图中的SELECT子句包含限定条件,创建视图时可以使用WITHCHECK OPTION选项。)

    -- 表示在更新该视图时,记录数据要满足工资大于2000的条件

    CREATE VIEW v_emp_salary

    AS

    SELECT empno,ename,sal*12 salary

    FROM employee

    WHERE sal>2000 WITH CHECK OPTION;

    查看视图的方法

    describe、show tables、show table status、show create view语句、查询information_schema数据库下的views表等。

    DESCRIBE语句查看视图基本信息

    DESCRIBE | DESC 视图名;

    演示如下:

    DESCRIBE v_emp_salary;

    SHOW TABLES语句查看视图基本信息

    从MySQL5.1开始,执行SHOW TABLES语句时不仅会显示表的名字,同时也会显示视图的名字。

    SHOW TABLES;

    演示如下:

    show tables;

    查询information schema.views表,可以查看到数据库中所有视图的详细信息

    MySQL数据库中,所有视图的定义都存在information_schema数据库下的views表中。

    SELECT * FROM information_schema.views WHERE 表名='视图名';

    例:查询v_emp_salary视图定义

    SELECT * FROM information_schema.views WHERE table_name='v_emp_salary';

    修改视图

    修改数据库中存在的视图,当基本表的某些字段发生改变时,可以通过修改视图来保持视图和基本表的一致。

    MySQL中通过CREATE OR REPLACE语句和ALTER语句来修改视图

    CREATE OR REPLACE VIEW语句修改视图

    CREATE OR REPLACE VIEW 视图名 [[(字段列表)]As select查询语句

    [ WITH [ CASCADED|LOCAL] CHECK OPTION] ;

    Create or replace view vw_dept

    AS

    Select *from dept;

    查看视图

    当视图已经存在时,修改语句对视图进行修改;当视图不存在时,创建视图。

    使用ALTER语句修改视图

    ALTER VIEW 视图名字 [(字段列表)]As select查询语句

    [ WITH [ CASCADED|LOCAL] CHECK OPTION];

    修改v_emp_base视图将deptno列改为sal列显示

    ALTER VIEW v_emp_base

    AS SELECT empno,ename,job,sal FROM employee ORDER BY empno;

    视图操作

    在视图上也可以进行修改数据的DML操作(INSERT、UPDATE和DELETE)。因为视图是“虚表”,因此对视图的操作最终会转换为对基本表的操作。

    视图上的DML操作会有如下限制:

    1.若一个视图依赖于多张基表,则一次只能修改一个基表的数据,不能同时修改多个基本表的数据;

    2.如果修改违反了基表的约束条件或视图的with check option条件,则无法更新视图;

    3.如果视图包含连接操作符、DISTINCT关键字、集合操作符(UNION) .聚合函数(COUNT、SUM、MAX等)、GROUP BY、ORDER BY、HAVING子句,则将无法更新视图;

    4.如果视图包含SELECT列的子查询、WHERE子句中的子查询、FROM子句中的子查询,则无法更新视图。

    使用SQL语句更新视图

    通过对视图的更新操作来更新基本表数据

    --根据emloyee表创建empview表

    CREATE TABLE empview AS SELECT * FROM employee;

    --创建视图v_emp_update

    CREATE OR REPLACE VIEW v_emp_update

    AS SELECT empno,ename,sal,deptno FROM empview WHERE deptno=20 WITH CHECK OPTION;

    --操作视图v_emp_update更新数据

    UPDATE v_emp_update SET sal=1000 WHERE ename='SMITH';

    --查看基本表empview中数据的变化

    SELECT empno,ename,sal,deptn o FROM empview WHERE ename='SMITH';

    最后结果如下:

    基本表数据新增后视图自动更新

    向基本表中插入数据,视图数据相应更新--向基本表empview中插入一条记录

    INSERT INTO empview VALUES(7777,'TEST','CLERK',7902,2020-12-17,800,NULL,20);

    --查询视图v_emp_update的数据变化

    SELECT * FROMv_emp_update;

    删除视图中的数据

    使用DELETE操作视图来更新基本表数据--删除视图中的数据

    DELETE FROM v_emp_update WHERE empno=7777;

    --查询基本表中数据的变化

    SELECT* FROM empview;

    删除视图

    删除视图时,只能删除视图的定义,不会删除数据。

    MySQL数据库中,用户必须拥有drop权限才能使用drop view语句来删除视图。

    drop view命令可以删除多个视图,各视图名之间用逗号分隔。

    DROP VIEW [if exists] 视图名 [,视图名]

    删除视图v_emp_update

    DROP VIEW IF EXISTS v_emp_update;

    视图就没有啦

    展开全文
  • 数据库——视图

    千次阅读 2022-04-21 22:16:50
    前言:我们发现在数据库操作的过程有...创建视图时,只是把其视图的定义存放在数据字典,而不存储视图对应的数据。因此,称视图为虚表。 视图的创建 创建视图可用“CREATE VIEW”语句实现。句法如下: ....

    前言:我们发现在数据库操作的过程中有时候需要的数据分散在几个表中,如果我们一直利用笛卡尔积来进行连接去操作的话就会很复杂产生很大的消耗。这时候我们可以创建一个虚表——视图来进行操作。

    视图的定义

    在SQL中,外模式一级数据结构的基本单位是视图(view),视图是从若干基本表和其他视图采用SELECT语句构造出来的。

    在创建视图时,只是把其视图的定义存放在数据字典中,而不存储视图对应的数据。因此,称视图为虚表。

    视图的创建  

    创建视图可用“CREATE VIEW”语句实现。其句法如下:       

    CREATE VIEW <视图名>(<列名序列>)

                           AS <SELECT 查询语句>

    例 对于教学数据库中基本表S、SC、C,用户经常要用到S#、SNAME、CNAME和SCORE等列的数据,那么可用下列语句建立视图:

    CREATE VIEW STUDENT_SCORE(S#,SNAME,CNAME,SCORE)

                                          AS SELECT S.S#,SNAME,CNAME,SCORE

                                                 FROM S,SC,C

                                                 WHERE S.S# = SC.S# AND SC.C# = C.C#;

    视图的撤销    

    在视图不需要时,可以用“DROP VIEW”语句把其从系统中撤销。其句法如下:         

    DROP VIEW 视图名  

    例 撤销STUDENT_SCORE视图,可用下列语句实现:                  

    DROP VIEW STUDENT_SCORE;

    视图的更新(在这里不建议对视图进行更新)

    如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。

    例子:

    如果定义了一个有关男学生的视图:           

     CREATE VIEW S_MALE                     

                  AS SELECT S#,SNAME,AGE               

                         FROM S               

                         WHERE SEX ='M';      

    这个视图是从单个关系只使用选择和投影导出的,并且包含主键S#,因此是可更新的。

    例如,执行插入操作:              

    INSERT INTO S_MALE              

    VALUES('S28','WU',18);    

    系统自动会把它转变成下列语句:         

    INSERT INTO S       

    VALUES('S28', 'WU',18, 'M');

    除此之外都不可以进行视图的更新,只有这一种情况可以对视图进行更新!

    视图的优点:

    视图是用户一级的数据观点,由于有了视图,使数据库系统具有下列优点:  

    (1)视图提供了逻辑数据独立性。  

    (2)简化了用户观点。数据库的全部结构是复杂的,并有多种联系。

    (3)数据的安全保护功能。

    展开全文
  • SQL Server 数据库视图

    千次阅读 2022-03-17 17:07:08
    MySQL 数据库视图 视图的增删查改操作介绍
  • 数据库中视图的作用

    万次阅读 多人点赞 2018-07-30 14:36:12
    数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表。所以基本表的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中...
  • 【第八篇】MySQL数据库视图详解

    千次阅读 多人点赞 2022-03-04 15:31:05
    但是,数据库中只存放视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表。使用视图查询数据时,数据库系统会从原来的表取出对应的数据。因此,视图中的数据是依赖于原来的表
  • 数据库视图

    2020-09-22 20:00:52
    视图是从一个或多个实际表获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。 视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库...
  • 定义一个视图时,只是把定义存放在数据库中,并不直接存储视图对应的数据,视图中的数据是从基表获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典...
  • 达梦数据库学习之视图

    千次阅读 2020-09-27 20:46:59
    视图是从一个或几个基表(或视图)导出的表,它是一个虚表,即数据字典中只存放视图的义(由视图名和查询语句组成),而不存放对应的数据,这些数据仍存放在原来的基表。当需要使用视图时,则执行对应的查询语句,所...
  • 数据库视图 sql

    千次阅读 2021-01-28 08:08:21
    数据库必知词汇:数据库视图视图是从一个或几个基本表(或视图)导出的虚拟的表。系统的数据字典存放了视图的定义,不存放视图对应的数据。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,...
  • 数据库(mysql)视图的基本操作

    千次阅读 2022-05-02 12:01:08
    视图是从一个或多个基本表导出的视图数据库中只存放视图的定义,而不存在视图对应的数据,这些数据仍然存储对应的基本表,当基本表的数据发生变换时,视图中查询的数据也随之变化,视图相当于一个窗口,透过...
  • 视图的介绍与作用、视图的创建、视图的修改、视图的更新、视图的重命名与删除、视图的实际操作练习
  • 数据库视图创建及应用

    千次阅读 2021-08-07 14:10:25
    数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表。所以一旦基本表的数据发生变化,从视图中查询出来的数据也就随之改变了。从这个意义上说,视图就像是一个窗口,透过它可以...
  • 数据库 视图基础概念

    万次阅读 2019-01-19 11:06:12
    数据库中视图的概念: 视图是从一个表或是多个表导出的表,视图与表...可以将视图看做是移动的窗口,通过它可以看到自己感兴趣的数据,视图是从一个或是多个表获得的,这些表的数据存放在数据库中,那些用户产生...
  • T-SQL视图

    2020-12-14 17:24:26
    数据存放在视图所引用的原始数据表视图的多样性 一个或多个原始数据表,根据不同用户的不同需求,可以创建不同的视图 视图的用途 筛选表的行 防止未经许可的用户访问敏感数据 降低数据库的复杂程度 将多个...
  •  为了让你眼见为实,下面截图看看,从截图你可以看到,不管是“系统数据库”还是“用户数据库”都是有这些系统视图的,而且一眼扫下去发现连名字都一样。  3.看看这些系统视图都能带给我什么福利?  Q1:我...
  • 数据库语句之视图

    千次阅读 2020-05-08 18:52:35
    视图可以看成是一个保存在数据库中的SELECT语句,查询视图也就是执行相应的SELECT语句,SELECT语句执行的结果是一个表,所以视图也可以看成是一个表,但建立视图后,数据库存放视图的定义,即对应的SELECT语句并不...
  • 使用过微软Access小型数据库管理系统的朋友可能永远不会忘记查询的概念,它也是二级Access考试的重之重。掌握了查询部分,二级过关就有了绝对把握。查询之所以重要,其中一个主要原因在于灵活性。创建数据库表...
  • MySQL视图

    2020-12-14 13:35:05
    视图:view,是一种有结构(有行有列)但是没结果(结构不真实存放数据)的虚拟表. 创建视图 Create view 视图名字 AS 正常sql语句 例如: 单表视图: CREATE VIEW myView1 AS SELECT * FROM emp; 2.多表视图: CREATE VIEW...
  • 数据库视图、索引

    千次阅读 2016-10-10 09:03:01
    数据库视图以及索引的概念和作用介绍
  • 一、问题问题:我使用nativecat创建的存储过程、视图,当进行数据迁移后不知为何存储过程丢失,于是,我要找啊,但是不知道哪找,于是查了一下,发现了他们的存放过程。二、解决方法:2.1 存储过程或函数存放位置...
  • 数据库:使用视图优化查询性能

    千次阅读 2019-09-03 11:01:39
    视图是从一个或多个表导出来的虚拟表。这是因为视图返回的结果集的一般格式与由列和行组成的表相似,并且SQL语句...定义一个视图时,只是把定义存放在数据库中,并不直接存储视图对应的数据,直到用户使用...
  • 2、只存放视图的定义,不存放视图对应的数据。 3、基表的数据发生变化,从视图中查询出的数据也随之改变。 视图的作用: 1、视图能够简化用户的操作 2、视图使用户能以多种角度看待同一数据 3、视图对重构数据库...
  • 达梦数据库视图管理

    千次阅读 2019-12-31 17:02:12
    达梦数据库视图管理 视图(view),也称虚表, 不占用物理空间,因为视图本身的定义语句还是要...视图是从一个或多个实际表获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表,一个...
  • 数据库 视图和表

    千次阅读 2019-08-01 15:01:17
    数据库中表的概念很好理解,就是数据的一种组织存放形式。表是包含真正的数据的。比如我有一张表如下 磁盘我可以找到表文件 用cat打开表文件的话会是乱码,包含了实际的数据 而视图。本质上是sql语句(或者...
  • mysql数据库存放位置哪里

    万次阅读 2021-01-18 18:29:33
    数据库文件默认存放位置:C:\Program Files\MySQL\MySQL Server 5.0\data。数据库的配置文件C:\Program Files\MySQL\MySQL Server 5.0\my.ini。data文件夹里找到不test的数据库文件夹和自己创建的文件夹是因为...
  • 数据库中视图理解和优点介绍

    万次阅读 2016-10-31 20:21:03
    数据库中视图的概念:视图是从一个表或是多个表导出的表,视图与表...可以将视图看做是移动的窗口,通过它可以看到自己感兴趣的数据,视图是从一个或是多个表获得的,这些表的数据存放在数据库中,那些用户产生视图

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,198
精华内容 47,679
热门标签
关键字:

在数据库中视图只存放其