这一章讲了关于创建视图、操作视图的知识.

视图:是不保存实际数据的,来自于表的,保存好的 SELECT 语句.
使用视图有三个优点:

  1. 无需保存数据,因此节省储存设备的空间
  2. 视图可以命名,然后被保存.因而可以重复使用.
  3. 视图会自动更新,随着原表的数据的变化而变化

视图的创建与删除

创建视图

格式:

CREATE VIEW <viewname>(<vcol1>,<vcol2>, ...)
AS
SELECT ...

例子:
CREATE VIEW ProductSum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
FROM Product
GROUP BY product_type;

需要注意的几点:

  1. 多重视图的概念:在 SELECT 语句的 FROM 子句中,可以选用一视图,形成视图的视图,即多重视图.
  2. 视图的更新:视图的更新会带来原表的更新,因此具有聚合的视图是无法更新的,即无法执行 INSERT、DELETE、UPDATE 一类操作.

删除视图

格式:
DROP VIEW  <viewname>(<vcol1><vcol2>,...)

子查询:视图为基础的查询

子查询:以视图为基础的查询

格式:

将用来定义视图的 SELECT 语句直接用于 FROM 子句当中.
如下:
SELECT <vcol1><vcol2>,...
FROM <viewname>

需要注意:
查询的时候由内向外,即优先进行子查询,然后进行查询.

标量子查询

定义:
必须而且只能返回 1 行 1 列的结果的查询叫做标量子查询.
功能:
在查询的 WHERE 子句中,其中不能出现 AVG 等聚合函数,因此可以使用标量子查询,利用优先计算子查询的特性来得到想要的结果.
举例:
SELECT product_id, product_name, sale_price
FROM Product
WHERE sale_price > (SELECT AVG(sale_price)
FROM Product);

关联子查询

原因:
当进行标量子查询的时候,返回多条记录进行笔记会出错.关联子查询可以解决这个问题,使得在每种情况下,返回特定的值.
格式:
其在子查询中加上了特定的 WHERE 语句.
SELECT product_type, product_name, sale_price
FROM Product AS P1
WHERE sale_price > (SELECT AVG(sale_price)
FROM Product AS P2
WHERE P1.product_type = P2.product_type
);
语法: 在 WHERE 子句中,使用<tablename>.<columnnaem>的方式.

《SQL 基础教程》第五章:复杂查询的更多相关文章

  1. [SQL基础教程] 3-1 对表进行聚合查询

    [SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...

  2. Objective-C 基础教程第五章,复合

    目录 Objective-C 基础教程第五章,复合 什么是复合? Car程序 自定义NSLog() 存取方法get Set Tires(轮胎) 存取方法 Car类代码的其他变化 扩展Car程序 复合还 ...

  3. 《SQL 基础教程》第二章:查询基础

    这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运 ...

  4. 《SQL 基础教程》—第一章:数据库与 SQL

    导言 这一章的内容如下: 数据库简介 SQL 概要 表的创建 表的删除与更新 数据库简介 定义: Database, 是大量数据的集合Database Management System,是用于管理数 ...

  5. [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY

    [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...

  6. 《SQL基础教程》

    Product表 CREATE TABLE Product (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, prod ...

  7. 《SQL基础教程》+ 《SQL进阶教程》 学习笔记

    写在前面:本文主要注重 SQL 的理论.主流覆盖的功能范围及其基本语法/用法.至于详细的 SQL 语法/用法,因为每家 DBMS 都有些许不同,我会在以后专门介绍某款DBMS(例如 PostgreSQ ...

  8. [SQL基础教程] 5-1视图

    [SQL基础教程] 5-1视图 视图和表 从SQL角度看视图就是一张表 视图与表的差别 表保存了实际的数据,视图保存的是SELECT语句: 视图的优点 节省存储空间: 将常用的Select 语句保存成 ...

  9. [SQL基础教程] 2-1 SELECT语句基础

    [SQL基础教程] 2-1 SELECT语句基础 列的查询 Syntax SELECT<列名>,..... FROM<表名>; SELECT col_1, col_2 FROM ...

  10. 推荐《SQL基础教程(第2版)》中文PDF+源代码+习题答案

    我认为<SQL基础教程(第2版)>非常适合数据库学习的初学者.论述的角度是读者的角度,会换位思考到读者在看到这一段时候会发出怎样的疑问,非常难得:原始数据的例题只有一道,但是可以反复从不同 ...

随机推荐

  1. Centos7安装net Core

    官方文档:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 我这里是物理机,不是虚拟机 第一步: sudo ...

  2. vue中使用vue-quill-editor及上传图片到自己服务器

    第一步,下载依赖 cnpm install vue-quill-editor --save 第二步,再main.js里引入组件(我这里是全局注册) // 富文本编辑器 import VueQuillE ...

  3. 关于mysql分组查询

    在mysql查询中,用到GROUP BY 根据某一字段分组之后,每组显示的结果都只有第一条,这样的结果通常不是我们想要的. GROUP_CONCAT('字段')   可以将每一组下面的这个字段所有的数 ...

  4. Docker容器和本机之间的文件传输

    docker cp 本地文件路径 ID全称:容器路径

  5. Visual Studio 项目依赖

    在解决方案上点击右键,选择项目依赖项 选择需要发布的所有依赖项目 主要是为了解决插件项目DLL无法生成的问题

  6. ls file less

    ls-a 列出所有文件,包含隐藏文件-l 以长格式显示结果-F 在所列出的文件后面显示其格式-r 按照文件名降序展示-t 按照时间列出-S 按照文件大小排序 file 文件名:展示文件的类型简单描述 ...

  7. log4j2教程【RollingFileAppender】

    说明 rollover 表示的是当日志文件大小满足指定大小后,就生成一个新的文件的过程. RollingFileAppender RollingFileAppender是一个OutputStreamA ...

  8. redis 分页

    redis 分页 > rpush a (integer) > rpush a (integer) > rpush a (integer) > rpush a (integer) ...

  9. Linux基础命令---free显示内存使用

    free free指令用来显示内存的使用情况,显示系统中可用和已使用的物理和交换内存的总量,以及内核使用的缓冲区.应该忽略共享内存列:它已经过时了. 此命令的适用范围:RedHat.RHEL.Ubun ...

  10. WdatePicker 日期区间设置

    <input id="billsStartDate" name="billsStartDate" onclick="WdatePicker({d ...