在MySQL数据库中,视图是基于SQL查询结果集的虚拟表,本身不存储实际数据,而实际业务中经常需要把视图的查询结果持久化存储为物理表,这就需要用到从视图创建表的语法。掌握对应的操作方法,可以快速完成数据备份、临时数据处理等需求。

基础语法:创建表并复制视图数据
最常用的方式是通过CREATE TABLE ... AS SELECT语法,直接从视图中查询数据并生成新表,这种方式会同时复制视图的字段结构和对应的数据。
-- 假设已存在视图 view_user_info,存储用户基础信息 -- 创建新表 user_info_backup,复制视图的所有数据和字段结构 CREATE TABLE user_info_backup AS SELECT * FROM view_user_info;
如果只需要复制视图的字段结构,不需要复制数据,可以在查询条件中添加恒假条件,这样只会生成表结构,不会插入任何数据。
-- 仅复制视图的字段结构,不复制数据 CREATE TABLE user_info_structure AS SELECT * FROM view_user_info WHERE 1 = 0;
指定字段创建表并映射视图数据
如果不需要复制视图的所有字段,或者需要给新表的字段指定不同的名称,可以在创建语句中显式指定新表的字段,再对应映射视图的查询字段。
-- 创建新表,指定字段名,映射视图的对应字段
CREATE TABLE user_simple_info (
user_id INT,
user_name VARCHAR(50),
user_age INT
) AS
SELECT id, name, age FROM view_user_info;
注意事项说明
- 新表的字段属性会继承视图查询结果的字段属性,比如字段类型、长度、是否允许为NULL等,如果视图字段有别名,新表默认使用别名作为字段名。
- 通过这种方式创建的表是独立的物理表,后续视图的数据变更不会影响新表的数据,新表的数据变更也不会同步到视图和原表。
- 如果视图本身包含关联查询、聚合函数等复杂逻辑,生成的表字段会根据查询结果的实际类型自动适配,比如聚合函数生成的字段会被定义为对应的数值类型。
- 创建表时需要确保当前用户有创建表的权限,以及查询对应视图的权限,否则会抛出权限不足的错误。
验证创建结果
创建完成后,可以通过查询表结构和表数据的方式验证创建是否符合预期。
-- 查看新表的字段结构 DESC user_info_backup; -- 查看新表的前10条数据,确认数据是否正确复制 SELECT * FROM user_info_backup LIMIT 10;
MySQL视图创建表CREATE_TABLE视图修改时间:2026-06-18 06:24:15