• MySQL教程92-MySQL查看视图


    创建好视图后,可以通过查看视图的语句来查看视图的字段信息以及详细信息。本节主要讲解如何使用 SQL 语句来查看视图的字段信息以及详细信息。

    查看视图的字段信息

    查看视图的字段信息与查看数据表的字段信息一样,都是使用 DESCRIBE或DESC 关键字来查看的。具体语法如下:

    DESCRIBE|DESC 视图名;

    示例 1

    下面创建学生信息表 studentinfo 的一个视图,用于查询学生姓名和考试分数。

    创建学生信息表 studentinfo 的 SQL 语句和运行结果如下:

    mysql> CREATE TABLE studentinfo(
        -> ID INT(11) PRIMARY KEY,
        -> NAME VARCHAR(20),
        -> SCORE DECIMAL(4,2),
        -> SUBJECT VARCHAR(20),
        -> TEACHER VARCHAR(20));
    Query OK, 0 rows affected (0.10 sec)

    创建查询学生姓名和分数的视图语句如下:

    mysql> CREATE VIEW v_studentinfo AS SELECT name,score FROM studentinfo;
    Query OK, 0 rows affected (0.04 sec)

    通过 DESCRIBE 语句查看视图 v_studentsinfo 中的字段信息,SQL 语句和运行结果如下所示。

    mysql> DESCRIBE v_studentinfo;
    +-------+--------------+------+-----+---------+-------+
    | Field | Type         | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | name  | varchar(20)  | YES  |     | NULL    |       |
    | score | decimal(4,2) | YES  |     | NULL    |       |
    +-------+--------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)
    注意:使用 DESC 的执行结果和使用 DESCRIBE 是一样的。

    由运行结果可以看出,查看视图的字段内容与查看表的字段内容显示的格式是相同的。因此,更能说明视图实际上也是一张数据表了,不同的是,视图中的数据都来自于数据库中已经存在的表。

    查看视图的详细信息

    在 MySQL 中,SHOW CREATE VIEW 语句可以查看视图的详细定义。其语法如下所示:

    SHOW CREATE VIEW 视图名;

    通过上面的语句,还可以查看创建视图的语句。创建视图的语句可以作为修改或者重新创建视图的参考,方便用户操作。

    示例 2

    使用 SHOW CREATE VIEW 查看视图,SQL 语句和运行结果如下所示:

    mysql>  SHOW CREATE VIEW v_studentinfo G
    *************************** 1. row ***************************
                    View: v_studentinfo
             Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_studentinfo` AS select `studentinfo`.`NAME` AS `name`,`studentinfo`.`SCORE` AS `score` from `studentinfo`
    character_set_client: gbk
    collation_connection: gbk_chinese_ci
    1 row in set (0.00 sec)

    上述 SQL 语句以G结尾,这样能使显示结果格式化。如果不使用G,显示的结果会比较混乱,如下所示:

    mysql> DESCRIBE v_studentinfo;
    +-------+--------------+------+-----+---------+-------+
    | Field | Type         | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | name  | varchar(20)  | YES  |     | NULL    |       |
    | score | decimal(4,2) | YES  |     | NULL    |       |
    +-------+--------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)
    
    mysql>  SHOW CREATE VIEW v_studentinfo;
    +---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
    | View          | Create View                                                                                                                                                                                  | character_set_client | collation_connection |
    +---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
    | v_studentinfo | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_studentinfo` AS select `studentinfo`.`NAME` AS `name`,`studentinfo`.`SCORE` AS `score` from `studentinfo` | gbk                  | gbk_chinese_ci       |
    +---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
    1 row in set (0.01 sec)

    拓展

    所有视图的定义都是存储在 information_schema 数据库下的 views 表中,也可以在这个表中查看所有视图的详细信息,SQL 语句如下:

    SELECT * FROM information_schema.views;

    不过,通常情况下都是使用 SHOW CREATE VIEW 语句。

  • 相关阅读:
    java.lang.NoSuchMethodError
    asm相关内容想下载(包括 jar 包)
    Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    用Navicat连接mysql报错:2003-Can't connect to MySql server on '10.100.0.109'(10039)
    The type java.lang.reflect.AnnotatedElement cannot be resolved. It is indirectly referenced from required .class files
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    交通测速方式
    卡口和电子警察的区别
    Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable
    在window上安装mysql
  • 原文地址:https://www.cnblogs.com/no-celery/p/13552529.html
Copyright © 2020-2023  润新知