5-1 视图

视图和表

视图和表的区别只有一个是否保存了实际的数据

使用INSERT和SELECT实际上就是从存储设备中读取数据,各种计算后,将数据呈现给用户。

视图不会将数据保存在存储设备中。实际上,视图保存的是SELECT语句视图会在内部执行该SELECT并创建出一张临时表。

视图的优点

  1. 无需保存数据,节省存储设备的容量。
  2. 可以将频繁使用的SELECT保存成视图,这样就不用每次都重新书写了。

创建视图

创建视图,要使用CREATE VIEW语句

语法:

CREATE VIEW 视图名称 (<视图列表1>,<视图列表2>,……)
AS
<SELECT语句>

注意:

  1. SELECT语句需要书写在AS关键字之后,
  2. SELECT语句中的列的排列顺序和视图中的列的排列顺序相同。

例:

CREATE VIEW myView (age, name)
AS
SELECT age, name
FROM STU
WHERE age>10;

这就完成一个视图的创建,创建成功,会有CREATE VIEW的字样。

之后就可以像用普通表一样去使用这个视图了。

使用视图的查询

实际有两个步骤:

  1. 执行定义视图的SELECT语句。
  2. 根据得到的结果,再执行在FROM子句中使用视图的SELECT语句。

多重的视图会降低效率,所以建议使用单重视图。

视图的限制:

  1. 定义视图时不能使用ORDER BY子句。

    因为视图和表一样,数据都是没有顺序的。
  2. 限制性对视图进行更新

    条件:

    • SELECT子句中未使用DISTINCT
    • FROM子句中只有一张表
    • 未使用GROUP BY 子句。
    • 未使用HAVING 子句

视图和表需要同时进行更新,因此通过聚合得到的视图无法进行更新

在视图中进行数据的更新, 在原表中,数据也会进行更新。

删除视图

语法:

DROP VIEW 视图名称

例如:

DROP VIEW myView

在PostgreSQL下,如果想删除已视图未寄出创建出来的多重视图,会由于存在关联视图,而发生错误。

可以使用DROP VIEW 视图名 CASCADE进行删除。

5-2 子查询

子查询和视图

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

例:

SELECT name ,age
FROM (SELECT name, age
FROM STU
WHERE age>10) AS temp;

有种类似嵌套SELECT的感觉。

子查询作为内层查询会首先执行。

增加子查询的层数

子查询的层数原则上没有上限。


标量子查询

标量子查询有一个特殊限制:

必须而且只能返回一行一列的数据

标量子查询就是返回单一值的子查询

使用实例:

当在WHERE时,需要使用类似平均值这种聚合函数,但是会发生错误。如果我们需要使用到标量子查询。

例如:

SELECT *
FROM STU
WHERE score > (SELECT AVG (score)
FROM STU);

使用范围:

任意可以使用单一值的


5-3 关联子查询

  • 关联子查询会在细分的组内进行比较时使用
  • 关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分。
  • 关联子查询的结合条件如果未给出在子查询之中就会发生错误。

使用情况:

对切分后的组进行子查询

