精华内容
下载资源
问答
  • 创建排序视图的企图本身就是错误的,因为视图表示一个表,而表是不会对行排序的。众所周知,在SQL Server 2000中追求排序视图的开发人员会利用貌似系统漏洞的一个技巧。 利用这个漏洞可以...

    很多地方都没解释清楚这个问题,有代表性的就是这个 博客 。

    论坛 上有人解释了,但是年代久远,我这里把它捞出来。答主是 这位 。内容如下:

    创建排序视图的企图本身就是错误的,因为视图表示一个表,而表是不会对行排序的。众所周知,在SQL Server 2000中追求排序视图的开发人员会利用貌似系统漏洞的一个技巧。

    利用这个漏洞可以创建一个非常可笑的视图,在该视图中,指定TOP 100 PERCENT以及一个ORDER BY子句,就像这样:

    ALTER VIEW dbo.VcustsWithOrders

    AS

    SELECT TOP (100) PERCENT

    Country, CustomerID, CompanyName, ContactName, ContactTitle,

    Address, City, Region, PostalCode, Phone, Fax

    FROM Customers AS C

    WHERE EXISTS

    (SELECT * FROM dbo.Orders AS O

    WHERE O.CustomerID = C.CustomerID)

    ORDER BY Country;

    GO

    这些语句最终的执行结果有两列 country ,怎么排序呢?会引起混乱。视图不允许排序的根源就是在后续处理中会引起混乱,不能用 distinct 应该也一样。总之,把视图当成基本表来约束就很安全。

    还有一个例子是从 StackExchange (链接)来的:

    If a view was allowed to be sorted then what should be the order of the result here?

    CREATE VIEW dbo.V1
    AS
    SELECT number
    FROM SomeTable
    ORDER BY number ASC

    GO

    CREATE VIEW dbo.V2
    AS
    SELECT number
    FROM SomeTable
    ORDER BY number DESC

    GO

    SELECT *
    FROM dbo.V1
    JOIN dbo.V2
    ON V1.number = V2.number
    ————————————————
    版权声明:本文为CSDN博主「0XIX0」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ddzr972435946/article/details/102814602

    展开全文
  • SQL语句创建视图什么不能order by

    千次阅读 2019-10-30 10:46:10
    很多地方都没解释清楚这个问题,代表性的就是这个博客。 论坛上人解释了,但是年代久远,我这里把它捞出来。答主是这位。...利用这个漏洞可以创建一个非常可笑的视图,在该视图中,指定TOP100PERC...

    很多地方都没解释清楚这个问题,有代表性的就是这个 博客 。

    论坛 上有人解释了,但是年代久远,我这里把它捞出来。答主是 这位 。内容如下:

    创建排序视图的企图本身就是错误的,因为视图表示一个表,而表是不会对行排序的。众所周知,在SQL Server 2000中追求排序视图的开发人员会利用貌似系统漏洞的一个技巧。

    利用这个漏洞可以创建一个非常可笑的视图,在该视图中,指定TOP 100 PERCENT以及一个ORDER BY子句,就像这样:

    ALTER VIEW dbo.VcustsWithOrders

    AS

    SELECT TOP (100) PERCENT

    Country, CustomerID, CompanyName, ContactName, ContactTitle,

    Address, City, Region, PostalCode, Phone, Fax

    FROM Customers AS C

    WHERE EXISTS

    (SELECT * FROM dbo.Orders AS O

       WHERE O.CustomerID = C.CustomerID)

    ORDER BY Country;

    GO

    这些语句最终的执行结果有两列 country ,怎么排序呢?会引起混乱。视图不允许排序的根源就是在后续处理中会引起混乱,不能用 distinct 应该也一样。总之,把视图当成基本表来约束就很安全。

    还有一个例子是从 StackExchange (链接)来的:

    If a view was allowed to be sorted then what should be the order of the result here?

    CREATE VIEW dbo.V1
    AS
      SELECT number
      FROM   SomeTable
      ORDER  BY number ASC
    
    GO
    
    CREATE VIEW dbo.V2
    AS
      SELECT number
      FROM   SomeTable
      ORDER  BY number DESC
    
    GO
    
    SELECT *
    FROM   dbo.V1
           JOIN dbo.V2
             ON V1.number = V2.number 
    展开全文
  • 看到这里,或许你已经对MySQL 的基本操作了如指掌,这篇文章讲解MySQL高级功能中 视图的概念及其用法。什么是视图 ( view ) ?视图,即虚拟表,通过底层...如何创建视图 ?把经常查询的结果集放到虚拟表中,提升使...

    看到这里,或许你已经对MySQL 的基本操作了如指掌,这篇文章讲解MySQL高级功能中 视图的概念及其用法。

    什么是视图 ( view ) ?

    视图,即虚拟表,通过底层接口封装的 SQL 语句查询到的内容作为虚拟表中的数据,因此视图中的记录来自数据表,它本身不存储数据。

    视图可以连接一个或多个数据表的部分字段,也可以针对不同的用户创建不同的查询视图。

    如何创建视图 ?

    把经常查询的结果集放到虚拟表中,提升使用效率

    CREATE VIEW 视图名 AS

    SELECT 字段1,字段2 FROM 表 where 条件 ;

    #当视图创建之后,它就相当于一个虚拟表,可以直接使用:

    SELECT * FROM 视图名;

    嵌套视图创建好一张视图之后,还可以在它的基础上继续创建视图

    修改视图

    #在创建视图时加上 or replace ,即视图存在则替换,否则创建

    CREATE or replace VIEW 视图名 AS

    SELECT 字段1,字段2 FROM 表 where 条件 ;

    删除视图

    DROP VIEW 视图名;

    用视图对数据格式化

    #经常需要输出某个格式的内容

    CREATE VIEW 视图名 AS

    SELECT CONCAT(字段1, '(' , 字段2, ')') AS 别名

    FROM 表1 JOIN 表2 on 条件;

    #查询视图

    SELECT * FROM 视图名;

    #结果: 字段1(字段2)

    视图的优点

    安全性:虚拟表是基于底层数据表的,我们在使用视图时,一般不会轻易通过视图对底层数据进行修改

    简单清晰:视图是对 SQL 查询的封装,它可以将原本复杂的 SQL 查询简化,这样就好比我们在进行模块化编程一样,不仅结构清晰,还提升了代码的复用率。

    视图和临时表的区别?

    在实际工作中,我们可能会见到各种临时数据。比如说网页中存储用户登录信息的cookie等, 这里就需要用到临时表了,临时表是真实存在的数据表,不过它不用于长期存放数据,只为当前连接存在,关闭连接后,临时表就会自动释放。

    另外,我们也需要了解到视图是虚拟表,本身不存储数据,如果想要通过视图对底层数据表的数据进行修改也会受到很多限制,通常我们是把视图用于查询。

    最后邀你进群一起学习

    关注公众号 技能锦囊

    后台回复 SQL

    by~

    展开全文
  • 视图就是将复杂的查询语句简单化,创建语句为:create view ... as select视图可以基于一个表创建,也可以基于多张表创建视图基于某数据表创建,那么该表就被称为基表(base table),视图并不存储具体数据,创建...

    视图就是将复杂的查询语句简单化,创建语句为:create view ... as select

    视图可以基于一个表创建,也可以基于多张表创建。视图基于某数据表创建,那么该表就被称为基表(base table),视图并不存储具体数据,创建完成之后,可以将视图当作普通数据表使用,可以执行:

    select ... from view _name

    视图并不存储数据,其下所有的数据都在基表中,可以将视图看作某些复杂查询的快捷方式,对于视图进行数据修改,结果会直接作用到对应的基表中。

    视图创建完成之后,可以通过create or replace view view_name as select语句进行修改。

    视图的创建最简单的就是将select结果放到临时表中:

    CREATE TEMPORERY TABLE tmp_table AS SELECT * FROM Country WHERE NAME = ‘Australia’;

    上述语句,我们创建了一张临时表,返回查询该表:

    SELECT NAME,Code from tmp_table WHERE CONTINENT=‘Oceaina’;

    这个sql查询会有明显的性能问题,优化器很难在临时表中对上面的sql进行优化,解决方法就是重写sql,将我们创建视图的查询语句包含在sql中:

    SELECT NAME,Code FROM tmp_table WHERE NAME=‘Australia’ AND CONTINENT = ‘Oceaina’;

    创建视图有两种算法,上面例子就是其中一种,临时表法,还有一种就是合并法。通过EXPLAIN SELECT 可以看到视图是基于哪种算法创建的,select_type为“DERIVED”则表示视图是采用临时表算法实现的。

    两种算法的具体实现如下图:

    展开全文
  • 视图在数据库中是一个虚拟表,数据来自于数据表,且执行时才会生成。视图相当于我们提前编写好的查询,在需要使用的时候才...一、视图创建create view 视图名as查询语句;二、视图的修改①、create or replace vie...
  • 第一点: 使用视图,可以定制用户数据,聚焦特定的数据。...任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视 图,以后他在查询数据时,只需select*fromview_caigou就可以啦。 第二点:使用视图,可...
  • 一、视图什么是视图?视图是通过存放SQL查询语句,使其被使用时能够创建出一张临时表。视图创建临时表,不储存数据,只储存SQL语句。如何创建视图?...视图有什么用?对于重复使用的SQL语句,可...
  • 这两天在学习 MySQL 窗口函数,看到一篇国外文章 How Window Functions Work ,动图的方式讲解窗口函数,帮助我更好地理解了,现分享给大家。下面我只是简单地翻译了一下,并对内容做了些许删减,如错误,请大家...
  • 视图什么用视图的好处?

    万次阅读 多人点赞 2015-06-10 13:34:28
    一开始总觉得视图听起来名字高大上,像我这种屌丝一看就头疼,然后现在了一些视图,感觉也不过如此吧!一般项目而言,会各种各样的表,但时候你需要的一些数据不只在一张上面,这时候你就会很蛋疼,当你接触...
  • 查询王五的所有订单的情况,王五本身要从用户表user进行查找,王五很多订单要订单表中进行查找,每个订单中很多商品要从订单详情中进行查找,订单中的商品是什么样子的要从商品表中进行查找,要使用到4张表,...
  • 视图:经常使用的多个表的联合查询,可以创建视图放在数据库中,以备下次查询数据库时使用,尽量少; 存储过程:为防止恶意注入,对数据库的操作,都使用存储过程; 事务:在存储过程中,如果对两个以上表...
  • SQL Server创建视图

    2014-11-13 08:32:00
    什么视图 大家都知道,我们国家现在“神七”上天了。从美国的月球登月开始,人类上天不再是神话。听说,在美国,你只要出几十万美元,您就可以上一次月球进行太空旅行,所以,我们相信:在不久的将来,上天旅行...
  • )的时候,会看到当前所有的视图,为了方便我们区分表和视图的区别,建议在视图命名时头部添加v_创建视图创建语法 :create view 视图名称 as select语句;注意:和普通表相同的是视图中的表头也不能出现重复字段!...
  • SQL Server 创建视图

    2013-06-21 10:40:28
    什么视图  大家都知道,我们国家现在“神七”上天了。从美国的月球登月开始,人类上天不再是神话。听说,在美国,你只要出几十万美元,您就可以上一次月球进行太空旅行,所以,我们相信:在不久的将来,上天旅行...
  • 11g中imp不能创建视图

    千次阅读 2011-04-21 15:12:00
    检查用户是否有创建视图的权限  2.检查创建视图的语句,看创建视图用到的表当前用户能否访问。   检查结果如下:  1.用户DBA权限,有创建视图的权限。(人家已经说了只有部分视图不能创建...
  • MySQL高级操作视图事务索引 视图 视图我们可以粗略的理解为将查询后的内容保存成一个变量。调用这个变量我们就能获得查询...创建语法 :create view 视图名称 as select语句; 注意:与直接连接两表不同 事务 索引 ...
  • 超级表格的高级使用者都在用视图做些什么?小编来一 一为您揭晓。双11我们不做促销活动,只告诉你金钱可能也买不来的制表经验。我们的每一张表格都是由行与列构成,所有的行与所有的列构成了全部数据。用户可以对行...
  • 视图有什么用①SQL查询语句若频繁使用,那么可以创建视图以便重复使用②保证数据的最新状态③节省存放数据的空间3.注意事项①避免在视图基础上再去创建视图(多重视图会降低视图的使用效率)②...
  • 为何要创建视图? 顺序咋样? 效果咋样? 要创建几次? 怎样创建? 在创建第一个初始化程序的时候,在DRAW函数中我们会 清除后台缓冲区和深度缓冲区 指定将要渲染的缓冲区 交换后台缓冲区和前台缓冲区。 这些缓冲...
  • 视图

    2019-10-03 01:27:28
    视图 view 在查询时,我们经常 如何创建试图,建视图的时候,不需要指定视图的列名和列类型,视图就是一种关系,可以说视图是...视图有什么用呢 1,可以简化我们的查询 比如,进行复杂的统计时,先用视图生成一...
  • 类似表但是不是表类似表: 视图有表结构不是表: 没有数据, 视图的数据来源都是基表视图根据基表的数量分为两种单表视图: 基表只有一个多表视图: 基表至少两个以上执行了视图的创建语句之后: 到底发生了什么?...
  • 以往当我们查询数据时,一定要很认真的地从设计select语句...直接select * from 视图名就行了,其实将查询语句创建视图,不仅仅是简化查询的动作;更重要的是,视图具备数据表的特性,还可以衍生出更多的应用...
  • MySQL的视图

    2019-08-23 12:40:46
    MySQL的视图 视图是什么 视图与实体表的区别 为什么使用视图 ...视图在MySQL关闭后被清楚,下一次打开MySQL时自动执行SQL语句创建视图什么使用视图 视图有以下作用 简单性 安全性 逻辑数据独立性 ...
  • mysql 视图

    2020-11-23 21:57:48
    视图是干什么用的? 通过视图,可以展现基表的部分数据; 视图数据来自定义视图的查询中使用的表,使用视图动态生成。 基表:用来创建视图的表叫做基表 为什么要使用视图? 简单:使用视图的用户完全不需要关心后面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 512
精华内容 204
关键字:

创建视图有什么用