当前位置:网站首页>视图(view)

视图(view)

2022-07-06 15:32:00 汤键.TJ

  • 目录

    介绍

    作用:

    例子:

    视图的创建和查询

    数据准备

    实例操作

    视图的修改和删除

    语法

    实例操作


  • 介绍

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

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

  • 分别有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语句若会经常使用到,反复编写就比较麻烦
  • 可以把这个语句查询出来的结果保存到另一数据表里
  • 有了这张数据表后,后期再有这个查询的需求,就可以查询这个数据表即可
  • 视图的作用就凸显出来了
  • 视图的创建和查询

  • 数据准备

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

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

  • 语法

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

  • -- 修改视图数据,将北京改为深圳 (注意:修改视图数据后,源表中的数据也会随之修改)
    UPDATE city_country SET city_name='深圳' WHERE city_name='北京';
    
    -- 修改视图结构,将视图中的country_name修改为name
    ALTER VIEW city_country (city_id,city_name,name) as
    SELECT
       c1.id,
    	 c1.name,
    	 c2.name
    FROM
       city c1,
    	 country c2
    WHERE
       c1.cid=c2.id;
  • -- 删除city_country视图
    DROP VIEW IF EXISTS city_country;
原网站

版权声明
本文为[汤键.TJ]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_59624686/article/details/125631625