zoukankan      html  css  js  c++  java
  • mysql视图

    当想由一张表的字段作为条件获取其他表对应的信息的时候。

    • 有外键就使用连表操作。
    • 没有外键就使用原生逻辑(先获取一张表对应的信息,然后将获取的信息当成一张表再进行筛选)。
    select * from (select nid from tb1 where nid > 2) as A

    但是当获取第一张表的信息的时候,结果是由很多操作结合而成的结果,如:可以有很多连表操作等。这样就会导致写很多重复的sql语句。

    而获取表1的结果也是动态查询处理的。并不是一成不变的。

    因此可以将这些公共的sql语句集合在一起,对其进行单独的命名。而这个名字就指代这个表,以后要想利用这个结果进行操作,直接用这名字即可。就不用再重复写sql语句。


    而这些sql语句形成的表,只是一个虚拟表,并不真实的表。这表就是 视图

    1、创建视图

    格式: create view 视图名称 as sql语句

    CREATE VIEW v1 AS 
    SELET nid, 
        name
    FROM
        A
    WHERE
        nid > 4


    navicat创建的结果:

    image

    说明:

    利用查询语句构建成的表,当原表数据进行变化的时候,创建视图的数据也会跟着变化。

    2、删除视图

    格式: drop view 视图名称

    DROP VIEW v1


    3、修改视图

    格式: ALTER VIEW 视图名称 AS SQL语句

    ALTER VIEW v1 AS
    SELET A.nid,
        B. NAME
    FROM
        A
    LEFT JOIN B ON A.id = B.nid
    LEFT JOIN C ON A.id = C.nid
    WHERE
        A.id > 2
    AND C.nid < 5


    4、使用视图

    使用视图时,将其当作表进行操作即可,由于视图是虚拟表,所以无法使用其对真实表进行创建、更新和删除操作,仅能做查询用。

    select * from v1

    说明:

    就是将结果当成一张单独的表来时使用,只是这张所谓的表,并非真实的表。

  • 相关阅读:
    mysql基本用法
    linux基本指令
    servlet的生命周期
    day 15 笔记
    day 14 作业
    考试二
    day 14
    day 12 zuoye
    day 13
    day 12
  • 原文地址:https://www.cnblogs.com/jayafs/p/7589186.html
Copyright © 2011-2022 走看看