精华内容
下载资源
问答
  • 什么视图视图是一系列的查询语句,使用时被执行,用来从其他的数据集或视图中获取想要的子集(subset)或者超集(superset)。 The view contains only the logicfor accessing the data, not the data itself ...

    什么是视图?

    视图是一系列的查询语句,在使用时被执行,用来从其他的数据集或视图中获取想要的子集(subset)或者超集(superset)。

    The view contains only the logic for accessing the data, not the data itself

    视图能用在哪些地方?

    几乎在sas程序中任何真实表用的地方(不能用的地方暂未列出)。

    使用视图的好处?

    1:节约空间,视图往往比真实表要小很多。

    2:防止用户经常进行表查询而忽略默写列,视图写好后每次调用就行,而inline-view需每次重写

    3:保证数据集能进行实时更新。

    4:掩盖其他表中的不想展现的列

    5:对用户掩盖复杂的连接或查询

     

    使用视图应该注意什么问题?

    1:查询子句中尽量避免order by,使用view的用户的目的可能不同,是否使用order by应由不同的用户决定

    2:避免创建基于容易变动的表的视图

    3:如果同样的data要用很多次,那么最好不要创建视图而是直接创建静态表。

     

     

    创建视图

     

    创建视图时,系统并不会执行select的语句,只会编译并将其储存在视图类型的文件中。

     

     描述视图

    如果建立的视图基于另一个视图上,那要用feedback选项才能描述出内容。

     

    管理视图

    如果view后面的视图指定了库名,那么from后的如果不指定库名则默认为在sasuser中。

    proc sql;
        create view sasuser.payrollv as
            select *
                from payrollmaster;    
    quit;

     

    更灵活点的方式,using clause

    libname airline 'SAS-library one';
    proc sql;
    create view sasuser.payrollv as
    select*
        from airline.payrollmaster
        using libname airline 'SAS-library two';
    quit;

    sql中的libname语句不会影响外面的,可以看成局部语句

     

     

    更新视图(语法和table一样)

    1:You can only update a single table through a view. The table can not be joined or linked to another table, nor can it contain a subquery.

    2:You can update a column using the column's alias, but you can not update a derived column

    3:You can update a view that contains a WHERE clause. The WHERE clause can be,specified in the UPDATE clause or in the view. You cannot update a view that contains any other clause such as an ORDER BY or a HAVING clause.

    4:You cannot update a summary view (a view that contains a GROUP BY clause). 

     

    删除视图

     

     

    转载于:https://www.cnblogs.com/yican/p/4104715.html

    展开全文
  • 存放的是实际数据,视图中存放的是SQL查询语句,不存放数据。使用视图时,会运行视图里的SQL查询语句,创建出一张临时表。当客户端和数据库的连接端掉后,临时表会被自动删除。2. 如何创建视图?CREATE VIEW 按...

    学习目标

    是什么?如何用?有什么用?注意事项

    1.视图;2.子查询;3.标量子查询;4.关联子查询;5.各种函数


    一. 视图

    1. 什么是视图?

    表中存放的是实际数据,视图中存放的是SQL查询语句,不存放数据。使用视图时,会运行视图里的SQL查询语句,创建出一张临时表。当客户端和数据库的连接端掉后,临时表会被自动删除。

    2. 如何创建视图?

    CREATE VIEW 按性别汇总(性别, 人数)
    AS
    SELECT 性别, COUNT(*)
    FROM student
    GROUP BY 性别;

    3. 如何使用视图?

    SELECT 性别, 人数
    FROM 视图名称

    4. 视图有什么用?

    1)表中内容更新,视图中会跟着更新,因为存放的是SQL查询语句。
    2)节省存放数据设备的空间。

    5. 注意事项

    1)避免在视图的基础上再次创建视图,因为多重视图会降低SQL的性能和效率。
    2)不能往视图插入数据。


    二. 子查询

    1. 什么是子查询?

    子查询就是一次性的视图。

    在FROM子句中直接写定义视图的SQL查询语句,在SELECT查询语句中嵌套了另一个SELECT查询语句。

    SELECT 性别, 人数
    FROM(
    SELECT 性别, COUNT(*) AS 人数
    FROM student
    GROUP BY 性别
    ) AS 按性别汇总;

    注:AS按性别汇总 是子查询的名称

    SQL运行顺序:先运行子查询,得到一个临时表。

    2. 如何使用子查询?

    子查询可以放在WHERE子句中,与IN(子查询), ANY(子查询), ALL(子查询)。

    1)IN(子查询)

    例:查询每个课程里成绩最低的学号。

    第一步:查询每个课程的最低成绩。

    SELECT 课程号, MIN(成绩)
    FROM score
    GROUP BY 课程号;

    3355a5474ffe869f2a56b4f4a17bff23.png

    不能直接添加学号在SELECT语句中,因为在分组过程中,每个组里只有课程号和最低成绩,没有学号。

    第二步:

    SELECT 学号, 成绩
    FROM score
    WHERE 成绩 IN(80,60,80);

    2cab64035efc5f7070219b2d2558987b.png

    最终:

    SELECT 学号, 成绩
    FROM score
    WHERE 成绩 IN(
    SELECT MIN(成绩)
    FROM score
    GROUP BY 课程号
    );

    2cab64035efc5f7070219b2d2558987b.png

    ----------------------------------我是华丽的分割线---------------------------------------

    上述的查询结果是错误的!!!

    SQL面试题: topN问题

    分组取每组最大值,最小值,每组最大的N条记录。

    例:查询每个课程里成绩最高的记录。

    SELECT *
    FROM score AS a
    WHERE 成绩 = (
    SELECT MAX(成绩)
    FROM score AS b
    WHERE b.课程号 = a.课程号
    );

    b28666f1a2357e8d0e794d5da2a8926c.png

    例:查询每个课程里成绩前两名的记录。

    1.每个课程按成绩降序排序并取前两名

    SELECT *
    FROM score 
    WHERE 课程号 = '0001'
    ORDER BY 成绩 DESC
    LIMIT 2

    2.综合所有组

    (SELECT *
    FROM score 
    WHERE 课程号 = '0001'
    ORDER BY 成绩 DESC
    LIMIT 2) UNION ALL
    (SELECT *
    FROM score 
    WHERE 课程号 = '0002'
    ORDER BY 成绩 DESC
    LIMIT 2) UNION ALL
    (SELECT *
    FROM score 
    WHERE 课程号 = '0003'
    ORDER BY 成绩 DESC
    LIMIT 2)

    ba5ab141eafc41d4e05fc8b7f683e72d.png

    ---------------------------------我是华丽的分割线----------------------------------------

    2)ANY(子查询)

    ANY(子查询)与SOME(子查询)相同。

    SELECT <列名1>
    FROM <表名1>
    WHERE <列名1> > ANY(子查询)

    问:哪些学生的成绩比课程0002的全部成绩里的任意一个高呢?

    1.查找出课程0002的全部成绩。

    SELECT 成绩
    FROM score
    WHERE 课程 = '0002';

    2.某个学生的成绩 大于 任意一个第一步里的成绩,就符合条件。

    SELECT 学号, 成绩
    FROM score
    WHERE 成绩 > ANY(
    SELECT 成绩
    FROM score
    WHERE 课程号 = '0002'
    );

    e17fb5eb87ce35b8a50f083d6f1d87e5.png

    3)ALL(子查询)

    问:哪些学生的成绩比课程0002的全部成绩里的都高呢?

    SELECT 学号,成绩
    FROM score
    WHERE 成绩 > ALL(
    SELECT 成绩
    FROM score
    WHERE 课程 = '0002'
    );

    5adb27020d107997af6e94b4756ecce1.png

    注意事项

    1. ALL得到的不是数字,而是一个n行的集合,所以不能做运算, e.g. 3*ALL() 是错误的。
    2. 避免使用多层嵌套子查询,不好维护且性能差。
    3. 子查询名称 AS 子查询名称 可以省略,但尽量不要省略。

    三. 标量子查询

    1. 什么是标量子查询?

    上一节的子查询返回多行结果,而标量子查询在子查询上做了特殊的限制,必须且只能返回一行一列的查询结果,返回的是单一的值,所以可以将其与比较运算符连用。

    2. 如何使用标量子查询?

    例:查询大于平均成绩的学生的学号和成绩。

    WHERE子句中不能使用汇总函数,SQL报错。

    SELECT 学号, 成绩
    FROM score
    WHERE 成绩 > AVG(成绩);

    这时可以使用标量子查询:

    SELECT 学号, 成绩
    FROM score
    WHERE 成绩 > (
    SELECT AVG(成绩)
    FROM score
    );

    e7e43179b389f746477cc048989abde8.png

    例:查询成绩介于差生 (<= 60)平均成绩和优等生(>= 80)平均成绩之间的学生记录。

    SELECT *
    FROM score
    WHERE 成绩 BETWEEN
    (SELECT AVG(成绩)
    FROM score
    WHERE 成绩 <= 60) AND 
    (SELECT AVG(成绩)
    FROM score
    WHERE 成绩 >= 80);

    f979e10fa896408796da3e5bd34c4d55.png

    3. 什么时候使用标量子查询?

    任何使用单一值的地方都可以使用标量子查询。

    注意事项

    该子查询不能返回多行结果。若返回多行结果,则不能用在比较运算中。


    四. 关联子查询

    1. 什么是关联子查询?

    关联子查询是在子查询里有了一个关联条件。

    例:查找出每个课程大于对应课程平均成绩的学生。

    关联条件:WHERE子句中按课程号对成绩表分组,同一组的数据和这一组的平均成绩比较,因为比较的都是同一张score表,所以分别取了别名s1,s2,在关联条件里通过使用表的别名去使用表里的列名(s1.课程号)。

    SELECT 学号, 课程号, 成绩
    FROM score AS s1
    WHERE 成绩 > (
    SELECT AVG(成绩)
    FROM score AS s2
    WHERE s1.课程号 = s2.课程号
    GROUP BY 课程号
    );

    先运行子查询,查找出每个课程的平均成绩。因为子查询中关联条件的存在,所以每次只返回与s1课程号同一组的平均成绩,返回一行结果。

    4a1daaf9d0ebde73a59272c35d701472.png

    2. 什么时候使用关联子查询?

    在每个组里进行比较的时候,使用关联子查询。


    五. 函数汇总

    b88fbed6b11fd603eaa9fff5d46a3d65.png

    23223e6eb6e3e7aad108226a00468013.png

    7f3e29719dab800d9a6979143ed4fbf5.png

    35950768b2502ef630b20c254420626c.png

    a6e6f662fc93b2cb94523f30089430a4.png
    展开全文
  • powerdesigner设计Oracle数据库并generator database成功,PLSQL Developer可以看到生成的表,但对这些表或者序列进行添加删除修改等操作时却提示“表或视图不存在",直接编辑也是同样的提示...困扰了我两天,找...

    在powerdesigner中设计Oracle数据库并generator database成功,用PLSQL Developer可以看到生成的表,但对这些表或者序列进行添加删除修改等操作时却提示“表或视图不存在",直接编辑也是同样的提示...困扰了我两天,找了很多资料才发现问题所在,原来是powerdesigner生成数据库的时候默认把所有的标识符都打了双引号,结果导致Oracle从不区分大小写,到区分这些标识符的大小写.

    解决方法:

    1.菜单: Database

    2.Edit Current DBMS

    3.在弹出的对话框中将 ORA11GR1::Script\Sql\Format\UpperCaseOnly 设为Yes

    4.在弹出的对话框中将 ORA11GR1::Script\Sql\Format\CaseSensitivityUsingQuote 设为No

    这样以后再生成数据库就不会出现上述问题了.

    展开全文
  • 什么使用视图 视图在数据库应用的比较频繁,主要基于以下几点:重用SQL语句。化复杂的SQL操作。编写查询后,可以方便地重用它而不必知道它的基本查询细节。表的组成部分而不是整个表。护数据。可以给用户...

    点击关注上方“SQL数据库开发”,

    设为“置顶或星标”,第一时间送达干货

    视图的定义

    视图是可视化的表。

    本章讲解如何创建、更新和删除视图。

    为什么使用视图 视图在数据库中应用的比较频繁,主要基于以下几点:

    • 重用SQL语句。

    • 化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。

    • 用表的组成部分而不是整个表。

    • 护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。

    • 改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。

    CREATE VIEW 语句

    在 SQL 中,视图是基于 SQL 语句的结果集的可视化表。

    视图包含行和列,就像真正的表一样。视图中的字段是一个或多个数据库中真实表中的字段。

    您可以添加 SQL 函数,在哪里添加,并将语句连接到视图,或者您可以呈现数据,就像数据来自单个表一样。

    CREATE VIEW 语法

    CREATE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition

    注释:视图总是显示最新数据!每当用户查询视图时,数据库引擎就使用视图的 SQL 语句重新构建数据。

    CREATE VIEW 实例

    我们以表Customers为例

    bbdfc06e11c4cd62d2e59ba80b66b71d.png

    "Customer_GD"(广东客户列表)视图从"Customers"表中列出了所有广东省的客户。这个视图使用下面的 SQL 创建:

    CREATE VIEW Customer_GD AS
    SELECT *
    FROM Customers
    WHERE 省份='广东省'

    我们可以像这样查询上面这个视图:

    SELECT * FROM Customer_GD

    查看一下视图中的结果:

    d255ffb9e3cd21e64f09cb54c712645f.png

    下面的我们以"Products"表为示例

    e635b1db221165fcb8253bb28bdfc5e8.png

    我们选取 "Products" 表中所有价格高于平均价格的产品:

    CREATE VIEW [Products_Above_Average_Price] AS
    SELECT 名称,价格
    FROM Products
    WHERE 价格>(SELECT AVG(价格) FROM Products)

    我们可以像这样查询上面这个视图:

    SELECT * FROM [Products_Above_Average_Price]

    结果如下:

    45ae075936de920706ebe437bed082b0.png

    我们也可以向视图添加条件。现在,我们仅仅需要查看 "大米" 类的价格:

    SELECT * FROM [Products_Above_Average_Price]
    WHERE 名称='大米'

    这样就只显示大米的价格了

    1814316f083488109dbecab5b8f0c017.png

    更新视图

    您可以使用下面的语法来更新视图:

    CREATE OR REPLACE VIEW 语法

    ALTER VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition

    现在,我们希望向 "Products_Above_Average_Price" 视图添加 "规格" 列。我们将通过下列 SQL 更新视图:

    ALTER  VIEW [Products_Above_Average_Price] AS
    SELECT 名称,价格,规格
    FROM Products
    WHERE 价格>(SELECT AVG(价格) FROM Products)

    我们重新查询该视图:

    SELECT * FROM [Products_Above_Average_Price]

    结果如下:

    ee6ca11f0439c9ff57b0a539b4a3ad30.png

    删除视图

    可以通过 DROP VIEW 命令来删除视图。

    DROP VIEW 语法

    DROP VIEW view_name

    例如我们要删除刚才新建的视图"Products_Above_Average_Price"

    DROP VIEW [Products_Above_Average_Price]

    重新查询视图后就会显示该视图无效

    4a1791df39be7af6a9784c4ccf84d8bf.png

    证明视图已经不存在了。

    视图的规则和限制
    视图的使用也有一些规则和限制,主要表现在:
    • 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)。
    • 对于可以创建的视图数目没有限制。
    • 为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予。
    • 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图。
    • ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖。
    • 视图不能索引,也不能有关联的触发器或默认值。
    • 视图可以和表一起使用。例如,编写一条联结表和视图的SELECT语句。
    我是岳哥,最后给大家分享我写的SQL两件套:《SQL基础知识第二版》《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行数据前线——End——

    后台回复关键字:1024,获取一份精心整理的技术干货后台回复关键字:进群,带你进入高手如云的交流群。推荐阅读

    我的电脑不联网,很安全,黑客:你还有风扇呢。。。

    CentOS 已死,“免费”的RHEL没了一套简单实用的SQL脚本,总有你需要的不懂就问:为什么SELECT * 会导致查询效率低?SQL 语法速成手册
    展开全文
  • 数据库,表存放的是实际数据,视图中存放的是sql查询语句,使用视图时,会运行视图里的sql查询语句创建出一张临时表。(客户端与数据库断开连接时,临时表会自动删除,并不是保存数据库,所以是临时表)...
  • 一、视图(一) 什么视图视图是基于SQL语句的结果集的可视化的表。...2、实例:(三) 视图删除(四) 视图使用:from子句,可以用视图名称代替表的名称。视图优点:随原表更新而更新,避免重复写SQL,...
  • (1)视图什么是视图数据库里存放了很多表,...如何使用视图创建视图:运用已定义好的视图:删除视图:视图有什么用如果要频繁使用某些SQL语句,使用视图可以避免每次都要重写SQL,特别是进行汇总以及复杂的查询条...
  • 视图视图中存放的是sql查询语句,使用视图时会运行sql语句,产生一张临时表,当客户端与数据库的链接断开之后,这个临时表就会自动删除如何创建视图?create view 视图名称(视图列名1,视图列名2,...) asselect ...
  • 什么在数据库有很多表,表存放的是实际数据,而视图中存放的是sql查询语句。使用视图时,视图会先运行里面的查询语句,从表查找数据保存到临时表里。当客户端与数据库断开连接时该表就会自动删除视图本身...
  • 带着图片4个问题可以让自己更好地理解所学知识点一...查询编辑器里输入SQL语句,即可出现查询结果,如下图:如果定义好的视图不想要了,如何删除呢?如下图所示:3,视图什么用?使用视图可以帮助提高效率(经...
  • (1)视图什么是视图数据库里存放了很多表,...如何使用视图创建视图:运用已定义好的视图:删除视图:视图有什么用如果要频繁使用某些SQL语句,使用视图可以避免每次都要重写SQL,特别是进行汇总以及复杂的查询条...
  • 一、视图(一) 什么视图视图是基于SQL语句的结果集的可视化的表。...2、实例:(三) 视图删除(四) 视图使用:from子句,可以用视图名称代替表的名称。视图优点:随原表更新而更新,避免重复写SQL,...
  • SQL21日自学通

    2014-12-19 14:55:27
    删除视图语句207 使用索引207 什么是索引207 使用索引的技巧212 对更多的字段进行索引212 创建索引时使用UNIQUE 关键字214 索引与归并216 群集簇的使用217 总结218 问与答219 校练场219 练习220 第11 天事务处理...
  • 5.5.3 修改视图的语句结构 5.5.4 重命名视图的名称 5.5.5 使用SQL语句修改视图 5.5.6 删除视图的语句结构 5.5.7 使用SQL语句删除视图 5.6 视图的应用 5.6.1 利用视图简化表的复杂连接 5.6.2 利用视图简化复杂查询 ...
  •  视图,其实是一个虚拟的表,是跑到内存中的表,但是中删除数据的时候,内存里面就没了这些数据。为什么要使用视图:使用视图我们可以把查询过程中临时表炸出来,保存下来,用视图去实现,这样以后再想操作该...
  • 带着图片4个问题可以让自己更好地理解所学知识点一...查询编辑器里输入SQL语句,即可出现查询结果,如下图:如果定义好的视图不想要了,如何删除呢?如下图所示:3,视图什么用?使用视图可以帮助提高效率(经...
  • 什么在数据库有很多表,表存放的是实际数据,而视图中存放的是sql查询语句。使用视图时,视图会先运行里面的查询语句,从表查找数据保存到临时表里。当客户端与数据库断开连接时该表就会自动删除视图本身...
  • 11.3 不要在SQL中使用BIT或BOOLEAN标记 179 11.3.1 标记位于错误的层 179 11.3.2 标记使用不当使正确属性难以理解 181 第12章 组特征 184 12.1 并不是按是否相等来分组 185 12.2 使用组,不看里面是什么 ...
  • 表里放的是实际数据,视图中存放的是SQL查询语句,当我们客户端(例如navicat)连接到数据库使用视图的时候,视图会运行视图里面的SQL查询语句从表里面查询出数据保存到一张临时表里面,为什么叫临时表呢?...
  • 全书共分为11章,首先第1章中详细介绍了sql server 2008的架构和配置,然后接下来的10个章节深入探讨了sql server 2008数据存储和查询处理等各个方面的内部机制,包括:数据库和数据库文件、表、索引、跟踪、...
  • 5.8.1 在SQL Server Management Studio中删除数据库 145 5.8.2 Drop database语句删除数据库 146 5.9 收缩数据库 146 5.9.1 自动收缩数据库 147 5.9.2 手动收缩数据库 147 5.9.3 手动收缩数据库文件 149 ...
  • 触发器是什么?做什么用的?怎么?

    千次阅读 2010-11-22 19:55:00
    触发器是什么?做什么用的?怎么? -------------------------------------------------------...它自动执行,它仅执行在SQL服务器上,不执行在DELPHI的应用程序 -------------------------------------
  • 7.1.6 删除视图 206 7.1.7 使用视图修改数据 206 7.2 视图加密 207 7.3 索引视图 208 7.3.1 创建索引视图 208 7.3.2 强制优化器为索引视图使用索引 210 7.4 分区视图 211 第8章 SQL Server函数 216 ...
  • 虚拟表(视图)VIEW ...4.删除视图:DROP VIEW 视图名; 注:(1)目标二维表就是Where山选出来的,目标二维表长什么样,视图就是什么样子。 (2)视图可以嵌套,层层嵌套 (3)部分DBMSVIEW里使用ORDER BY无
  • 达梦数据库_SQL语言手册.pdf 数据库快照定义语句 数据库快照删除语句 第章数据查询语句和全文检索语句 单表查询 简单查询 带条件查询 集函数 情况表达式 连接查询 子查询 标量子查询 表子查询 派生表子...
  • 全书共分为11章,首先第1章中详细介绍了sql server 2008的架构和配置,然后接下来的10个章节深入探讨了sql server 2008数据存储和查询处理等各个方面的内部机制,包括:数据库和数据库文件、表、索引、跟踪、...
  • 级联删除

    2009-02-26 23:41:00
    什么是级联删除 : 个人理解 在视图关系实现. 触发器代码也就是事件代码, 相当于cs的事件 1:删除一个表的时候,自动把其它表与该表被删除的记录相关的记录一起删除。一般可以用删除触发器实现。 删除包含...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

在sql中删除视图用什么