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 语句。

posted @   KILLNPE  阅读(2726)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示