• MySQL视图——学习笔记及实验


    MySQL视图

    一、视图

    1.1、视图概述

    视图是从一个或者多个表里导出来的表,是一种虚拟存在的表;

    其内容由查询定义,即视图中的数据不需要占用内存空间,而是仅仅保存了一条select语句;

    行列数据都来自所引用的表,并随着基本表的变化而变化。使用原因:安全,易于理解和使用。

    1.2、视图优势

    增强数据安全性:给不同用户分配不同的视图,用户只能操作查看相对应的数据,无法看到数据表的结构,增强了数据安全访问控制。

    提高灵活性,操作变简单:由于视图是一种虚拟表,用户可以自由的选择所需要的数据进行定义,操作灵活,简单。

    提高数据的逻辑独立性:表结构和应用程序的变化,都可以通过重新定义视图或者修改视图定义来解决。

    1.3、执行机制

    当调用视图时,才会执行视图中的SQL语句,进行数据操作,视图和表的数据总是一样的。

    二、视图定义和管理(以studentinfo为实验例子)

    在学生管理系统中,有学生信息表studentinfo表,其表结构如下:

    字段名

    字段描述

    数据类型

    主键

    外键

    非空

    唯一

    自增

    Number

    学号

    INT(4)

    Name

    姓名

    VARCHAR(20)

    Major

    专业

    VARCHAR(20)

    age

    年龄

    INT(4)

    2.1.1、创建视图

    使用CREATE VIEW语句来创建视图college_view,显示studentinfo表中的number,name,age,major,并将字段名显示为:student_num,student_name, student_age, department。

    mysql> create table studentinfo(

        -> number int(4) primary key not null unique comment '学号',

        -> name varchar(20) not null comment '姓名',

        -> major varchar(20) comment '专业',

        -> age int(4) comment '年龄'

    -> );

    答: 

    Create view college_view(studnet_num,student_name,studnet_age,department) as select number,name,age,major from studentinfo;

    2.1.2、查看视图

    执行SHOW CREATE VIEW语句来查看视图的详细结构。

    Describe college_view;

    Show table status like ‘college_view’;

    show create view college_view;

    答:show create view college_view;

    +--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

    | View         | Create View                                                                                                                                                                                                                                                                           | character_set_client | collation_connection |

    +--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

    | college_view | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `college_view` AS select `studentinfo`.`number` AS `studnet_num`,`studentinfo`.`name` AS `student_name`,`studentinfo`.`age` AS `studnet_age`,`studentinfo`.`major` AS `department` from `studentinfo` | utf8                 | utf8_general_ci      |

    +--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

    1 row in set

     

    2.1.3更新视图插入、更新、删除

    向视图中插入如下3条记录:

    0901,'张三',20,'外语'

    0902,'李四',22,'计算机'

    0903,'王五',19,'计算机'

    答:

    insert into college_view() values

        -> (0901,'张三',20,'外语'),

        -> (0902,'李四',22,'计算机'),

        -> (0903,'王五',19,'计算机');

     

    2.1.4修改视图

    使视图中只显示专业为“计算机”的信息。

    Create or replace view college_view(student_num, student_name, student_age,department) as select number,name,age, major from studentinfo where major='计算机' with local check option;

    local check option 是可选参数,表示更新视图是要保证在改视图的权限范围之内,可选属性,为了数据安全性建议使用。

    答:或者 alter view

    Alter view college_view(student_num,student_name,student_age,department)

        -> as select number,name,age, major

        -> from studentinfo where major='计算机' with local check option;

     

    2.1.5删除视图

    答:drop view college_view;

     

    三、总结

    创建视图和修改视图为重点,并且以查看辅助。

  • 相关阅读:
    Python实现将IP地址转换为数字
    转 python两个 list 获取交集,并集,差集的方法
    并发编程之协程
    网络编程之协议
    网络编程
    python之路-模块和包
    python IO模型
    python 线程(队列,线程池),协程(理论greenlet,gevent模块,)
    python 线程(部分)Thread的使用,守护线程,互斥锁,递归锁,信号量,事件,条件,定时器
    常见的面试题
  • 原文地址:https://www.cnblogs.com/liyanyinng/p/13962546.html
Copyright © 2020-2023  润新知