SQL入门学习4-复杂查询的更多相关文章

  1. SQL入门学习2-聚合与排序

    3-1 对表进行聚合查询 聚合函数 所谓聚合,就是将多行汇总为一行. 函数名 功能 COUNT 计算表中的记录数(行数) SUM 计算表中数值列的数据合计值 AVG 计算表中数值列的数据平均值 MAX ...

  2. SQL入门学习1-查询基础

    2-1 SELECT语句基础 SELECT语句作用 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). 重点 使用SELECT语句从表中选取数据. 为列设定显示用的别名 ...

  3. SQL入门学习0-数据库与SQL

    1.1 DBMS DatabaseManagermentSystem 数据库管理系统 DBMS种类 层次型数据库(HDB) 最古老的数据库之一,把数据通过层次结构的方式表现. 关系型数据库(RDB) ...

  4. SQL Serever学习9——基础查询语句

    SQL语言概述 SQL是结构化查询语言(Structure Query Language),1974年提出,1979年被IBM实现,SQL语言已经成为关系型数据库的标准语言. 包括: DDL数据定义语 ...

  5. SQList3 and SQL入门学习笔记

    SQL 这是一个标准的计算机语言进行访问和操作数据库. 什么是 SQL? ·       SQL 指结构化查询语言 ·       SQL 使我们有能力訪问数据库 ·       SQL 是一种 AN ...

  6. SQL入门学习5-函数、为此、CASE表达式

    6-1. 各种各样的函数 函数的种类 算数函数 字符串函数 日期函数 转换函数 聚合函数 1.1算术函数 数据类型:NUMERIC 是大多数DBMS都支持的一种数据类型. 通过NUMBERIC(全体位 ...

  7. SQL入门学习3-数据更新

    4-1 数据的插入(INSERT语句的使用方法) 使用INSERT语句可以向表中插入数据(行).原则上,INSERT语句背刺执行一行数据插入. CREATE TABLE 和INSERT 语句,都可以设 ...

  8. Sql入门学习——关系范式

    --------关系 --------范式 一.三种关系 1.一对一关系 关系数据库中,第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关. 2.一 ...

  9. Sql入门学习——基本语法函数

    --------使用工具navicat 快捷键操作 --------基本操作DML &DDL --------运算比较 --------数据类型 --------常用函数 --------常用 ...

随机推荐

  1. codeforces293E (树上点分治+树状数组)

    和poj1747相比起来,只不过是限制条件多了一维. 而多了这一维,所以需要用树状数组来维护,从而快速得到答案. 因为没注意传进树状数组函数的参数可能是<=0的,导致超时了好久. #pragma ...

  2. 【翻译】Why JavaScript Is and Will Continue to Be the First Choice of Programmers

    花费2半小时,那么最终会被翻译.假设有问题,请提出,毕竟,自己的6不超过级别. 附加链接 Why JavaScript Is and Will Continue to Be the First Cho ...

  3. C++传递函数指针

    函数指针是一个很好的类型.因此,您可以编写一个函数,它的一个参数是一个函数指针.然后.在(外部)当函数使用的函数指针参数,来间接调用时调用相应的参数的函数的函数. 因为指针在不同的情况下能够指向不同的 ...

  4. 简介支持向量机热门(认识SVM三位置)

    支持向量机通俗导论(理解SVM的三层境地) 作者:July .致谢:pluskid.白石.JerryLead.出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vector ...

  5. Android 大约Dialog弹出窗口

    直接效果图: 实现步骤: 1.主界面activity_main.xml非常easy,一个button <RelativeLayout xmlns:android="http://sch ...

  6. web:转盘抽奖

    移动web:转盘抽奖(幸运大转盘)   为了获取客户.回馈客户,平台一般会推出抽奖活动类的营销页.因此web页面中,有各式各样的抽奖效果. 格子式(九宫格),背景滚动式(数字/文字/图案),旋转式(转 ...

  7. Autodesk FBX SDK Program 中文 (二)

    这是Autodesk FBX SDK学习笔记第二篇.下面部分汉字翻译自Autodesk FBX SDK Program.翻译人:有道翻译. 上一篇讲了一些FBX SDK的基本操作.创建FbxManag ...

  8. 认识Require

    1. 加载require.js文件 <script type="text/javascript" src="js/require.js" data-mai ...

  9. Best Time to Buy and Sell Stock I,II,III [leetcode]

    Best Time to Buy and Sell Stock I 你只能一个操作:维修preMin拍摄前最少发生值 代码例如以下: int maxProfit(vector<int> & ...

  10. Twitter实时搜索系统EarlyBird

    twitter要存档tweet采用lucene做全量指数,新发型是实时索引推文.检索实时(10在几秒钟内指数).实时索引和检索系统,称为EarlyBird. 感觉写更清晰,简洁,这个信息是真实的,只有 ...