美文网首页
mysql 视图

mysql 视图

作者: 暴躁程序员 | 来源:发表于2023-03-12 16:32 被阅读0次

    视图是通过sql查询语句动态生成的自定义虚拟表,只保存sql语句的逻辑,不保存实际数据,可简化sql操作

    1. 创建和使用视图

    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);
    
    
    1. 创建视图
      语法: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;
    
    
    1. 使用视图
      视图就是虚拟表,所以视图的使用方式和表相同
      注意:视图一般不用于实际表中数据的插入、删除、修改(只适合一些单一简单的插入、删除、修改,因为限制太多)
    -- 查询身高大于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;
    

    相关文章

      网友评论

          本文标题:mysql 视图

          本文链接:https://www.haomeiwen.com/subject/ckqqrdtx.html