MySQL——视图(二)视图管理(2)在单表上创建视图

本节将通过具体的案例来讲解如何在单表上创建视图。

例如,在 student 表上创建 view_stu.视图。

在创建视图之前需要先创建一个数据库 chapter07,创建数据库的 SQL 语句如下所示:

sql 复制代码
CREATE DATABASE chapter07;

选择使用数据库 chapter07,SQL语句如下:

sql 复制代码
mysql> USE chapter07;
Database changed

在数据库中创建一个表 student 用于存储学生信息,创建 student 表的 SQL 语句如下所示:

sql 复制代码
mysql> CREATE TABLE student(
    -> s_id INT(3),
    -> name VARCHAR(20),
    -> math FLOAT,
    -> chinese FLOAT
    -> );
Query OK, 0 rows affected, 1 warning (0.01 sec)

使用 INSERT 语句向 student 表中插人数据,SQL语句如下所示:

sql 复制代码
INSERT INTO student(s_id,name,math,chinese) VALUES(1,'Tom',80,78);
INSERT INTO student(s_id,name,math,chinese) VALUES(2,'Jack',70,80);
INSERT INTO student(s_id,name,math,chinese) VALUES(3,'Lucy',97,95);

在上述 SQL语句执行成功后,会在 student 表中添加三条数据。为了验证数据是否添加成功,使用 SELECT 语句查看 student 表中的数据,查询结果如下所示:

sql 复制代码
mysql> SELECT * FROM student;
+------+------+------+---------+
| s_id | name | math | chinese |
+------+------+------+---------+
|    1 | Tom  |   80 |      78 |
|    2 | Jack |   70 |      80 |
|    3 | Lucy |   97 |      95 |
+------+------+------+---------+
3 rows in set (0.00 sec)

从查询结果可以看出,student表中成功地添加了三条记录。接下来创建 student 表的视图,创建语句如下所示:

sql 复制代码
mysql> CREATE VIEW view_stu As SELECT math,chinese,math+chinese FROM student;
Query OK, 0 rows affected (0.00 sec)

上述 SQL语句执行成功后,会生成一个 view_stu 视图,接下来使用 SELECT 语句查看 view stu 视图,查询结果如下所示:

sql 复制代码
mysql>  SELECT * FROM view_stu;
+------+---------+--------------+
| math | chinese | math+chinese |
+------+---------+--------------+
|   80 |      78 |          158 |
|   70 |      80 |          150 |
|   97 |      95 |          192 |
+------+---------+--------------+
3 rows in set (0.00 sec)

从查询结果可以看出,view stu视图创建成功,并且重新定义了一个用于计算数学成绩和语文成绩之和的 math+chinese 字段。在默认情况下,创建的视图字段名称和基本表的字段名称是一样的,但是也可以根据实际的需要指定视图字段的名称。

例如,在 student 表上创建一个名为 view_stu2 的视图,自定义字段名称,SQI语句如下所示:

sql 复制代码
mysql> CREATE VIEw view_stu2(math,chin,sum) AS SELECT math,chinese,math+chinese FROM student;
Query OK, 0 rows affected (0.00 sec)

上述 SQL语句执行成功后,会生成一个名为 view_stu2 的视图,接下来使用SELECT 语句查看 view_stu2 视图,查询结果如下所示:

sql 复制代码
mysql> SELECT * FROM view_stu2;
+------+------+------+
| math | chin | sum  |
+------+------+------+
|   80 |   78 |  158 |
|   70 |   80 |  150 |
|   97 |   95 |  192 |
+------+------+------+
3 rows in set (0.01 sec)

从查询结果可以看出,虽然 view_stu 和 view_stu2 两个视图中的字段名称不同,但是数据却是相同的。这是因为这两个视图引用的是同一个表中的数据,并且创建视图的"AS SELECT math,chinese,math+chinese"条件语句相同。在实际开发中,用户可以根据自己的需要通过使用视图的方式获取基本表中自己需要的数据,这样既能满足用户的需求,也不需要破坏基本表原来的结构,从而保证了基本表中数据的安全性。

相关推荐
luoluoal3 分钟前
基于python的某在线中药店销售数据统计与分析系统(源码+文档)
python·mysql·django·毕业设计·源码
韩立学长39 分钟前
基于Springboot就业岗位推荐系统a6nq8o76(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
lkbhua莱克瓦2440 分钟前
进阶-索引5-设计原则
开发语言·数据库·笔记·mysql·索引·存储引擎
孤独天狼1 小时前
redis面试题
数据库·redis·缓存
hk11241 小时前
【Hardware/Robotics】2026年度多态硬件重构与自主机器人内核基准索引 (Benchmark Index)
开发语言·数据库·机器人·嵌入式·硬件开发
宇宙的尽头是PYTHON1 小时前
最简单的sql求最大值
数据库·sql
DBA小马哥1 小时前
达梦VS金仓:Oracle国产替代深度对比
数据库·oracle·kingbasees·金仓数据库
最贪吃的虎2 小时前
【分布式】分布式事务框架 Seata 详解:架构与四种实现模式
java·开发语言·数据库·分布式·后端·架构
·云扬·2 小时前
sysbench压测实战指南:从硬件到MySQL性能评估
数据库·mysql
AscendKing2 小时前
获取 MySQL 表中字段的最长长度
数据库·mysql