• 视图(view)


    • 目录

      介绍

      作用:

      例子:

      视图的创建和查询

      数据准备

      实例操作

      视图的修改和删除

      语法

      实例操作


    • 介绍

    • 是一种虚拟存在的数据表
    • 这个虚拟表并不在数据库中实际存在
    • 作用:

    • 将一些较为复杂的查询语句的结果,封装到一个虚拟表中
    • 后期再有相同需求时,直接查询该虚拟表即可
    • 例子:

    • 分别有city表和country表2张表
    • 2者是一对多的关系
    • cid是外键列,指向country表中的主键id
    • 需求:查询城市信息和所属国家信息
    • select c1.id,c1.name,c2.name from city c1, country c2 where c1.cid=c2.id
    • 这条SQL语句若会经常使用到,反复编写就比较麻烦
    • 可以把这个语句查询出来的结果保存到另一数据表里
    • 有了这张数据表后,后期再有这个查询的需求,就可以查询这个数据表即可
    • 视图的作用就凸显出来了
    • 视图的创建和查询

    • 数据准备

      1. -- 创建country表
      2. CREATE TABLE country(
      3. id INT PRIMARY KEY auto_increment, -- 国家id
      4. name VARCHAR(20) -- 国家名称
      5. );
      6. -- 添加数据
      7. INSERT INTO country VALUES (NULL,'中国'),(NULL,'美国'),(NULL,'俄罗斯');
      8. -- 创建city表
      9. CREATE TABLE city(
      10. id INT PRIMARY KEY auto_increment, -- 城市id
      11. name VARCHAR(20), -- 城市名称
      12. cid INT, -- 外键列。关联country表的主键列id
      13. CONSTRAINT k1 FOREIGN KEY (cid) REFERENCES country(id) -- 添加外键约束
      14. );
      15. -- 添加数据
      16. INSERT INTO city VALUES (NULL,'北京',1),(NULL,'上海',1),(NULL,'纽约',2),(NULL,'莫斯科',3);
    • 实例操作

    • 创建视图
      1. -- 创建city_country视图,保存城市和国家的信息(使用指定列名)
      2. CREATE VIEW city_country (city_id,city_name,country_name) AS
      3. SELECT
      4. c1.id,
      5. c1.name,
      6. c2.name
      7. FROM
      8. city c1,
      9. country c2
      10. WHERE
      11. c1.cid=c2.id;
    • 查询视图
      1. -- 查询视图
      2. SELECT * FROM city_country;
    • 视图的修改和删除

    • 语法

    • 修改视图数据语法
    • update 视图名称 set 列名=值 where 条件;
    • 修改视图结构语法
    • alter view 视图名称 (列名列表) as 查询语句;
    • 删除视图语法
    • drop view [if exists] 视图名称;
    • 实例操作

      1. -- 修改视图数据,将北京改为深圳 (注意:修改视图数据后,源表中的数据也会随之修改)
      2. UPDATE city_country SET city_name='深圳' WHERE city_name='北京';
      3. -- 修改视图结构,将视图中的country_name修改为name
      4. ALTER VIEW city_country (city_id,city_name,name) as
      5. SELECT
      6. c1.id,
      7. c1.name,
      8. c2.name
      9. FROM
      10. city c1,
      11. country c2
      12. WHERE
      13. c1.cid=c2.id;
      1. -- 删除city_country视图
      2. DROP VIEW IF EXISTS city_country;
  • 相关阅读:
    Kotlin 开发Android app(十四):startActivity跳转Activity活动
    关联路网拓扑特性的车辆出行行为画像分析
    SpringCloud Gateway--Predicate/断言(详细介绍)下
    学习笔记31-自回归-建立时间序列预测模型(ARIMA方法)
    匿名类为什么不可以使用非final变量
    网商银行有什么用
    FastDFS 安装
    [AUTOSAR][诊断管理][$10] 会话模式控制
    Security的内容
    OA项目之我的审批(查询&会议签字)
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/125631625