【MySQL 保姆级教学】详细讲解视图--(15)

06-01 1333阅读

视图

  • 1. 为什么要有视图?
  • 2.视图的定义和特点
  • 3. 创建视图
  • 4. 视图的使用举例
    • 4.1 创建表并插入数据
    • 4.2 举例
    • 5. 视图和基表之间有什么联系呢?

      1. 为什么要有视图?

      当我们频繁地使用用多表查询和复合查询出的结果时,就需要频繁的使用多表查询和复合查询。

      能不能把多表查询和复合查询的结果呢储存起来呢?并且修改查询的内容时,对应表的内容也被修改呢?

      为了解决这一问题,我们就应该学习视图了

      2.视图的定义和特点

      MySQL的视图(View)是一种虚拟表,其内容由查询定义。从本质上讲,视图并不是以存储数据的形式存在的实体表,而是根据定义视图时所使用的查询语句动态生成的一组数据。这意味着,当你查询视图时,MySQL实际上执行的是该视图背后定义的SQL查询语句,返回的数据是基于这些查询语句从一个或多个实际表中提取出来的。(第6结还会细讲)

      视图的主要特点和优势包括:

      • 简化查询:视图可以将复杂的查询语句封装起来,使用户能够以更简单的方式查询数据,特别是当涉及到多个表的联接操作时。
      • 数据抽象:通过视图,可以隐藏表的真实结构,对外提供一个简化的数据接口,有助于保护数据库的实际设计。
      • 增强安全性:可以创建视图来限制用户对表中某些敏感数据的访问,例如,只允许用户查看某些特定的列或行。
      • 逻辑独立性:当底层表的结构发生变化时,通过调整视图的定义,可以保持应用程序不受影响,从而提高了系统的灵活性。

        3. 创建视图

        创建视图的语法如下:

        CREATE VIEW view_name [(column_list)]
        AS select_statement
        

        更新视图的语法:

        UPDATE view_name 
        SET ... [where...]
        
        • column_list:可选参数,用于显式指定视图列的名称。
        • select_statement:定义视图的SELECT查询语句。

          4. 视图的使用举例

          4.1 创建表并插入数据

          创建表:

          CREATE TABLE students (
              id INT AUTO_INCREMENT PRIMARY KEY,
              name VARCHAR(100) NOT NULL,
              age INT NOT NULL,
              major VARCHAR(100)
          );
          

          插入数据:

          INSERT INTO students (name, age, major) VALUES
          ('Alice', 20, 'Computer Science'),
          ('Bob', 21, 'Mathematics'),
          ('Charlie', 22, 'Physics');
          

          【MySQL 保姆级教学】详细讲解视图--(15)

          4.2 举例

          1. 创建视图,只需要students的name列和major列

            命令:

            create view myview as select name,major from students;
            

            【MySQL 保姆级教学】详细讲解视图--(15)

          2. 查询视图

            select * from myview;
            

            【MySQL 保姆级教学】详细讲解视图--(15)

          3. 修改视图中的数据后查询基表students的数据

            update myview set name='alice' where name ='Alice';
            select * from students;
            

            【MySQL 保姆级教学】详细讲解视图--(15)

            当修改视图中的数据时,基表的数据会改变。

          4. 修改基表students中的数据后查询的视图的数据

            update students set name='bob' where name ='Bob';
            select * from myview;
            

            【MySQL 保姆级教学】详细讲解视图--(15)

            当修改基表的数据时,视图的数据会改变。

          5. 视图和基表之间有什么联系呢?

          从本质上讲,视图并不是以存储数据的形式存在的实体表,而是根据定义视图时所使用的查询语句动态生成的一组数据。这意味着,当你查询视图时,MySQL实际上执行的是该视图背后定义的SQL查询语句,返回的数据是基于这些查询语句从一个或多个实际表中提取出来的。

          查询一下上面创建的视图myview在Linux中的的文件

          # 进入MySQL中的test数据库目录
          cd /var/lib/mysql/test
          # 显示数据库中的文件
          ls 
          

          【MySQL 保姆级教学】详细讲解视图--(15)

          视图文件中存储的是什么呢?

          打开myview文件,看一看什么:vim myview.frm

          【MySQL 保姆级教学】详细讲解视图--(15)

          这张图片显示了一个 MySQL 视图的详细信息,其中红色框内的内容是视图的定义查询语句。

          这段 SQL 代码表示一个名为 students 的表,从中选择了 name 和 major 这两个字段,并分别给它们起了别名 name 和 major。这个查询语句是创建视图时使用的原始 SQL 语句。

          使用视图查询本质上是执行定义视图时的语句。

          如:

          # 创建一个视图
          create view myview as select name, major from studnets;
          # 查询视图的内容
          select * from myview;  
          # 实际上是执行
          select * from
          select `test`.`students`.`name` AS `name`,`test`.`students`.`major` AS `major` from `test`.`students`
          # 其实就是执行
          select name, major from students; 
          

          【MySQL 保姆级教学】详细讲解视图--(15)

          如果对视图进行怎删改查,其实就是对基表进行增删改查(MySQL内部自己操作),视图只是一个查询的结果。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码