zoukankan      html  css  js  c++  java
  • mysql——视图——概念

    二、视图
    
    
    视图是一种虚拟的表,是从数据库中的一个或者多个表中导出来的表。
    
    视图还可以从已经存在的视图的基础上定义。
    
    数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据存放在原来的表中。
    
    使用视图查询数据时,数据库会从原来的表中取出对应的数据,因此,视图中的数据是依赖于原来的表中的数据。
    
    一旦原表中的数据发生改变,则显示在视图中的数据也会发生改变。
    
    
    
    视图的作用:视图是在原有的表或者视图的基础上重新定义的虚拟表,这样可以从原有的表中选取对用户有用的信息。
    
    
    1、创建视图
    
    视图可以建立在一张表上,也可以建立在多张表上
    
    语法格式:
               create [ algorithm = { undefined | merge | temptable} ]
    
                      view 视图名 [(属性清单)]
    
                      as select 语句
    
                      [ with { cascaded | loocal } check option ];
    
    
    algorithm是可选参数,表示视图选择的算法
    
    
    
    视图名参数表示需要创建的视图的名称;
    
    属性清单参数是可选参数,其指定了视图中各个属性的名词;默认情况下,与select语句中查询的属性相同;
    
    select语句参数是一个完整的查询语句,表示从某个表中查询出满足条件的记录,并将这些记录导入视图中;
    
    with check option是可选参数,表示更新视图时,要保证在该视图的权限范围内;
    
    
    
    cascaded是可选参数,表示更新视图时,要满足所有相关视图和表的条件,该参数为默认值;
    
    local表示更新视图时,只要满足该视图本身的定义条件即可;
    
    
    (1)在单表上创建视图
    
    举例1: create view department_view1 as select * from department
    
    查询department_view1视图的表结构:desc department_view1;
    
    注释:视图department_view1表的属性与department表的属性完全一样,因为在未指定定义视图的属性列表的情况下,
    
          视图的属性名与select语句查询的属性名相同。
    
    
    举例2:create view department_view2(name,fuction,location) as select d_name,fuction,address from department;
    
    视图department_view2的属性列名分别为:name,fuction,location。因为在创建视图时,指定了属性列表。
    
    视图的属性名与属性列表中的属性名相同。
    
    
    
    (2)在多表上创建视图
    
    
    举例:create algorithm=merge view worker_view1 (name,department,sex,age,address) 
    
          as select name,department.d_name,sex,2009-birthday,address
    
          from worker,department where worker.d_id=departmnet.d_id
    
          with local check option;
    
    
    
    
    2、查看视图
    
    (1)describe语句查看视图基本信息
    
    语法格式:describe 视图名;         可以简写为:desc 视图名;
    
    此语句可以简单了解视图中的各个字段的简单的信息
    
    
    (2)show table status语句查看视图基本信息
    
    语法格式:show table status like '视图名';
    
    like表示后面匹配的是字符串;
    
    视图名参数指需要查看的视图的名称,需要用单引号引起了;
    
    
    
    (3)show create view语句查看视图详细信息
    
    语法格式:show create view 视图名;
    
    
    (4)在views表中查看视图详细信息
    
    在MYSQL中,所有视图的定义都存储在information_schema数据库下的views表中。
    
    查询views表,可以查看到数据库中所有视图的详细信息。
    
    语法格式:select *  from information_schema.views;
    
    
    
    
    
    
    
    3、修改视图
    
    修改视图是指修改数据库中已经存在的表的定义。
    
    当基本表的某些字段发生改变时,可以通过修改视图来保持视图和基本表之间的一致;
    
    (1)create or replace view语句修改视图
    
    语法格式:
               create or replace [ algorithm = { undefined | merge | temptable} ]
    
                          view 视图名 [(属性清单)]
    
                          as select 语句
    
                         [ with { cascaded | loocal } check option ];
    
    
    
    (2)alter语句修改视图
    
    
    语法格式:
               alter [ algorithm = { undefined | merge | temptable} ]
    
                      view 视图名 [(属性清单)]
    
                      as select 语句
    
                      [ with { cascaded | loocal } check option ];
    
    
    4、更新视图
    
    ***************************************************
    
    
    5、删除视图
    
    
    删除视图是指删除数据库中已经存在的视图的定义;删除视图时,只能删除视图的定义,不会删除数据
    
    语法格式:drop view [if exists] 视图名列表;
    
    if exists参数指判断视图是否存在,如果存在则执行,否则不执行,
    
    视图名列表参数表示要删除的视图的名称列表,各个视图名称之间用逗号隔开;
  • 相关阅读:
    Java基础面试题附答案 81-100(五)
    css练习--抽屉作业
    css
    HTML 快速入门
    selectors 模块完成文件上传下载功能
    IO 模型
    进程 线程 协程
    socket套接字
    异常处理
    面向对象
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12093548.html
Copyright © 2011-2022 走看看