zoukankan      html  css  js  c++  java
  • MySQL数据库创建视图

    视图可以说是一种虚拟表,建立在基本表的基础上,通过关联一个表或者多个表来获取多个表中需要的字段,视图只是用来查询数据并不能用来存储数据信息。

    我有以下几张表:

    -------image表----

    ----org表------

    -----user表-----

    ----album表----

    我要将以上四张表关联,可以用sql的join连接语句,但是会很麻烦,现在在mysql中创建一个视图会很方便的解决这四个表连接的问题。sql语句如下:

    CREATE
     VIEW v_image_org_user_album AS--创建视图并命名v_image_org_user_album
        SELECT --先开from中表的命名
            a.id AS imgid,--将a表中的id命名为新的表(视图)中的imgid字段,剩下的都一样,就是将之前的字段重新命名到新视图表中的字段
            a.comment AS comment,
            a.createtime AS createtime,
            a.path AS path,
            b.name AS authorname,
            b.orgcode AS userorgcode,
            c.name AS orgname,
            e.name AS album
        FROM
          t_image a,--image表命名为a
          t_user b,--user表命名为b
          t_organization c,--organzation表命名为c
          t_album_image d,--album_image表命名为d
          t_album e--album表命名为e
        WHERE
            a.useracc = b.account
                AND b.orgcode = c.orgcode
                AND a.id = d.imageid
                AND d.albumid = e.id

    在数据库中的的编译器中执行该段sql语句,生成以v_image_org_user_album命名的视图表,并且会自动匹配到数据库中存储的数据

    然后在项目中创建相应的域类(grails项目),字段就是视图表中新命名的字段,就可以直接按照新字段进行sql语句的增删改查操作,但是,项目移植时视图要重新生成。这样就将多个表进行关联了,可以直接使用视图表中的字段。

  • 相关阅读:
    一句话说明分布式与集群的区别以及什么是分布式集群
    docker Unhandled exception: Filesharing has been cancelled
    sqlserver查询数据的所有表名和行数
    docker push失败:denied: requested access to the resource is denied
    windows docker 共享文件权限设置
    ubuntu 16.4 docker 镜像加速
    fastreport 旋转 竖排
    基于Huggingface使用BERT进行文本分类的fine-tuning
    基于Embedding深度学习算法综述
    机器学习基础知识
  • 原文地址:https://www.cnblogs.com/stu-wrl/p/5886880.html
Copyright © 2011-2022 走看看