视图是通过sql查询语句动态生成的自定义虚拟表,只保存sql语句的逻辑,不保存实际数据,可简化sql操作
1. 创建和使用视图
- 创建测试表和测试数据(创建用户表和用户详情表)
-- 用户表
CREATE TABLE IF NOT EXISTS `user`(
id int PRIMARY key auto_increment,
username VARCHAR(22) NOT NULL,
`password` VARCHAR(22) NOT NULL
);
-- 用户详细信息表
CREATE TABLE IF NOT EXISTS user_info(
id INT PRIMARY key auto_increment,
uid INT NOT NULL,
realname VARCHAR(22) NOT NULL,
gender enum('男','女') NOT NULL,
height SMALLINT NOT NULL,
age SMALLINT NOT NULL
);
-- 插入测试数据
INSERT INTO `user`(username,`password`) VALUES ('zhangsan','123456'),('lisi','666666');
INSERT INTO user_info(uid,realname,gender,height,age) VALUES (1,'张三','男',175,22),(2,'李四','男',190,30);
- 创建视图
语法:CREATE VIEW 视图名 AS 查询sql
-- 创建 用户详细信息 视图
CREATE VIEW v_user_detail
AS
SELECT a.id,a.username,a.`password`,b.realname,b.gender,b.height,b.age FROM `user` a,user_info b WHERE a.id = b.uid;
-- 单纯 sql 查询 --- 查询用户详细信息
SELECT a.id,a.username,a.`password`,b.realname,b.gender,b.height,b.age FROM `user` a,user_info b WHERE a.id = b.uid;
- 使用视图
视图就是虚拟表,所以视图的使用方式和表相同
注意:视图一般不用于实际表中数据的插入、删除、修改(只适合一些单一简单的插入、删除、修改,因为限制太多)
-- 查询身高大于180用户的用户详细信息
SELECT * FROM v_user_detail WHERE height > 180;
2. 查看视图
-- 方式一:查看所有视图
SHOW TABLES; -- 查看表和视图
SHOW TABLES LIKE 'v_%'; -- 通过视图命名来区分表和视图
-- 方式二:查看视图结构
DESC 视图名;
-- 方式三:查看视图的创建过程
SHOW CREATE VIEW 视图名;
3. 修改视图
语法:ALTER VIEW 视图名 AS 查询sql
-- 方式一: 修改视图,ALTER VIEW 视图名 AS 查询sql
ALTER VIEW v_user_detail
AS
SELECT a.id,a.username,a.`password`,b.realname,b.gender,b.height,b.age FROM `user` a,user_info b WHERE a.id = b.uid;
-- 方式二:视图存在则修改,不存在则创建, CREATE OR REPLACE VIEW 视图名 AS 查询sql
CREATE OR REPLACE VIEW v_user_detail
AS
SELECT a.id,a.username,a.`password`,b.realname,b.gender,b.height,b.age FROM `user` a,user_info b WHERE a.id = b.uid;
4. 删除视图
语法:DROP VIEW 视图名1,视图名2...;
DROP VIEW v_user_detail;
网友评论