SQL基础学习5

视图

视图与表:从SQL角度来看视图就是一张表

视图与表的唯一区别:是否保存了实际的数据。数据库中的数据实际上会被保存到计算机的存储设备中,但使用视图时并不会将数据保存到存储设备之中,也不会将数据保存到其他任何地方。实际上是他保存的是SELECT语句。

表中存储的是实际数据,视图中保存的是从表中取出数据所使用的SELECT语句。

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

创建视图的方法:

CREATE VIEW 视图名称(视图列名1,视图列名2,...)
AS
SELECT语句 
P.S: SELECT语句需要书写 在AS关键字之后(AS关键字不可省略)SELECT语句列的排列顺序视图中列的排列顺序相同

CREATE VIEW ShopSum(name,cnt_name)
AS
SELECT name,COUNT(*)
FROM Shop
GROUP BY name;
解释:创建一个ShopSum视图,其数据来于Shop表按name进行分组计数的结果

视图的使用与表一样:

SELECT name,cnt_name
FROM ShopSum;


使用视图的查询:通常需要 执行2条以上的SELECT语句

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


多重视图:尽量避免,因为它会降低SQL的性能

--多重视图的创建
CREATE VIEW ShopSumJim(name,cnt_name)
AS
SELECT name,cnt_name
--以视图为基础创建视图
FROM ShopSum
WHERE name='筷子';


视图的限制: 通过聚合得到的视图无法进行更新
1. 定义视图不能使用ORDER BY子句(视图和表一样, 数据行都是没有顺序的)

2.当定义视图的SELECT语句满足以下某些条件时,可以对视图进行更新(更新包括:INSERT、DELETE、UPDATE)。条件如下:SELECT语句中未使用DISTINCT;FROM只有一张表;未使用GROUP BY子句;未使用HAVING子句

删除视图:

--删除视图的一般语法
DROP VIEW 视图名称 (视图列名1,视图列名2,视图列名3,...);

子查询

子查询和视图:

子查询:将用来定义视图的SELECT语句直接用于FROM子句当中。子查询的特点概括起来就是一张一次性视图

--创建根据商品名统计商品数据的视图
CREATE VIEW ShopSum(name,cnt_name)
AS
SELECT name,COUNT(*)
FROM Shop
GROUP BY name;
--确认视图是否已经创建成功
SELECT name,cnt_name
FROM ShopSum;
等价查询结果的子查询

SELECT name,cnt_name
FROM (SELECT name,COUNT(*) AS cnt_name
      FROM Shop
      GROUP BY name) AS ShopSum;

解释:()部分即为子查询,即,将用来定义视图 的SELECT子句直接作用于FROM子句当中;子查询作为内层查询会首先执行;子查询的层数原则上没有限制,但应尽量避免使用多重嵌套的子查询

子查询的名称:

原则上子查询必须使用AS关键字设定名称,此关键字有时可省略

标量子查询:必须而且只能返回1行1列的结果,其返回值可以用在=或者< >这样需要单一值的比较运算符之中

SELECT name,price
FROM Shop
WHERE price >(SELECT AVG(price)
              FROM Shop);
解释:从Shop表中选出价格高于平均价格的商品信息;由于WHERE子句中不能使用聚合函数,所以利用标量子查询 SELECT AVG(price) FROM Shop来实现

标量子查询的书写位置:

并不仅仅局限于WHERE子句中,能够使用常数或者列名的地方,无论是SELECT子句、GROUP BY 子句、HAVING子句,还是ORDER BY子句,几乎所有地方都可用。

使用标量子查询时的注意事项:该子查询绝对不能返回多行结果


关联子查询

普通子查询和关联子查询的区别

SELECT name,price
FROM Shop AS S1
WHERE price>(SELECT AVG(price)
FROM Shop AS S2
 WHERE S1.name=S2.name --关键语句:关联条件
GROUP BY name);
解释:对表Shop按name分组,选出每组中price大于每组的平均price的商品信息

细分的组内进行比较时,需要使用关联子查询

关联子查询也是用来对集合进行切分的:关联子查询实际只能返回1行结果

结合条件/关联条件一定要写在子查询中:因为关联名称的作用域

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip
毕设新项目基于python3.7+django+sqlite开发的学生就业管理系统源码+使用说明(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 学生就业管理系统(前端) ## 项目开发环境 - IDE: vscode - node版本: v12.14.1 - npm版本: 6.13.4 - vue版本: @vue/cli 4.1.2 - 操作系统: UOS 20 ## 1.进入项目目录安装依赖 ``` npm install ``` ## 2.命令行执行进入UI界面进行项目管理 ``` vue ui ``` ## 3.编译发布包(请注意编译后存储路径) #### PS:需要将编译后的包复制到后端项目的根目录下并命名为'static' 学生就业管理系统(后端) ## 1.项目开发环境 - IDE: vscode - Django版本: 3.0.3 - Python版本: python3.7.3 - 数据库 : sqlite3(测试专用) - 操作系统 : UOS 20 ## 2.csdn下载本项目并生成/安装依赖 ``` pip freeze > requirements.txt pip install -r requirements.txt ``` ## 3.项目MySQL数据库链接错误 [点击查看解决方法](https://www.cnblogs.com/izbw/p/11279237.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值