精华内容
下载资源
问答
  • 1.1. 视图 1.1.1. 什么是视图 ...创建视图的语法: 01.CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])] 02.AS subquery ; 视图创建后,可以像操作表一样操作视图,主要是查询操作。 语法中的

    1.1. 视图
    1.1.1. 什么是视图
    视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。
    视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。

    创建视图的语法:
    01.CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
    02.AS subquery ;
    视图创建后,可以像操作表一样操作视图,主要是查询操作。
    语法中的Subquery是SELECT查询语句,对应的表被称作基表。
    根据视图所对应的子查询种类分为几种类型:
    •SELECT语句是基于单表建立的,且不包含任何函数运算、表达式或分组函数,叫做简单视图,此时视图是基表的子集;
    •SELECT语句同样是基于单表,但包含了单行函数、表达式、分组函数或GROUP BY子句,叫做复杂视图;
    •SELECT语句是基于多个表的,叫做连接视图。
    1.1.2. 视图的作用
    如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可,简化复杂查询;
    视图本质上就是一条SELECT语句,所以当访问视图时,只能访问到所对应的SELECT语句中涉及到的列,对基表中的其它列起到安全和保密的作用,可以限制数据访问。
    1.1.3. 授权创建视图
    创建视图的DDL语句是CREATE VIEW,用户必须有CREATE VIEW系统权限,才能创建视图。如果没有权限,创建视图时会提示:权限不足。
    管理员可以通过DCL语句授予用户创建视图的权限。下例中管理员给用户tarena创建视图的权限:
    01.GRANT CREATE VIEW TO tarena;
    1.1.4. 创建简单视图(单表)
    创建一个简单视图V_EMP_10,来显示部门10中的员工的编码、姓名和薪水:
    01.CREATE VIEW v_emp_10
    02.AS
    03.SELECT empno, ename, sal, deptno
    04.FROM emp
    05.WHERE deptno = 10;
    查看视图结构:
    01.DESC v_emp_10;

    1.1.5. 查询视图
    查询视图和查询表的操作相同:
    01.SELECT * FROM v_emp_10;
    此时视图的列名,和创建视图时的列名一致,不一定是原列名:
    01.SELECT id, name, salary FROM v_emp_10;
    1.1.6. 对视图进行INSERT操作
    视图本身并不包含数据,只是基表数据的逻辑映射。所以当对视图执行DML操作时,实际上是对基表的DML操作。对视图执行DML操作的基本原则:
    •简单视图能够执行DML操作,下列情况除外:在基表中定义了非空列,但简单视图对应的SELECT语句并没有包含这个非空列,导致这个非空列对视图不可见,这时无法对视图执行INSERT操作;
    •如果视图定义中包含了函数、表达式、分组语句、DISTINCT关键字或ROWNUM伪列,不允许执行DML操作;
    •DML操作不能违反基表的约束条件。
    对简单视图执行INSERT操作,成功插入数据到基表中:
    01.INSERT INTO v_emp_10
    02.VALUES(1234, ‘DOCTOR’, 4000, 10);
    简单视图可以通过DML操作影响到基表数据。
    1.1.7. 创建具有CHECK OPTION约束的视图
    语法如下:
    01.CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
    02.AS subquery
    03.[WITH CHECK OPTION];
    其中:WITH CHECK OPTION短语表示,通过视图所做的修改,必须在视图的可见范围内:
    •假设INSERT,新增的记录在视图仍可查看
    •假设UPDATE,修改后的结果必须能通过视图查看到
    •假设DELETE,只能删除现有视图里能查到的记录
    创建带有CHECK OPTION约束的视图:
    01.CREATE OR REPLACE VIEW v_emp_10
    02.AS
    03.SELECT empno id, ename name, sal salary, deptno
    04.FROM emp
    05.WHERE deptno = 10
    06.WITH CHECK OPTION;
    下述DML语句操作失败,因为部门20不在视图可见范围内:
    01.INSERT INTO v_emp_10 VALUES(1008,‘donna’,5500, 20);
    02.UPDATE v_emp_10 SET deptno = 20 WHERE id = 7782;

    展开全文
  • 视图的作用创建、查询

    千次阅读 2018-09-12 16:12:50
    1、什么是视图 视图:存储的查询语句,当调用的时候,产生结果集,视图...视图的好处,可以主要分为四点:  我简单的说一下,希望你能明白。  第一点:  使用视图,可以定制用户数据,聚焦特定的数据。  解释:  ...

    1、什么是视图

    视图:存储的查询语句,当调用的时候,产生结果集,视图充当的是虚拟表的角色.

    • 如果要对一张表或者多张表进行查询,可以通过写复杂的SQL语句来实现
    • 如果要这些SQL语句存储为视图,那么查询的时候,就直接查询这个视图就可以了.

    2、视图的好处

    视图的好处,可以主要分为四点: 
    我简单的说一下,希望你能明白。 

    第一点: 
    使用视图,可以定制用户数据,聚焦特定的数据。 

    解释: 
    在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话, 
    采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没 
    有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视 
    图,以后他在查询数据时,只需select   *   from   view_caigou   就可以啦。 

    第二点:使用视图,可以简化数据操作。 

    解释:我们在使用查询时,在很多时候我们要使用聚合函数,同时还要 
    显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能 
    会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我 
    们只需要select   *   from   view1就可以啦~,是不是很方便呀~ 

    第三点:使用视图,基表中的数据就有了一定的安全性 

    因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以 
    将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集 
    合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改 
    和删除,可以保证数据的安全性。 

    第四点:可以合并分离的数据,创建分区视图 

    随着社会的发展,公司的业务量的不断的扩大,一个大公司,下属都设有很 
    多的分公司,为了管理方便,我们需要统一表的结构,定期查看各公司业务 
    情况,而分别看各个公司的数据很不方便,没有很好的可比性,如果将这些 
    数据合并为一个表格里,就方便多啦,这时我们就可以使用union关键字, 
    将各分公司的数据合并为一个视图。 

    以上,就是我认为视图的作用,实际上很多公司都使用视图来查询数据的

    http://www.cnblogs.com/chuanzhang053/p/9230153.html

    3、视图的创建和查询

    1.创建表,插入数据,并且执行查询

    mysql> CREATE TABLE t (qty INT, price INT);
    Query OK, 0 rows affected (0.09 sec)
    
    mysql> INSERT INTO t VALUES(3, 50), (5, 60);
    Query OK, 2 rows affected (0.01 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM t;
    +------+-------+
    | qty  | price |
    +------+-------+
    |    3 |    50 |
    |    5 |    60 |
    +------+-------+
    2 rows in set (0.00 sec)

    2.创建视图,视图中的查询根据具体的情况有相应的表达式

    mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;
    Query OK, 0 rows affected (0.01 sec)

    3.查询视图v

    mysql> SELECT * FROM v;
    +------+-------+-------+
    | qty  | price | value |
    +------+-------+-------+
    |    3 |    50 |   150 |
    |    5 |    60 |   300 |
    +------+-------+-------+
    2 rows in set (0.00 sec)
    
    对于视图的查询也可以加上过滤条件:
    
    mysql> SELECT * FROM v WHERE qty = 5;
    +------+-------+-------+
    | qty  | price | value |
    +------+-------+-------+
    |    5 |    60 |   300 |
    +------+-------+-------+
    1 row in set (0.00 sec)备注:所以仅仅查询这个视图,和执行定义语句中的SQL语句的效果相同.即就相当于查询了一张表.同时,视图也就等同于后面的查询语句,视图是存储在数据库中的,所以就理解了开头说的存储的查询.

    4.查看当前库下所有的视图

    mysql> show full tables where table_type like 'VIEW';
    +----------------+------------+
    | Tables_in_test | Table_type |
    +----------------+------------+
    | v              | VIEW       |
    | vw_01          | VIEW       |
    +----------------+------------+
    2 rows in set (0.00 sec)

    5.基于其他的视图来创建视图

     

    mysql> select * from vw_01;  #vw_01是一个视图.
    +---+------+
    | a | b    |
    +---+------+
    | 1 | NULL |
    | 2 | NULL |
    | 3 | NULL |
    | 4 | NULL |
    +---+------+
    4 rows in set (0.00 sec)
    
    mysql> create view v01 as select a,b from vw_01;  #基于视图来创建视图,也就是说,视图定义中的SELECT查询的是另外的视图.
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> select * from v01;
    +---+------+
    | a | b    |
    +---+------+
    | 1 | NULL |
    | 2 | NULL |
    | 3 | NULL |
    | 4 | NULL |
    +---+------+
    4 rows in set (0.00 sec)
    展开全文
  • SQL语言之视图前言本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用,创建和使用视图以及修改视图这些方面讲解视图。视图是什么视图View是一种虚拟的表,本身不保存数据,内部封装...

    SQL语言之视图

    前言

    本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用,创建和使用视图以及修改视图这些方面讲解视图。

    视图是什么

    视图View是一种虚拟的表,本身不保存数据,内部封装了一条SELECT语句,数据来源于查询的一张或多张实际数据的表。

    视图的结构和真实的表相同,也是有行和列组成,在视图上也可以进行增删改查的操作。

    视图的作用

    视图主要用于查询,使用视图的优点是:

    简单

    视图可以将复杂的查询语句进行封装,用户使用时不需要关心表的结构、连接关系、筛选条件、分组和排序等等,只需要对视图进行简单的查询。

    安全

    创建视图时,可以筛选掉一些不希望用户看到的行和列,也可以给视图设置访问权限,让不同级别的用户看到不同的视图,从而提高数据库的数据安全性。

    视图的语法

    创建视图

    create view视图名

    as

    select语句;

    删除视图

    drop view视图名;

    修改视图

    replace view 视图名

    as

    select语句;

    使用视图

    selec * from 视图名 [where 条件];

    代码案例:

    -- 在单表上创建视图 查询女同学的视图

    create view view_female_stu

    as

    select * from tb_student where stu_gender = '女';

    -- 使用视图

    select * from view_female_stu

    673dc936c4f60d844b1cbe7fc3f34fd8.png

    -- 使用连接查询创建视图,查询学生姓名、课程和分数

    create view view_stu_score

    as

    select s.stu_id 学号, s.stu_name 姓名,c.course_name 课程,sc.score 分数

    from tb_student s left join tb_score sc on s.stu_id = sc.stu_id

    left join tb_course c on c.course_id = sc.course_id;

    -- 使用视图

    select * from view_stu_score where 分数 > 80;

    c1fac82b61a75b10b4f7fd74026c613f.png

    注意:在创建视图时,查询语句中的别名会作为视图的列名

    视图的修改

    视图主要用于查询,但是也可以执行insert、update和delete语句,结果会映射到视图关联的实际表中。

    -- 更新学生的年龄

    update view_female_stu set stu_age = stu_age + 3 where stu_id = 4;

    执行上面代码的结果是,实际的tb_student表被更新了。

    -- 更新学生分数

    update view_stu_score set 分数 = 83 where 学号 = 1;

    执行上面代码的结果是,更新失败,出现错误:

    d0ed753eb0ebf5ddb7c960174f918ecd.png

    为什么有的视图可以更新,而有的会失败呢?

    下面情况的视图不可以执行insert、update和delete操作:

    多表连接

    包含distinct

    包含聚合函数

    包含group by

    包含order by

    包含union、union all

    包含子查询等

    所以对视图执行DML操作的限制条件还是很多的,大多数情况下我们还是对视图进行查询,如果需要DML操作还是建议对实际表进行操作。

    总结

    视图是一种虚拟的表,数据来源于从实际表中查询的结果,它可以简化查询操作,以及提高数据库的安全性,本章学习了视图的创建和使用语法,视图可以修改但是有比较多的限制条件,一般还是用于查询。

    展开全文
  • 主要作用是不让所有人都能看到整张表。 比如有个员工信息表,里面有联系方式,薪资等,可能只希望HR能看到薪资,其他人只能看到联系方式,那么就可以使用视图来实现。 高效:复杂连接查询,每次执行时效率比较低,...

    数据库视图是什么?

    创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。
    在这里插入图片描述


    视图的好处?

    视图使用的时候跟表一样。主要作用是不让所有的人都能看到整张表。

    比如有个员工信息表,里面有联系方式,薪资等,可能只希望HR能看到薪资,其他人只能看到联系方式,那么就可以使用视图来实现。

    高效:复杂的连接查询,每次执行时效率比较低,可以考虑新建视图,每次从视图中获取,将会提高效率。

    定制数据:将常用的字段放置在视图中。


    视图:
    是从一个或几个基本表(或视图)导出的虚拟表。

    作用:
    1、视图能够简化用户的操作
    2、视图使用户能以多钟角度看待同一数据
    3、视图对重构数据库提供了一定程度的逻辑独立性
    4、视图能够对机密数据提供安全保护
    5、适当的利用视图可以更清晰的表达查询


    示例

    【实例 1 创建基于单表的视图】在 tb_students_info 表上创建一个名为 view_students_info 的视图,输入的 SQL 语句和执行结果如下所示。

    mysql> CREATE VIEW view_students_info
        -> AS SELECT * FROM tb_students_info;
    Query OK, 0 rows affected (0.00 sec)
    
    
    mysql> SELECT * FROM view_students_info;
    +----+--------+---------+------+------+--------+------------+
    | id | name   | dept_id | age  | sex  | height | login_date |
    +----+--------+---------+------+------+--------+------------+
    |  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
    |  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
    |  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
    |  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
    |  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
    |  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
    |  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
    |  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
    |  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
    | 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
    +----+--------+---------+------+------+--------+------------+
    10 rows in set (0.04 sec)
    

    默认情况下,创建的视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图。

    【示例2 创建基于多表的视图】

    mysql> CREATE VIEW v_students_info
        -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
        -> AS SELECT id,name,dept_id,age,sex,height,login_date
        -> FROM tb_students_info;
    Query OK, 0 rows affected (0.06 sec)
    
    
    mysql> SELECT * FROM v_students_info;
    +------+--------+------+-------+-------+----------+------------+
    | s_id | s_name | d_id | s_age | s_sex | s_height | s_date     |
    +------+--------+------+-------+-------+----------+------------+
    |    1 | Dany   |    1 |    24 | F     |      160 | 2015-09-10 |
    |    2 | Green  |    3 |    23 | F     |      158 | 2016-10-22 |
    |    3 | Henry  |    2 |    23 | M     |      185 | 2015-05-31 |
    |    4 | Jane   |    1 |    22 | F     |      162 | 2016-12-20 |
    |    5 | Jim    |    1 |    24 | M     |      175 | 2016-01-15 |
    |    6 | John   |    2 |    21 | M     |      172 | 2015-11-11 |
    |    7 | Lily   |    6 |    22 | F     |      165 | 2016-02-26 |
    |    8 | Susan  |    4 |    23 | F     |      170 | 2015-10-01 |
    |    9 | Thomas |    3 |    22 | M     |      178 | 2016-06-07 |
    |   10 | Tom    |    4 |    23 | M     |      165 | 2016-08-05 |
    +------+--------+------+-------+-------+----------+------------+
    10 rows in set (0.01 sec)
    

    通过这个视图可以很好地保护基本表中的数据。
    视图中包含 s_id、s_name 和 dept_name,s_id 字段对应 tb_students_info 表中的 id 字段,s_name 字段对应 tb_students_info 表中的 name 字段,dept_name 字段对应 tb_departments 表中的 dept_name 字段。


    查看视图结构

    DESCRIBE 可以用来查看视图,语法如下:
    DESCRIBE 视图名;

    mysql> DESCRIBE v_students_info;
    +----------+---------------+------+-----+------------+-------+
    | Field    | Type          | Null | Key | Default    | Extra |
    +----------+---------------+------+-----+------------+-------+
    | s_id     | int(11)       | NO   |     | 0          |       |
    | s_name   | varchar(45)   | YES  |     | NULL       |       |
    | d_id     | int(11)       | YES  |     | NULL       |       |
    | s_age    | int(11)       | YES  |     | NULL       |       |
    | s_sex    | enum('M','F') | YES  |     | NULL       |       |
    | s_height | int(11)       | YES  |     | NULL       |       |
    | s_date   | date          | YES  |     | 2016-10-22 |       |
    +----------+---------------+------+-----+------------+-------+
    7 rows in set (0.04 sec)
    
    展开全文
  • 什么是索引视图

    2011-04-15 19:20:00
    通常,这些视图的主要作用是:•提供一种安全机制,将用户限制到一个或多个基表的某个数据子集中。•提供一种机制,允许开发人员自定义用户通过逻辑方式查看存储在基表中的数据的方式。通过 SQL Server 2000,SQL ...
  • 所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。二、视图的特性视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟...
  • Mysql中的视图

    2019-02-19 10:48:00
    阅读目录 ...所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 视图的特性 视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据...
  • 视图

    2018-09-01 19:29:59
    所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 视图的特点 视图对若干张基本表的引用,一张虚表,查询语句执行的结果, 不存储具体的数据(基本表数据发生了改变,视图也会跟着改变); ...
  • 所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图的特性视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟...
  • mysql视图的简单介绍

    2017-11-22 18:06:21
    所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 视图的特性 视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟
  • 关于视图的笔记

    2019-02-20 19:28:10
    所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 视图的特性 视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变); ...
  • MySQL中的视图

    2019-07-15 11:35:29
    创建视图的时候,主要是编写SQL查询语句。 2、视图的特性 视图相当于一张虚表,对若干张基本表的引用,查询语句执行的结果,可以与基本表一样进行增删查改,但是不存储具体的数据,基本表数据发生了改变,...
  • MySQL数据库的视图的增删改查操作视图是什么视图的作用1) 简单2) 安全视图的语法创建视图语法:查询视图注意:删除视图修改视图使用视图代码案例:视图的修改 视图是什么 视图View是一种虚拟的表,本身不保存数据,...
  • 所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图的特性视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟...
  • MYSQL中的视图

    2017-09-21 14:17:00
    所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 视图的特性 视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变); ...
  • 前言本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么视图的作用创建和使用视图以及修改视图这些方面讲解视图。视图是什么视图View是一种虚拟的表,本身不保存数据,内部封装了一条...
  • mysql中的视图小总

    2017-08-10 11:17:02
    所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 视图的特性 视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视
  • SQL语言之视图前言本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用,创建和使用视图以及修改视图这些方面讲解视图。视图是什么视图View是一种虚拟的表,本身不保存数据,内部封装...
  • mysql视图

    2019-05-07 15:31:00
    本文转载自https://www.cnblogs.com/chenpi/p/5133648.html#_label0 阅读目录 什么是视图 视图的特性 视图的作用 使用场合 ...什么是视图 ...所以我们在创建视图的时候,主要的工作就落在创建...
  • Mysql中的视图操作

    千次阅读 2018-04-24 16:37:50
    所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图的特性视图对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 227
精华内容 90
关键字:

创建视图的主要作用是什么