精华内容
下载资源
问答
  • 2017-11-28 15:27:03

    刚工作时候第一次看到接触到视图,感觉很不能理解,我当时就在想为什么要用视图呢?明明可以关联表查出来数据的,为什么又单独创建一个视图查询数据呢?

    工作久了我有以下几点心得分享给大家.

    1.安全性 

    因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,视图中数据是根据基表的更新而更新,用户不可以更改/删除视图。

    2.方便,简化数据操作

    当我们业务需求要查出多张表的数据,这时我们可能会关联多张表查询处理.如果这个查询sql复杂的话也影响了查询效率. 

    这个时候我们就可以创建视图,查询时候只需要 select * from view 就ok啦~

    3.订制数据

    在实际业务中,比如我为某企业做的一个后台管理系统,里面分好几种角色:采购员、销售、技术员、后勤...

    后勤部的人可能只需要一些和后勤有关的数据,与他无关的数据对于他们没有意义,这时候我们可以根据业务创建一个后勤视图view_logistics

    查询数据只需要select * from view_logistics;

    更多相关内容
  • Word快速了解五种常见视图作用.docx
  • 网络视图用于建立网络通信,拓扑视图用于网络诊断
  • 目录视图1、视图定义1、为什么需要视图3、视图作用优点作用:优点:4、创建视图5、视图使用规则1)视图的嵌套:2)视图排序的覆盖6、修改视图多表连接视图:复杂视图7、 删除视图8:MySQL数据库中的视图保存: ...

    MySQL数据库之视图

    视图

    1、视图定义

    视图通过以定制的方式显示来自一个或多个表的数据
    视图是一种数据库对象,用户可以像查询普通表一样查询视图
    视图内其实没有存储任何数据,它只是对表的一个查询
    视图的定义保存在数据字典内,创建视图所基于对表称为“基表”

    1、为什么需要视图

    例如经常要对emp和dept表进行连接查询,每次都要做表的连接,写同样的一串语句,同时由于工资列队数据比较敏感,对外要求不可见;使用子查询,每次做表的连接写的语句过长,把查询语句做成视图,下次查询视图就好了;
    对这样的问题就可以通过视图来解决。

    3、视图的作用优点

    作用:

    控制安全
    保存查询数据
    

    优点:

    提供了灵活一致级别安全性。
    隐藏了数据的复杂性
    简化了用户的SQL指令
    通过重命名列,从另一个角度提供数据
    

    4、创建视图

    CREATE [OR REPLACE] VIEW 视图名
    	[(alias[, alias]...)]--为视图字段指定别名
    	AS subquery
    	[WITH READ ONLY];
    

    举例说明:创建视图, emp_V1, 包括10号部门的所有雇员信息.

    mysql> create view emp_v1 as	//创建视图emp_v1
        -> select * from emp
        -> where deptno=10;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from emp_v1;
    +-------+-----------+-----------+------+------------+-------+------+--------+
    | empno | ename     | job       | mgr  | hiredate   | sai   | comm | deptno |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    |  1007 | 张飞      | 经理      | 1009 | 2001-09-01 | 24500 | NULL |     10 |
    |  1009 | 曾阿牛    | 董事长    | NULL | 2001-11-17 | 50000 | NULL |     10 |
    |  1014 | 黄盖      | 文员      | 1007 | 2002-01-23 | 13000 | NULL |     10 |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    3 rows in set (0.00 sec)
    
    

    5、视图使用规则

    1. 视图必须有唯一命名
    2. 在mysql中视图的数量没有限制
    3. 创建视图必须从管理员那里获得必要的权限
    4. 视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新的视图
    5. 在视图中可以使用OREDR BY,但是如果视图内已经使用该排序子句,则视图的ORDER BY将覆盖前面的 ORDER BY。
    6. 视图不能索引,也不能关联触发器或默认值。
    7. 视图可以和表同时使用

    1)视图的嵌套:

    4 . 视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新的视图
    可以在创建视图emp_v2中进行嵌套emp_v1;

    mysql> create view emp_v1 as
        -> select * from emp
        -> where deptno=10;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from emp_v1;
    +-------+-----------+-----------+------+------------+-------+------+--------+
    | empno | ename     | job       | mgr  | hiredate   | sai   | comm | deptno |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    |  1007 | 张飞      | 经理      | 1009 | 2001-09-01 | 24500 | NULL |     10 |
    |  1009 | 曾阿牛    | 董事长    | NULL | 2001-11-17 | 50000 | NULL |     10 |
    |  1014 | 黄盖      | 文员      | 1007 | 2002-01-23 | 13000 | NULL |     10 |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    3 rows in set (0.00 sec)
    
    mysql> create view emp_v2 as	//创建视图emp_v2嵌套emp_v1
        -> select * from emp_v1
        -> where job='文员';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from emp_v2
        -> ;
    +-------+--------+--------+------+------------+-------+------+--------+
    | empno | ename  | job    | mgr  | hiredate   | sai   | comm | deptno |
    +-------+--------+--------+------+------------+-------+------+--------+
    |  1014 | 黄盖   | 文员   | 1007 | 2002-01-23 | 13000 | NULL |     10 |
    +-------+--------+--------+------+------------+-------+------+--------+
    1 row in set (0.00 sec)
    
    

    2)视图排序的覆盖

    5 . 在视图中可以使用OREDR BY,但是如果视图内已经使用该排序子句,则视图的ORDER BY将覆盖前面的 ORDER BY。
    下面举例说明,新的视图排序会覆盖原来的视图排序

    mysql> create view emp_v3 as
        -> select * from emp_v1
        -> order by sai desc;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from emp_v3;	//此处是降序的排序
    +-------+-----------+-----------+------+------------+-------+------+--------+
    | empno | ename     | job       | mgr  | hiredate   | sai   | comm | deptno |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    |  1009 | 曾阿牛    | 董事长    | NULL | 2001-11-17 | 50000 | NULL |     10 |
    |  1007 | 张飞      | 经理      | 1009 | 2001-09-01 | 24500 | NULL |     10 |
    |  1014 | 黄盖      | 文员      | 1007 | 2002-01-23 | 13000 | NULL |     10 |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    3 rows in set (0.00 sec)
    
    mysql> select * from emp_v3
        -> order by sai;			//这里覆盖之前升序排序
    +-------+-----------+-----------+------+------------+-------+------+--------+
    | empno | ename     | job       | mgr  | hiredate   | sai   | comm | deptno |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    |  1014 | 黄盖      | 文员      | 1007 | 2002-01-23 | 13000 | NULL |     10 |
    |  1007 | 张飞      | 经理      | 1009 | 2001-09-01 | 24500 | NULL |     10 |
    |  1009 | 曾阿牛    | 董事长    | NULL | 2001-11-17 | 50000 | NULL |     10 |
    +-------+-----------+-----------+------+------------+-------+------+--------+
    3 rows in set (0.00 sec)
    
    

    6、修改视图

    修改视图可以有两种方法进行修改

    使用CREATE OR REPLACE VIEW 语句修改EMP_V_10 视图. 为每个列指定列名.
    
    –CREATE OR REPLACE VIEW emp_v_10
    	–(id, name, sal, dept_id)
    	–AS SELECT id,name, 
    	–salary, dept_id
    	–FROM employees
    	–WHERE dept_id = 10;
    
    在CREATE VIEW 语句中字段与子查询中的字段必须一一对应,否则就别指定别名,或在子查询中指定别名
    
    使用ALTER VIEW 语句修改EMP_V_10 视图. 为每个列指定列名.
    
    –ALTER VIEW emp_v_10
    	–(id, name, sal, dept_id)
    	–AS SELECT id,name, 
    	–salary, dept_id
    	–FROM employees
    	–WHERE dept_id = 10;
    
    在CREATE VIEW 语句中字段与子查询中的字段必须一一对应,否则就别指定别名,或在子查询中指定别名
    
    

    2)创建复杂视图
    创建一个从两个表中查询数据,并进行分组计算的复杂视图.
    在数据库中插入另一个表

    mysql> select * from dept;
    +--------+-----------+--------+
    | deptno | dname     | lo     |
    +--------+-----------+--------+
    |     10 | 教研部    | 北京   |
    |     20 | 学工部    | 上海   |
    |     30 | 销售部    | 广州   |
    |     40 | 财务部    | 武汉   |
    +--------+-----------+--------+
    4 rows in set (0.00 sec)
    

    多表连接视图:复杂视图

    多个表更体现出视图的优势
    创建复杂视图将两个表连接起来

    mysql> create view emp_v4 as
        -> select e.*,d.dname
        -> from dept d,
        -> (select deptno,count(1) from emp
        -> group by deptno
        -> having count(1)>=1) e
        -> where d.deptno=e.deptno;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from emp_v4;
    +--------+----------+-----------+
    | deptno | count(1) | dname     |
    +--------+----------+-----------+
    |     10 |        3 | 教研部    |
    |     20 |        4 | 学工部    |
    |     30 |        6 | 销售部    |
    +--------+----------+-----------+
    3 rows in set (0.00 sec)
    
    

    7、 删除视图

       删掉视图不会导致数据的丢失,因为视图是基于数据库的表之上的一个查询定义.  
       DROP VIEW view_name;
    
    mysql> drop view emp_v1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> drop view emp_v2;
    Query OK, 0 rows affected (0.00 sec)
    

    8:MySQL数据库中的视图保存:

    MySQL视图保存在information_schema表里面

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db                 |
    | db1                |
    | gtid               |
    | it                 |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |
    | test2              |
    +--------------------+
    10 rows in set (0.00 sec)
    
    mysql> use information_schema 
    

    需要进入information_schema数据库进行查看视图

    mysql> select * from VIEWS 
    	->	where TABLE_NAME='emp_v1'\G;
    *************************** 1. row ***************************
           TABLE_CATALOG: def
            TABLE_SCHEMA: db1
              TABLE_NAME: emp_v1
         VIEW_DEFINITION: select `db1`.`emp`.`empno` AS `empno`,`db1`.`emp`.`ename` AS `ename`,`db1`.`emp`.`job` AS `job`,`db1`.`emp`.`mgr` AS `mgr`,`db1`.`emp`.`hiredate` AS `hiredate`,`db1`.`emp`.`sai` AS `sai`,`db1`.`emp`.`comm` AS `comm`,`db1`.`emp`.`deptno` AS `deptno` from `db1`.`emp` where (`db1`.`emp`.`deptno` = 10)
            CHECK_OPTION: NONE
            IS_UPDATABLE: YES
                 DEFINER: root@localhost
           SECURITY_TYPE: DEFINER
    CHARACTER_SET_CLIENT: utf8
    COLLATION_CONNECTION: utf8_general_ci
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified
    
    mysql> 
    
    展开全文
  • 二、视图作用 在数据库开发的过程中,往往有一些业务需要很复杂的查询才能满足,而视图最直接的效果是,可以将复杂的查询“包装”成一个简单的查询,类似于编程中的方法调用。 在视图中在字段名后加上别名后,可以...

    一、什么是视图

    概念:视图是从一个或几个基本表(视图)导出的表。
    个人理解:从创建的SQL的语句来看,语句中通常包含SELECT语句。所以视图一定是基于表产生的,基于存在的视图生成的视图,其基础依然是基本表。

    二、视图的作用

    1、简化用户的操作。
    在数据库开发的过程中,往往有一些业务需要很复杂的查询才能满足,而视图最直接的效果是,可以将复杂的查询“包装”成一个简单的查询,类似于编程中的方法调用。如:一个业务查询需要多表连接查询,同时还需要使用判断语句,那么一个查询语句可能就会有几百个字符。几百个字符的select语句写在应用程序,或配置文件中往往是不便维护的。为了解决这个问题可以由数据库开发人员编写视图,从而将复杂的查询语句简化为一个普通的“单表查询”。这样的select语句在应用程序中就很好维护。
    2、一定程度上减少了应用程序和数据库表之间的耦合性。
    在视图中在字段名后加上别名后,可以实现在数据库基本表的表结构变化后,应用程序中查询视图取数据的语句则不必修改。
    3、一定程度上屏蔽了表结构等敏感信息。
    在数据库中可以将视图查询权限赋予有关用户,而基本表的查询权限就可以不赋予上述用户。在数据库管理系统中,这起到一个一定的隐藏敏感信息的作用。
    4、使不同用户从不同角度使用同一份数据。
    一个基础表中含有较多信息时,基于同一个基础表的表格可以产生多个视图,不同的视图具有不同的业务意义。从而使得不同用户从不同角度使用同一份数据。

    三、更新视图

    这里说的更新视图指DML操作,即update,delete,insert。不是更新视图的定义。一般情况下,基于一个基本表的视图是可更新的。
    1、只读视图
    如果不希望用户通过视图修改数据,可以不给用户赋予该视图的update,delete,insert的权限。也可以在创建视图时使用with read only设置只读属性。两种方式的选取因业务而异。
    2、其他不可更新视图的情况
    (1)视图基于多表导出。
    (2)视图语句中字段是由字段表达式生成的。
    (3)视图语句中出现聚合函数。
    (4)视图语句中含group by,distinct等语句。
    (5)视图语句中含有嵌套查询。

    展开全文
  • 视图作用

    千次阅读 多人点赞 2019-04-30 18:45:32
    若有以下3张表: ...视图作用实在是太强大了,以下是视图的好处: 【作用一】 提高了重用性,视图就像一个函数。如果要频繁获取user的name和goods的name。就应该使用以下sql语言。如下: select a...

    若有以下3张表:

    user表,有id,name,age,sex字段

    goods表,有id,name,price字段

    ug表,有id,userid,goodsid字段

    视图的作用实在是太强大了,以下是视图的好处:

    【作用一】

        提高了重用性,视图就像一个函数。如果要频繁获取user的name和goods的name。就应该使用以下sql语言。如下:

            select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

        但有了视图就不一样了,创建视图other。示例

            create view other as select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

        创建好视图后,就可以这样获取user的name和goods的name。如下:

            select * from other;

        以上sql语句,就能获取user的name和goods的name了。

    【作用二】

        对数据库重构,却不影响程序的运行。假如因为某种需求,需要将user拆成表usera和表userb,该两张表的结构如下:

           usera有id,name,age字段

           userb有id,name,sex字段

        这时如果使用sql语句:select * from user;那就会提示该表不存在,这时该如何解决呢。解决方案:创建视图。以下sql语句创建视图:

            create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;

            以上假设name都是唯一的。使用sql语句:select * from user;就不会报错什么的。这就实现了更改数据库结构,不更改脚本程序的功能了。

    【作用三】

        提高了安全性能。可以对不同的用户,设定不同的视图。例如:某用户只能获取user表的name和age数据,不能获取sex数据。则可以这样创建视图。示例如下:

            create view other as select a.name, a.age from user as a;

        这样的话,使用sql语句:select * from other; 最多就只能获取name和age的数据,其他的数据就获取不了了。

    【作用四】

        让数据更加清晰。想要什么样的数据,就创建什么样的视图。经过以上三条作用的解析,这条作用应该很容易理解了吧。

    展开全文
  • MySQL视图

    2020-12-14 13:35:05
    MySQL视图创建视图查看视图使用视图作用修改视图删除视图视图内数据操作1.新增数据2.删除数据3.更新数据 视图:view,是一种有结构(有行有列)但是没结果(结构中不真实存放数据)的虚拟表. 创建视图 Create view 视图...
  • 视图作用视图可以更改么? 视图就是一张虚拟的表 视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。 在 SQL 中,视图是基于 SQL 语句的结果集的...
  • 描述了ORACLE数据库数据字典中各类视图的功能
  • SQL——视图作用

    千次阅读 2017-11-14 19:58:25
    1、视图是一张虚拟表,视图的字段是由我们自定义的,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。 2、使用视图的优势,视图可以将多个复杂关联表,提取出我们需要的信息,优化查询速度。 ...
  • sql之视图作用

    2019-12-18 17:35:41
    什么是视图? 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。 视图是存储在数据库中的查询的sql 语句,您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表...
  • [MySQL]什么是视图以及视图作用

    千次阅读 2020-08-19 23:02:53
    什么是视图 视图是存储在数据库中的查询的sql 语句 本质是查询语句的结果,存入一个临时空间 是一个虚拟表,其内容由查询定义 视图在数据库中没有原本的物理存储,只是相当于临时表 是一个虚拟表,其内容由查询定义...
  • 视图视图的概念:视图就是提供一个查询的 窗口,所有的数据来自于原表 —查询语句创建表 CREATE TABLE emp as SELECT * from SCOTT.EMP; select * from emp; —创建视图必须有dba权限 CREATE VIEW v_emp as ...
  • 1、视图介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存了查询的SQL逻辑,不保存查询...
  • 数据库中视图作用

    万次阅读 多人点赞 2018-07-30 14:36:12
    一、视图简介 视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图...
  • 进行多表连合,通过对一张表操作,为什么要建立视图关系?比原来数据库语句复杂好多,又没有实用性,却还是要建立视图
  • mysql视图作用(详细)

    万次阅读 多人点赞 2018-08-14 16:43:54
    MySQL视图是一个虚拟表...对其中所引用的基础表来说,MySQL视图作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的...
  • 数据库视图作用和优势

    千次阅读 2019-04-27 20:14:41
    既然视图在实际开发过程当中被广泛使用到,它到底有哪些作用和优势呢? 1、使数据简单化:可以将复杂的查询创建成视图,提供给他人使用,他人就不需要去理解其中复杂性的业务关系或逻辑关系。这样对视图的使用人员...
  • 物化视图(material view)是什么?物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照(类似于MSSQL Server中的...
  • 可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详细介绍视图的概念、创建及使用方法。 1.视图定义及简单介绍 视图是基于 SQL 语句的结果集的可视化的表,即视图是一个虚拟存在的表,可以...
  • SQL语言——视图(view)的作用

    千次阅读 2020-06-15 17:11:23
    什么是试图 视图是一张虚拟表,封装了底层与数据表的接口,相当于一张表或多张表的数据结果集。是一种允许用户通过视图访问数据的安全机制。
  • 什么是视图作用是什么?

    万次阅读 多人点赞 2018-08-14 09:31:16
    1.1. 视图 1.1.1. 什么是视图 视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。 视图本身并不包含任何数据,它只包含映射到基表的...
  • Mysql中的视图是什么?有什么作用

    千次阅读 2020-03-31 23:21:36
    Mysql中的视图,其实是一个虚拟表,使用时动态检索查询数据,如何理解这个概念呢?我们先建立基础表,语句如下: DROP TABLE IF EXISTS `user_info`; CREATE TABLE `user_info` ( `id` int(20) NOT NULL AUTO_...
  • 以往当我们查询数据时,一定要很认真的地从设计select语句...直接用select * from 视图名就行了,其实将查询语句创建成视图,不仅仅是简化查询的动作;更重要的是,视图具备数据表的特性,还可以衍生出更多的应用...
  • 数据库视图的基本概念及作用

    千次阅读 2019-09-28 07:17:22
    一、视图简介 视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图...
  • sql之浅谈视图作用

    万次阅读 2016-05-05 09:31:50
    【数据库】☆★sql之浅谈视图作用 在一个项目的实际开发过程中牵涉到复杂业务的时候,我们不可避免的需要使用中间表来进行数据连接,有的同学就说了,我可以采用Hibernate进行主外键进行关联啊?多对多,多对一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 388,245
精华内容 155,298
关键字:

视图作用

友情链接: 5g-polar-code.rar