精华内容
下载资源
问答
  • 2021-11-05 20:21:47

    视图

    视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。只保存SQL逻辑,不保存查询结果 。一般用于会在多个地方用到同样的查询结果,或者该查询结果使用的SQL语句较复杂。

    创建视图

    #方式一:
    CREATE VIEW 视图名 AS 查询语句;
    
    #方式二:这个视图没有就创建,有就修改
    CREATE OR REPLACE VIEW 视图名
    AS
    查询语句;
    

    示例一:

    -- 创建视图实例1:将学⽣表中性别为男的学⽣⽣成⼀个视图
    create view view_test1
    AS
    select * from students where stu_gender='男';
    -- 查询视图
    select * from view_test1;
    

    示例二:

    -- 创建视图实例1:将学⽣表中性别为男的学⽣⽣成⼀个视图
    create view view_test1
    AS
    select * from students where stu_gender='男';
    -- 查询视图
    select * from view_test1;
    

    修改视图

    #方式一:这个视图没有就创建,有就修改
    CREATE OR REPLACE VIEW 视图名
    AS
    查询语句;
    
    #方式二:
    ALTER VIEW 视图名
    查询语句; 
    

    删除视图

    #可以连续删除多个视图
    DROP VIEW 视图名1,视图名...;
    

    查看视图

    #查看视图的结构
    DESC 视图名;
    #查看创建视图的逻辑
    SHOW CREATE VIEW 视图名;
    

    视图更新

    视图的增删改与表的语法一致;
    具有一下任一特点的视图不允许更新:

    1. 创建视图的SQL语句中包含一下关键字:分组函数,DISTINEC,GROUP BY,HAVING,UNION ,UNION ALL;
    2. 创建视图的查询结果是连接查询的结果;
    3. FROM后是一个不可更新的视图;
    4. 常量视图;
    5. SELETE语句中包含子查询;
    6. WHERE 子句中的子查询引用了FROM后的表;

    视图特性:

    查询操作:如果在数据表中添加了新的数据,⽽且这个数据满⾜创建视图时查询语句的条
    件,通过查询视图也可以查询出新增的数据;当删除原表中满⾜查询条件的数据时,也会从视图中删除。
    新增数据:如果在视图中添加数据,数据会被添加到原数据表。
    删除数据:如果从视图删除数据,数据也将从原表中删除。
    修改操作:如果修改视图数据,也会修改原数据表中的数据。

    视图的使⽤建议 : 对复杂查询简化操作,并且不会对数据进⾏修改的情况下可以使⽤视图。

    更多相关内容
  • 支持oracle或mysql,输入数据库的连接信息及表名或视图名,自动根据视图创建实体类,非常好用的一个小程序,大大节省时间~
  • 数据库视图

    千次阅读 2022-04-14 17:16:02
    一、什么是视图 百度百科的解释是: 视图是一个虚拟,视图并不在数据库中存储数据值,数据库中只...在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。视图可以使用户操作方便

    目录

    一、什么是视图

    二、如何创建视图

    1.创建视图

    2.语法解析

    三、如何使用视图

    1.视图查询操作

    2.视图新增操作

    3.视图删除操作

    4.视图修改操作 

    四、如何修改视图

    五、如何删除视图

    六、如何查看视图


    一、什么是视图

    百度百科的解释是:

    视图是一个虚拟表,视图并不在数据库中存储数据值,数据库中只在数据字典中存储对视图的定义。

    这显然是不能让我们满意的。

    数据库中的视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据,行和列数据来自定义视图查询所引用的表,并且在引用视图时动态生成。视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。视图可以使用户操作方便,而且可以保障数据库系统的安全。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化。同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

    视图是一个”虚表”,用大白话说,就是从已经存在的表的全部字段或数据中,挑选出来一部分字段或数据,组成另一张”并不存在的表”,这张虚表被称之”视图”。视图中的字段与对应的数据均来自已经存在的表。对于视图来说,这些已经存在的表就被称为”基表”。基表可以是一张表,也可以是多张表。视图的本质可以理解为一条查询语句,视图中显示的结果,就是这条查询语句查询出的结果。

    上面这一段话来自另外的一个博主的文章,在下面给出了引用链接。他的最后一句话说是一条查询语句,其实是不妥当的,应该是增删改查的语句。

    这篇文章中有一段话说得很好:

    不使用视图的理由:

    mysql对于视图的优化并不完善,这样说并不准确,准确的说,应该是mysql对于子查询的优化不是很好,而使用视图本身往往就意味着使用子查询,所以,如果我们必须使用视图时,最好将视图中的sql语句尽量优化,或者说,数据量大的时候尽量避免使用视图。

    事实确实如此。在写本文之前,我这么多年工作中从未使用过视图,以至于都忘记视图是怎么创建使用的了。在银行的开发中,我所涉及的项目从未有使用过视图,因为在一般情况下,基本的SQL就可以满足了,为什么要使用视图呢?你说呢?我所了解的,在上海的这些银行中,比如,交行卡中心、交总行、交银金科、建行、建信金科、建信人寿,我是没有见到过视图的,而且也从未听说过哪一位同事使用了视图。除此之外,其他如中行、上海银行、浦发银行,我的了解也没有听在里面的同事朋友使用过。 

    好了,我们总结一下吧!

    1、视图是一个虚拟表(逻辑表);

    2、视图中的行和列的数据来自一到多张物理表,也可以来源自其他视图;

    3、可以通过视图进行增删改查;

    4、如果通过视图进行增删改,那么物理表的数据也会随之做出同样的增删改;反之亦然。

    5、视图的使用比较少,起码相对于一般SQL来说,不在一个数量级上;

    6、视图是一种”虚表”,所以不能与已经存在的表重名。

    二、如何创建视图

    在创建视图之前,请先确定当前登录的数据库用户是否拥有创建视图的权限。

    select create_view_priv,select_priv from mysql.user where user='root' and host='localhost';

    查询结果中,create_view_priv的值为Y,表示当前用户拥有创建视图的权利。

    如果我们查询另外的用户: 

    select create_view_priv,select_priv from mysql.user where user='dake' and host='localhost';

     

    说明 dake 这个用户是不具备创建视图的权限的。

    下面我们说说如何创建视图。 

    1.创建视图

    CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
    
    AS
    
    SELECT查询
    
    [WITH READ ONLY CONSTRAINT]

    2.语法解析

    1. OR REPLACE:如果视图已经存在,则替换旧视图。

    2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。

    3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。

    4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

    接着,我们创建一个视图。

    首先,给出我的基表—STUDENT表的数据:

     然后,我们创建一个视图:

     CREATE VIEW VU_STUDENT AS SELECT * FROM STUDENT WHERE ID > 2;

     然后查看视图的情况,使用命令我们后续再讲。

    查看视图的数据:

    对比 STUDENT 这个基表,我们发现少了2行数据,这少的两行数据就是我们创建视图的时候的SQL中做了限制。

    下面我们再看看视图的原生语句。

     

    我把SQL贴出来:

    CREATE
    OR REPLACE
    VIEW `VU_STUDENT` AS select
        `STUDENT`.`ID` AS `ID`,
        `STUDENT`.`NAME` AS `NAME`,
        `STUDENT`.`GENDER` AS `GENDER`,
        `STUDENT`.`AGE` AS `AGE`,
        `STUDENT`.`CLASS_ID` AS `CLASS_ID`,
        `STUDENT`.`ADDRESS` AS `ADDRESS`
    from
        `STUDENT`
    where
        `STUDENT`.`ID` > 2

     我们看到,它自动增加了 OR REPLACE ,说明 Maria 创建视图时的默认设置。然后把 select * 自动变更为了需要查询的字段,这个是一般SQL的基本操作。

    这里说一下视图的命名。视图的命名最好也是比较规范的写法是加上一定的前缀,当然后缀也可以,这个按照项目要求或者项目统一规范即可。

    比如,我这里就是 VU_ 加上了表名,即 VU_STUDENT 。如果是两张表的话,可以是:

    VU_表1的名字_表2的名字

     这种方式,当然如果表名比较长,或者是多张表,你也可以使用这几张表的简写,或者根据你这个视图的业务逻辑来命名。

    示例视图命令解读

    上面我们创建的视图命令,可以分两部分来解读:

    1、CREATE VIEW VU_STUDENT AS

    2、SELECT * FROM STUDENT WHERE ID > 2;

    其中第一部分表示我们要创建一个视图,视图名为 VU_STUDENT,第二部分表示该视图的业务逻辑。两部分结合起来就是一个完整的视图了。

    上面我们创建的这个视图,得到的列名是和 STUDENT表是一样的,当然我们也可以自行定义列名。不过这个一般很少有人这么做,如果这么做是真的有点扯淡,闲得蛋疼了。不过事无绝对,如果你的视图要和另外的视图或表联合使用,而几张表中表示相同意义的字段名不一样,你使用的时候就有点麻烦。假设有表A和表B,两个表的某一个字段是一个意义,但是名字不一样。此时把你创建的这个视图(假设数据来源自表A)的这一列的列名,修改为和另一张表(表B)的这个列名相同,然后你的业务代码或SQL中对这个视图和表B的操作就方便很多了。

    这个给视图字段起别名的做法就像我们建表时类似。

    CREATE VIEW VU_STD (S_ID, S_NAME, S_GENDER, S_AGE, S_CLASS_ID, S_ADDRESS) AS SELECT * FROM STUDENT WHERE ID > 2;

    此时如果我们查看数据以及列名的话会发现:

     一目了然了吧!

    我们创建这个视图非常简单,其实是因为我们的SQL业务逻辑简单,也就是 示例视图命令解读

    2 中的SQL语句简单了。我们最开始说了,可以增删改查的,那么当然可以使用子查询、连接、分组等等SQL的操作,这个就看你自己的业务逻辑了骚年。

    三、如何使用视图

    1.视图查询操作

    在 二 中我们说了,视图就是一张虚标,你把他当做表即可。

    SELECT * FROM VU_STUDENT;

    我们上面说了,视图可以增删改查,那么增删改怎么使用呢?

    2.视图新增操作

    我们使用视图增加一条记录到 STUDENT 表中:

    CREATE VIEW VU_STD_DLT AS INSERT INTO STUDENT VALUES (14, '范冰冰', '01', 39, 5	, '上海浦东陆家嘴1124号');

     结果呢?

    报错了。是我们SQL有问题吗?

    我们执行SQL插入的逻辑:

    INSERT INTO STUDENT VALUES (14, '范冰冰', '01', 39, 5	, '上海浦东陆家嘴1124号');

    结果呢?

     insert 语句没问题啊!这是什么情况呢?是不是因为我们这个用户的原因呢?我们把登陆用户修改为root试试。

    再新增一条语句:

    CREATE VIEW VU_STD_DLT AS INSERT INTO STUDENT VALUES (15, '范蠡', '00', 50, 0	, '上海浦东陆家嘴1125号');

    结果:

     哈哈!错误是一样的。

    3.视图删除操作

    既然新增不行,那么我修改删除呢?我们先增加一条记录,然后执行删除:

    INSERT INTO STUDENT VALUES (15, '范蠡', '00', 50, 0	, '上海浦东陆家嘴1125号');

    视图删除:

    CREATE VIEW VU_STD_DLT AS DELETE FROM STUDENT WHERE ID = 15;

    删除报错:

    4.视图修改操作 

    那么修改呢?估计也一样。

    CREATE VIEW VU_STD_UPD AS UPDATE STUDENT SET ID = 16 WHERE ID = 15;

    结果:

     通过这几个操作我们得出了结论:

    1、视图的查询操作,可以直接在客户端使用,但是增删改却是不行的;

    2、视图和真实的物理表还是有一些区别的。

    四、如何修改视图

    ALTER VIEW VU_STUDENT AS SELECT * FROM STUDENT WHERE ID > 10; 

    然后查询视图的数据

    SELECT * FROM VU_STUDENT;

     其中第五行是我后面加上的。

    可以看到修改视图很简单。

    五、如何删除视图

    DROP VIEW VU_STUDENT;

     

     如果删除一个不存在的视图呢?

     报错了,那么我们可以使用下面的命令避免这种情况:

    DROP VIEW IF EXISTS VU_STUDENT;

     这样就不会报错了。

    六、如何查看视图

    查看视图的结构:

    DESC VU_STUDENT;

     查看某数据库中所有的视图:

    select * from information_schema.views where table_schema= 'study';

    本文参考:

    MariaDB 视图与触发器

    mysql/mariadb知识点总结 之 视图管理语句

    Oracle 视图详解(view)

    展开全文
  • 数据库 视图创建

    2022-04-24 15:54:41
    创建视图 create view 视图名 as查询 语句; 使用视图 ...select * from 视图名;...删除视图 ...drop view 视图名;...查看视图字段信息 ...desc 视图名;...查看视图创建语句 ...利用视图更新表中数据 up...

    创建视图

    create view 视图名 as查询 语句;

     

    使用视图

    select * from 视图名;

     

    删除视图

    drop view 视图名;

     

    查看视图字段信息

    desc 视图名;

     

    查看视图创建语句

    show create view 视图名\G;

     

    修改视图

    alter view  视图名 as 查询语句;

     

    创建或修改视图

    create or replace 视图名 as 查询语句

    利用视图更新表中数据

    update 视图名 set
    字段名1=值1,
    字段名2=值2,
    字段名3=值3
    where 条件;

     

     

    展开全文
  • java 访问数据库视图

    2021-02-26 14:40:31
    首先创建视图,其实视图就是调用的操作,提取自己需要的数据放到视图下面,相对于java来说,可以视图看成是特殊的对待,这里说的特殊指的是 通过hql语句调用访问数据库的时候涉及到关联的问题. 创建视图如下: ...

    工作多年调用视图到多次,自己写代码使用视图还是头一回,也觉得新鲜,那就开始呗, 数据库系统是Oracle

    1 我用的数据库连接客户端是Navicat ,首先创建视图,其实视图就是调用表的操作,提取自己需要的数据放到视图下面,相对于java来说,可以把视图看成是特殊的表对待,这里说的特殊指的是 通过hql语句调用访问数据库的时候涉及到关联表的问题.  创建视图如下:

    1354173188_8727.png

    然后通过myeclipse的 hiberange reverse engineering 生成pojo和hbm.xml文件. 生成后发现生成了两个pojo和一个hbm.xml文件,如下:

    1354176115_1320.png

    然后在代码中使用的时候部分代码如下:

    if (idNumberStr.equals("")){

    StringBuffer wherePart = new StringBuffer();

    List parmaters = new ArrayList();

    wherePart.append(" id.hrid = ? ");

    parmaters.add(uniquedId);

    wherePart.append(" and id.datetime >=? ");

    parmaters.add(_startDate);

    wherePart.append(" and id.datetime <=? ");

    parmaters.add(_endDate);

    cdaList = this.cdaDao.queryObjectsByWhere(

    VICdaSummary.class, wherePart.toString(), parmaters.toArray(),

    null, startRow, rowCount);

    为什么代码中要使用 id.hrid ,id.datetime  等等,而不是直接使用hrid,datetime呢,查的也是VICdaSummary这个视图啊, 原因是(hql语句的视图查询)使用的是联合主键查询,sql语句的视图查询不需要使用id.hrid等, 和查询表一样, 在 VICdaSummary.java 类中引用了 VICdaSummaryId.java类 ,且作为主键 ,参见下图:

    1354176543_9448.png

    在参加下图:

    1354176570_9879.png

    在视图中我们应该保证视图中的每个字段都不为空(null ) ,因此我做了如下处理:

    1354176702_4506.png

    将可能为空的字段赋值为 empty ,字符串类型的 .

    下面附上sql语句的视图查询部分代码:

    1354177288_1434.png

    上图中并没有使用 id.HRID 是吧. ok 搞定.

    补充:视图的执行是在,java调用该视图的时候触发该视图执行设计视图的语句 ,然后从结果集中拿回java传递的语句所查询的内容. 让部分操作交给数据库系统执行,尤其在涉及到多表操作时候,及其有用.

    展开全文
  • 数据库视图 sql

    千次阅读 2021-01-28 08:08:21
    数据库必知词汇:数据库视图视图是从一个或几个基本(或视图)导出的虚拟的系统的数据字典仅存放了视图的定义,不存放视图对应的数据。视图与(有时为与视图区别,也称为基本——Base Table)不同,...
  • 建立信息系学生的视图: create view IS_Student as select Sno,Sname,Sage from Student where Sdept='IS'; 建立信息系学生的视图,并要求进行修改和插入...用的第二中创建视图,使用视图时向视图中插入数据报错
  • 查询数据库所有的有下面两个方法。 -- 查询数据库所有的 select * from all_tables; select * from all_tab_comments where table_type = 'TABLE'; owner 表述该所属的用户,如果需要查询指定用户所有的,...
  • 数据库 视图

    千次阅读 2019-08-01 15:01:17
    磁盘可以找到文件 用cat打开文件的话会是乱码,包含了实际的数据 而视图。本质上是sql语句(或者说和 指针 的概念有点像)。 我这里创建了一个视图 虽然我这里创建视图的语法是 create view view_...
  • 标题ORA-01219: 数据库未打开: 仅允许固定/视图中查询 cmd窗口通过sqlplus连接数据库 sqlplus / as sysdba 连接上数据库之后,输入以下命令打开数据库 SQL> alter database open; alter database open * ...
  • 数据库视图数据是否可以直接删除

    千次阅读 2021-03-25 09:47:36
    数据库视图数据是否可以直接删除 文章目录数据库视图数据是否可以直接删除一、视图是什么?二、视图数据删除1.多构成视图数据删除2.单视图数据删除总结 一、视图是什么? 视图(VIEW)也被称作虚,即虚拟的...
  • 数据库视图优缺点分析

    千次阅读 2021-01-28 00:24:21
    视图作用是什么所谓视图(View)其实是执行查询语句后得到的结果,但这个查询结果可以仿真成数据来使用,所以有人也称它为“虚拟数据”,视图在操作上和数据没有什么区别,但两者的差异是其本质是不同的:数据...
  • 我自己做网络课堂网站开发过程锁创建的数据库表视图结构查询太复杂时可以试着创建视图
  • 关系数据库中数据库通常包含多个数据数据库中的数据信息都是存储数据当中的。数据是对数据进行存储和操作的一种逻辑结构,对于用户而言,一个数据表示一个数据库对象。 3.1 创建数据—CREATE ...
  • ABAP如何建数据库视图和维护视图

    千次阅读 2020-07-04 16:43:26
    背景:做为一个二次开发人员创建视图,最主要为数据库视图和维护视图。数据库视图:主要用于查询数据。维护视图:主要用于修改的数据。 数据库视图过程如下 1.SE11下输入视图名字 2.点关系; 3:选中然后点...
  • 数据库视图创建及应用

    千次阅读 2021-08-07 14:10:25
    数据库视图创建及应用 ...视图一经定义,就可以和基本一样被查询、删除,也可以在一个视图上再定义新的视图,但对视图的更新(增、删、改)操作则有一定的限制。 二、视图的作用: 视图机制使用户
  • SQL Server 数据库视图

    千次阅读 2022-03-17 17:07:08
    MySQL 数据库视图 视图的增删查改操作介绍
  • 数据库中视图的作用

    万次阅读 多人点赞 2018-07-30 14:36:12
    所以基本中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。 二、视图的优点 既然视图的定义是基于基本的,哪为...
  • 什么是视图视图是一种虚拟的(逻辑),具有和...可以视图进行增,改,查,操作, 试图通常是有一个或者多个的行或列的子集。 对视图的修改不影响基本。 它使得我们获取数据更容易,相比多查询 ...
  • 数据库 视图基础概念

    万次阅读 2019-01-19 11:06:12
    数据库中视图的概念: 视图是从一个或是多个导出的视图...可以视图看做是移动的窗口,通过它可以看到自己感兴趣的数据,视图是从一个或是多个表中获得的,这些的数据存放在数据库中,那些用户产生...
  • MySQL数据库视图

    千次阅读 2021-02-02 14:05:02
    1. 修改、查询、删除记录时...可以根据他们的不同需求,物理的数据库上定义他们对数据库所要求的数据结构,这种根据用户观点所定义的数据结构就是视图视图(有时为与视图区别,也称为基本——Base Tabl...
  • 数据库视图详解

    万次阅读 多人点赞 2018-11-27 19:36:29
      视图(子查询):是从一个或多个导出的虚拟的,其内容由查询定义。具有普通的结构,但是不实现数据存储。单表视图一般用于查询和修改,会改变基本的数据;多表视图一般用于查询,不会改变基本的数据。...
  • 数据库中视图的基本语法与案例

    千次阅读 2022-03-13 20:56:07
    --1.1查询商品表中类别编号为1的商品的编号和商品的名称作为视图的内容 create view v_product as select ProductId,ProductName from Product where CategoryID=1 go --批处理的结束标识 --1.2查询视图的...
  • 联系: 1、视图(view)是基本之上建立的,它的结构(即所定义的列)和内容(即所有...4、只用物理空间而视图不占用物理空间,可以理解为计算机的文件。 视图只是逻辑概念的存在,没有实际的物理记录,是...
  • 定义一个视图时,只是把其定义存放在数据库中,并不直接存储视图对应的数据,视图中的数据是从基表中获取,这些数据视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中...
  • 数据库视图的总结

    千次阅读 2018-05-25 11:22:30
    视图的概念VIEW ( 视 图 ) 是 一 个 或 多 个 的 部 分 数 据 , 它 可 以 像 一 样 进 行 CRUD 操 作 , 但 没 有 具 体 的 存 储 数 据 结 构 , 它 以 一 个 SELECTiä 句 的 形 式 存 数 据 库 。...
  • 数据库视图的使用和原理

    万次阅读 多人点赞 2019-04-22 17:53:24
    视图的列来自于一个或多个,所以视图可以和表名重名。 数据多用作查询,一般不会通过视图去修改数据。 视图的作用 1.视图能简化用户的操作 我们可以为常用的sql语句创建一个视图,这样我们原来需要连多个,...
  • 数据库(mysql)视图的基本操作

    千次阅读 2022-05-02 12:01:08
    数据库中只存放视图的定义,而不存在视图对应的数据,这些数据仍然存储对应的基本中,当基本中的数据发生变换时,视图中查询的数据也随之变化,视图相当于一个窗口,透过它可以看到数据库中使用者感兴趣的数据...
  • 数据库视图是什么,和有什么区别和联系

    万次阅读 多人点赞 2019-01-21 17:42:19
    区别: 1、视图是已经编译好的sql语句,而不是。 2、视图没有实际的物理记录,而有。 3、是内容,视图是窗口。 4、只用物理空间而视图不占用物理...6、视图是查看数据的一种方法,可以查询数据表中某些字...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 540,949
精华内容 216,379
关键字:

在表的数据库视图中可以