从sql角度,视图和表是相同,区别在表中保存的实际数据,而视图保存是select语句(视图本身不存储数据)使用视图,可以轻松完成跨多表查询数据等复杂操作可以将select语句当成视图来使用,创建视图用create view,删除视图用drop view视图包含"不能使用order by"和"对其进行有限制的更新",实际上视图保存的是select语句视图的优点无需保存数据,可以节省存储设备的容量频繁的使用select语句保存成视图,不用每次都重新书写了,将进程使用的select做成视图
多重视图 在视图的基础上创建视图,但尽量避免在视图的基础上创建视图,多重视图会降低SQL的性能视图的限制定义视图时不要使用order by子句因为视图和表一样,数据行都是没有顺序的对视图进行更新在select语句中视图可以和表一样使用,但是对于insert、delete、update这类更新语句满足了一定条件可以被更新由于使用视图来保存原表的汇总数据时无法判断将视图更改反映到原表中的,例如将一行数据插入视图中,但是原表中的编号等信息不清楚,无法保证数据的一致性视图和表需要同时进行更新,因此通过汇总得到的视图无法进行更新
删除视图
5.2 子查询
标量子查询标量就是单一的意思,在数据库之外的领域也经常使用,标量子查询就是必须且只能返回一行一列的结果,由于只返回单一值,所以标量子查询的返回值可以用在"="或"<>"这样需要单一值比较的运算符之中,
5.3 关联子查询关联子查询会在细分的组内进行比较时使用
使用关联资产时,通常会使用"限定"或"限制"这样的语言
6 函数、谓词、case表达式6.1 各种各样的函数函数就是输入某一值得相应输出结果的功能,输入值称为参数,输出值称为返回值
算术函数
字符串函数
日期函数
转换函数在sql中有两层意思:一是数据类型的转换,简称类型转换,在英语中称为cast;另一层的意思是值的转换;
6.2 谓词谓词是需要满足特定条件的函数,该条件就是返回值是真值。返回值可能是数字、字符串或者日期,但是谓词的返回值就是真值(True/False/Unknown)。这就是谓词和函数的最大区别。
--为了选出某些值为null的列的数据,不能使用=,使用特定的谓词is null,不是null的is not null
--选取出在范围的数据,还有not in不在范围的数据,两者都无法选取出null数据
-- 谓词的作用就是"判断是否存在满足某种条件的记录",存在这样的记录返回True,否则返回False6.3 case表达式case表达式分为简单case表达式和搜索case表达式,简单表达式包含在搜索表达式内,只介绍搜索case表达式
case表达式是在区分情况时使用的,在编程中称之为(条件)分支,是相当于sql中的if语句
搜索case表达式
--简单case表达式
--经典案例
--结果如下,没有含有null的两行,是因为通常的谓词都无法与null比较product_name purchase_price打孔器 320擦菜板 790
--结果是什么都没有,使用子查询作为not in 的参数时,子查询的返回值也不能是null
7 集合运算7.1 表的加减法集合在数学领域表示"(各种各样)事物的总和",在数据库领域表示记录(行)的集合,集合运算是对满足同一规则的记录的进行加减等四则运算。用来进行集合运算的运算符称为集合运算符。
表的加法--union
注意事项:作为运算对象的记录的列数必须相同作为运算对象的记录中列的类型必须一致,如果要使用不同的类型,可以使用类型转换函数cast可以使用select语句,但是order by子句只能在最后使用一次包含重复行的集合运算--all选项包含重复行的只需只需在union后加all即可
选取表中公共部分--intersect--intersect应用于两张表中,选取出公共记录
记录的减法--except
--减法运算的减数和被减数位置的不同,得到的结果也不同7.2 联结(以列为单位进行联结)联结(join)就是将其他表中的列添加过来。联结大致分为内连接和外联结。
之前的union和intersect都是以行方向为单位进行操作。union增加行,intersect减少行。
内联结(inner join)from 子句之前from都是一个表,而这次同时使用两张表,使用inner join将两张表联结过来on子句注意on后边的联结条件,指定两张表联结使用的列(联结键),使用内连接必须使用on子句,书写在from和where之间
外联结(outer join)外联结包括做联结和右联结,外联结使用left和right来指定主表,使用left时,from子句中left左边的表是主表,使用right时,from子句中right右边的表是主表。
3张表以上的联结-- 联结的from子句中再次使用使用inner join(outer join) 将其他表也添加进来
交叉联结--cross join(笛卡尔积)-- 进行交叉联结时无法使用内联结和外联结中所使用的on,交叉联结是对两张表中的全部记录进行交叉组合,因此结果中的记录通常是两张表行数的集合。8 SQL高级处理8.1 窗口函数窗口函数可以进行排序、生成序列号等一系列的聚合函数无法实现的高级操作
窗口函数也称为OLAP函数(online analytical processing 实时分析处理),例如进行市场分析、创建财务报表、创建计划等日常商务工作。
语法的基本使用方法--使用rank函数
-- partition by 能够设定排序的对象范围,本例中设定了商品的种类进行排序--order by指定了按照哪一列,何种顺序进行排序,与select语句中末尾的order by一样,可以通过关键字asc/desc来指定升序或者降序partition by在横向上对表进行分组,而order by决定了纵向的排序规则。通过partition by分组后的记录合称为窗口。省略了partition by相当于一个大的窗口。窗口函数兼具group by子句分组和排序的功能,但是不具有group by子句汇总的功能
专用创建函数的种类
rank函数计算排序时,如果存相同位次的记录,则会跳过之后的位次
dense_rnak函数同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次
row_number函数赋予唯一的连续位次(同价也是不同位次)
窗口函数的适用范围窗口函数只能在select中使用,能在order by中使用是因为order by在select之后执行的
作为窗口函数使用的聚合函数所有的聚合函数都能用作窗口函数
计算移动平均值窗口函数就是以窗口为单位进行分割,并在其中进行排序的函数,其实还有包含在窗口中指定更加详细的汇总范围的备选功能,该备选功能中的汇总范围称为框架
-- 这里使用row("行")和preceding("之前")两个关键字,将框架指定为"截止~行",因此rows 2 preceding这就是截止2之前两行,响应的“之后”是following-- 由于框架是根据当前记录来确定,因此和固定的窗口不同,其范围会随着当前的记录的变化而变化
--如果是当前记录的前后作为汇总对象rows between 1 preceding and 1 following --前中后三行两个order by在窗口函数中也有一个order by,但是这个order by只是决定窗口函数按照什么样的顺序进行计算的,对结果的排序没有影响。要想最后按照顺序排序,需要在select语句最后,使用order by子句进行指定;
8.2 GROUPING运算符只使用group by子句和聚合函数是无法同时得到小计和合计的,可以用grouping实现
理解grouping运算符中的cube关键在于形成“积木搭建出的立方体”的印象
grouping 运算符包含以下是三种:rollup(卷起的意思)、cube、grouping sets
同时得到合计行rollup--同时得到合计和小计
grouping--让null更加容易分辨该函数在其参数列的值为超级分组记录所产生的null时返回1,其他情况返回0
--结果product_type regist_date sum_price1 1 167800 0 111800 0 880cube--用数据来搭积木(立方体的意思)cube语法和rollup相同,只需将rollup换成cube即可,rollup结果一定包含在cube中所谓cube就是将group by子句中的聚合键的“所有可能的组合”的汇总结果集中到一个结果中
grouping sets--取得期望的积木该运算符可以用于从rollup或者cube中取出部分记录
——End——
关注SQL数据库开发公众号,在后台回复关键字:资料领取,可以获取一份精心整理的技术干货。
一、前言篇1. AI 绘图是什么?AI 绘画,顾名思义就是利用人工智能进行绘画,是人工智能生成内容(AIGC)的一个应用场景。其主要原理简单来说就是收集大量已有作品数据,通过算法对它们进行解析,最后再生成新作品,而算法也便是 AI 绘画的核心,是它得以爆火的基础。1)Midjourney 是什么?Midjourney 是一个由 Midjourney 研究实验室开发的人工智能程序
Changelog | Cursor - The AI Code Editor关键字:Agent、Web search、MCP(Model Context Protocol)、Yolo模式、claude-3.7-sonnet、claude-3.7-sonnet-thinking? TLDR :1)、Agent(智能体)现在可以在Yolo模式下自动运行MCP(模型上下文协
sql基础教程框架--基础篇
由于想考REDHAT认证所以将学习过程做以下笔记。分为2个部分:基础教程和企业服务教程。第一部分 Redhat基础教程 第一章 预备知识:•Linux操作系统常用的文件系统有两种:–ext3/ext4 (用于存储文件)–swap (用于临时性地保存内存中的内容)–它将在MBR(主引导记录)中安装Grub引导程序,如
Envoy 基础教程 - Tetrate Academy1、HTTP/1.1、HTTP/2、HTTP/3 演变HTTP/1.1使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。HTTP/1.1请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。只能压缩 Body 的部分HTTP/2 协议是基于 HTTPS 的,会压
SQL语法、SQL高级教程、SQL函数、SQL约束、基本关键字
css选择符 $('#id > li').addClass('none'); // > 子元素 $('#id li:not(.none)').addClass('not-none'); // :not选择符XPath选择符 $('a[@title]') //所有带title属性的链接 $
数据库技术是程序开发人员必须掌握的技术,网页学习网SQL Server基础教程以SQL Server 2005为主要开发工具来介绍SQL Server数据库的基本操作、数据库设计、数据库高级查询等。------分隔线----------------------------SQL Server数据库基础 SQL基础SQL教程:1.1 使用数据库的必要性 SQL基
# SQL Server基础教程SQL Server是一种由微软公司开发的关系数据库管理系统(RDBMS),它被广泛应用于企业级数据库管理。本教程将介绍SQL Server的基础知识,包括数据库创建、表格操作、数据查询等内容,并提供一些代码示例帮助读者更好地理解。## 数据库创建在SQL Server中,可以通过以下代码创建一个新的数据库:```sqlCREATE DATABAS
一、MQI的基本数据类型 数据类型 说明 MQBYTE
收集参数为元组和字典:def print_paras(*paras): print parasprint_paras(1, 2, 3)
第一章 python 基础知识1.1 数字和数学表达式1.2 python 2.x 和python 3.x print的区别1.3 python 2.x 和 python 3.x input 的区别1.4 数学函数1.5 input 和 raw_input 区别第二章 列表和元组第三章 使用字符串 1.1 数字和表达式 Python 默
简单介绍组合模式,指出了一些课件上模糊/错误的部分
学习python,少不了提问。无论是购买了教程,在交流群里提问,还是在论坛上向大佬请教,抑或是在工作中请教同事,好的提问,会让问答这个过程事半功倍地进行。 今天,我们就专门聊聊“如何提问”,掌握正确的提问方式,就能最快解决问题,也就能更快提高。 一、正确准备你的问题 好的问题,首先自己要看懂意思,描述要通顺;其次要完整而清楚,包含足够多的信息,说明白问题的起因
对于大部分B2C网站来说,购物车是网站的咽喉之地,订单是白花花的银子,所有银子都必然流经购物车,购物车不能有失。优秀的购物车设计至少需要完成两项使命:一是方便用户多买货多掏银子;二是帮用户保管好待购的货品,方便下次接着掏银子。购物车是个较复杂的系统,一般会跟订单、商品、库存、会员和促销等模块有暧昧关系,也算是牵一发而动全身。所以,在不了解购物车前,不宜轻易的指挥你的程
摩客学习笔记一、关于摩客1. 简介摩客(Mockplus)原型图设计工具是一个可以帮助设计师设计原型图的工具,提供简洁高效的原型设计体验,适合软件团队、个人在软件开发的设计阶段使用。其具有低保真、无需学习、快速上手、功能够用等多种特色,并能够很好地表达自己的设计。2. 功能特色全新的主辅画板模式,可以灵活创建不同的交互效果。支持多人同时在线编辑同一项目,共同完成APP原型设计。自带钢笔工具、铅笔工