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

视图:是不保存实际数据的,来自于表的,保存好的 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. IMU 标定 | 工业界和学术界有什么不同?

    点击"计算机视觉life"关注,置顶更快接收消息! 由于格式问题最好在公众号上观看<IMU 标定-工业界和学术界有什么不同?> 本文主要介绍了IMU基本结构原理和误差的 ...

  2. Linux进程PRI与NI值

    1.PRI -> 进程的优先级,大部分系统(Linux.UCOSII)都是数字越低优先级越高,进程就优先运行 , Linux中的PRI(new) = PRI(old) + nice ,其中 , ...

  3. Beep函数实现硬件蜂鸣声

    #include <Windows.h> #include <tchar.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTA ...

  4. memcached----------linux下安装memcached,以及php的memcached扩展。

    1.通过wget http://www.memcached.org/files/memcached-1.4.24.tar.gz下载最新源码2.解压tar -xf memcached-1.4.24.ta ...

  5. [小程序] 微信小程序 picker 中range-key中必须带单引号

    原文地址:http://blog.csdn.net/u012329294/article/details/74906504 <view class="section"> ...

  6. Vue系列之 => 结合webpack使用vue-router

    安装 vue-router cnpm i vue-router -S index.html <!DOCTYPE html> <html lang="en"> ...

  7. Vue系列之 => 使用webpack-dev-server工具实现自动打包编译

    安装webpack-dev-server (webpack版本3.6.0,webpack-dev-server版本2.11.3)注意版本兼容问题,不然会有N多错误. npm i webpack-dev ...

  8. 关于Aspose.Words插入表格单元格的高度问题的解决

    最近在工作中遇到客户要将PDF打印的文档插入的表格行高缩小.为解决这个问题,我百度了好长时间,让没有直接来说明这个问题的,我不清楚是我遇到的问题太low了,各位大神不屑一顾.终于我在几个家之所长,把问 ...

  9. CCF CSP 201412-1 门禁系统

    题目链接:http://118.190.20.162/view.page?gpid=T21 问题描述 试题编号: 201412-1 试题名称: 门禁系统 时间限制: 1.0s 内存限制: 256.0M ...

  10. C语言输出

    转自:https://blog.csdn.net/u014647208/article/details/53337315 int PrintVal = 9; /*按整型输出,默认右对齐*/ print ...