zoukankan      html  css  js  c++  java
  • 数据库视图的使用

    1.视图的概念

      从一个或多个表导出的虚拟的表,内容由具体的查询内容定义。

      从用户视角看,一个视图是从一个特定的角度来查看数据库中的数据;从数据库内部看,一个视图是由SELECT语句组成的查询定义的虚拟表。视图和普通表的结构相同,但不实现数据的存储,仅可以查,不能增删改。
      一般出于以下角度使用视图:
      a.简化操作:将常用的聚合函数或多表查询这些查询语句放到视图中,简化了操作,每次只要select * from view就可以了;
      b.安全性:只让用户查看部分数据,同时,用户无法对视图进行随意的修改和删除,增加了安全性。

    2.创建语法

       CREATE VIEW 'new_view' AS (select语句) ;

    3.常见视图场景

    1) 多表查询(同一个库下)

    如果日常工作经常会用到多表查询,可以针对该多表查询的select的语句,专门创建一个视图。例如,现有

      表student:id, Sname, Sage, Sheight, Saddresss

      表course:id, Cname

      表grade:id, S_id, C_id, score

    日常查询中,经常需要多表查询,以展示学生姓名、课程名称、成绩字段,可以创建如下视图:

      CREATE VIEW 'student_score' AS

        SELECT Sname, Cname, score FROM student

        JOIN grade on student.id = grade.S_id

        JOIN course on course.id = grade.C_id;

      以后每次使用,直接进入左侧的views中即可查看。

    2) 分表存储时的查询(同一个库下)

      如果开发过程中采用了分表存储,比如公司现有的项目为了提升性能,对订单order表采用了分表存储,通过雪花算法后随机存储在64个表之中的1个表中。为了方便平时的查询,可以新建一个视图。假设order表中有以下字段:

      id, order_no, driver_id,  status, created_at

      创建视图的语句如下:

      CREATE VIEW `order_view` AS 

      select * from order_1

      union all (select * from order_2)

      union all (select * from order_3)

    3) 跨库查询

      CREATE VIEW 数据库1.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);

    4) 跨服务器查询

      待补充。

    参考:https://www.cnblogs.com/sening/p/4526163.html

  • 相关阅读:
    MoodNotes产品分析及功能说明书
    C#探秘系列(十)WPF:打开文件选择器选择文件并保存
    C#探秘系列(九)WPF连接Mysql数据库
    C#探秘系列(八)WPF数据绑定
    C#探秘系列(七):XML文件操作(一)
    #安卓杂记(七):自定义控件及属性获取
    C#探秘系列(六)
    安卓问题报告小记(七)
    121. Best Time to Buy and Sell Stock
    566. Reshape the Matrix
  • 原文地址:https://www.cnblogs.com/May-study/p/12653352.html
Copyright © 2011-2022 走看看