zoukankan      html  css  js  c++  java
  • MySQL视图

    1. 创建视图

      1.1 创建视图的语法形式

    CREATE [OR REPALCE][ALGORITHM = {UNSIGNED|MERGE|TEMPTABLE}]
    VIEW view_name[(column_list)]
    AS SELECT_statement
    [WITH[CASCADED|LOCAL|CHECK OPTION]]
    #CREATE 创建新的视图;
    #REPLACE 替换已经创建的视图
    #ALGORITHM表示视图选择的算法;
    #view_name:视图的名称
    #column_list:属性列
    #SELECT_statement:SELECT语句
    #WITH[CASCADED|LOCAL] CHECK OPTION:视图更新时保证在视图的权限范围之内

      1.2 在单表上创建视图

        例1:在t表格上创建一个名为view_t的视图:

    #创建基本表并插入数据
    create table t(quantity int,price int);
    insert into t values(3,50);
    
    #创建视图语句为:
    create view view_t as select quantity,price,quantity*price from t;
    quantity price quantity*price
    3 50 150

      

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

        例2:在t表格上创建一个名为view_t2的视图:

    1 create view view_t2(qty,price,total) as select quantity,price,quantity*price from t;
    2 select * from view_t2;

    qty  

    price total
    3 50 150

      1.3 在多表上创建视图

        MySQL中也可以在两个或者两个以上的表上创建视图,可以使用CREATE VIEW语句实现。

     1 #在表student和表stu_info上创建视图stu_glass,代码如下:
     2 insert into student values(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');
     3 insert into stu_info values(1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');
     4 #创建视图stu_glass,语句如下:
     5 CREATE VIEW stu_glass ( id, name, glass ) AS SELECT
     6 student.s_id,
     7 student.name,
     8 stu_info.glass 
     9 FROM
    10     student,
    11     stu_info 
    12 WHERE
    13     student.s_id = stu_info.s_id;
    14 #查看视图
    15 select * from stu_glass;

        这个例子就解决了刚开始提出的那个问题,通过这个视图可以很好的保护基本表中的数据。这个视图中的信息很简单,只包含了id,姓名和班级,id字段对应student表中的s_id字段,name对应student表中的name字段,glass对应sttu_info表中的glass字段。

    2. 查看视图

      2.1 DESCRIBE 语句查看视图的基本信息

    1 #通过DESCRIBE语句查看视图view_t的定义
    2 DESCRIBE view_t;

        结果显示出了视图的字段定义、字段的数据类型、是否为空、是否为主/外键、默认值和额外信息。

        DESCRIBE一般情况下都简写为DESC,输入这个命令的执行结果和输入DESCRIBE的执行结果是一样的。

      2.2 SHOW TABLE STATUS  语句查看视图基本信息

    1 #通过SHOW TABLE STATUS命令查看视图信息
    2 show table status like 'view_t';

      2.3 SHOW CREARE VIEW 语句查看视图详细信息

    1 #SHOW CREATE VIEW 语句可以查看视图详细定义
    2 show create view view_t;

      2.4 在views表中查看视图详细信息

    1 #在MySQL中,information_schema数据库下的views表中存储了所有视图的定义。通过对views表的查询,可以查看数据库中的所有视图的详细信息,查询语句如下:
    2 SELECT * FROM information_schema.VIEWS;

    3. 修改视图

      3.1 CREATE OR REPLACE VIEW 语句修改视图

    1 #MySQL中如果要修改视图,使用CREATE OR REPLACE VIEW语句:
    2 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
    3 VIEW view_name[(column_list)]
    4 AS SELECT_statement
    5 [WITH[CASCADED|LOCAL]CHECK OPTION]

      3.2 ALTER 语句修改视图

    1 ALTER[ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
    2 VIEW view_name[(column_list)]
    3 AS SELECT_statement
    4 [WITH[CASCADED|LOCAL]CHECK OPTION]

    4. 更新视图

    #使用UPDATE语句更新视图view_t:
    update view_t set quantity = 5;
    select * from view_t;
    +----------+
    | quantity |
    +----------+
    |        5 |
    +----------+
     1 #使用INSERT 语句在基本表t中插入了一条记录:
     2 insert into t values(3,5);
     3 select * from t;
     4 select * from view_t2;
     5 +-----+-------+-------+
     6 | qty | price | total |
     7 +-----+-------+-------+
     8 |   5 |    50 |   250 |
     9 |   3 |     5 |    15 |
    10 +-----+-------+-------+
    11 2 rows in set (0.02 sec)

      向表t中插入一条记录,通过select查看表t和视图view_t2,可以看到其中的内容也跟着更新,视图更新的不仅仅是数量和单价,总价也会更新。

      

     1 #使用delete语句在删除视图view_t2中的一条记录:
     2 delete from view_t2 where price = 5;
     3 select * from view_t2;
     4 +-----+-------+-------+
     5 | qty | price | total |
     6 +-----+-------+-------+
     7 |   5 |    50 |   250 |
     8 +-----+-------+-------+
     9 1 row in set (0.02 sec)
    10 
    11 select * from t;
    12 +----------+-------+
    13 | quantity | price |
    14 +----------+-------+
    15 |        5 |    50 |
    16 +----------+-------+
    17 1 row in set (0.03 sec)

    5. 删除视图

      当视图不再需要时,可以将其删除,删除一个或多个视图可以使用DROP VIEW语句:

      语法如下:

    DROP VIEW[IF EXISTS]
        view_name[,view_name]...
       [RESTRICT|CASCADE]

      例:删除stu_glass视图

    1 drop view if exists stu_glass;
    2 Query OK, 0 rows affected (0.00 sec)
    作者:容一博

    个性签名:我有一个不成熟的想法!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    c#过滤所有换行符和多余空格
    个人整理网站外链专用
    C++操作符的优先级
    winform下richtextbox 特定字符颜色的改变
    触摸屏网站制作的小细节
    DEDECMS 批量替换alt为空的文章为文章标题的MYSQL语句
    天涯海客邮件搜索群发大师 使用说明
    天涯论坛自动回帖软件免费版使用说明
    c# winform窗口控件委托传参数的写法
    论坛自动回帖软件终于在多特软件站发布成功了
  • 原文地址:https://www.cnblogs.com/chromer/p/mysql_3.html
Copyright © 2011-2022 走看看