读SQL进阶教程笔记15_SQL编程思维

news/2024/11/29 10:43:45/

1. 还原论

1.1. 认为可以把高级现象还原为低级基本现象的学说

1.2. 将复杂的东西看成是由简单单元组合而成的

1.2.1. 以赋值、条件分支、循环等作为基本处理单元,并将系统整体分割成很多这样的单元的思维方式

1.2.2. 文件系统也是将大量的数据分割成记录这样的小单元进行处理的

2. 整体论

2.1. 用系统、整体的观点考察有机界的理论

2.2. 也称“机体论”

2.3. SQL中没有赋值或者循环的处理,数据也不以记录为单位进行处理,而以集合为单位进行处理

2.3.1. SQL更像一种函数式语言

3. 递归集合

3.1. 冯·诺依曼提出用递归集合定义自然数,是在1923年发表的论文《关于超限序数的引入》中

3.1.1. SQL可以通过COUNT函数计算出元素个数,与冯·诺依曼方法的定义方式兼容性很好

3.2. 伟大的哲学家弗雷格(Friedrich Ludwig Gottlob Frege),他几乎以一己之力创建了关系模型基础之一的谓词逻辑

3.3. 因完善了现代集合论体系并提出良序定理和选择公理而闻名的数学家策梅洛(Ernst Friedrich Ferdinand Zermelo)

3.4. 弗雷格方法和冯·诺依曼方法很像,区别在于不用空集表示0,而用包含空集的集合来表示

3.5. 自然数的定义是由皮亚诺列举的5个条件给出的,冯·诺依曼等人只是根据皮亚诺公理生成了自然数而已

3.6. 使用λ演算函数来构建自然数的方法

3.6.1. 使用λ演算构建的自然数被阿隆佐·邱奇(Alonzo Church)以自己的姓氏命名为了“邱奇数”

3.6.2. 其本质却是输入输出均为函数的高阶函数

4. 用CASE表达式代替IF语句和CASE语句

4.1. CASE表达式与1+(2-4)或者(x*y)/z一样,都是表达式,在执行时会被整体当作一个值来处理

4.2. 常量可以理解为变量个数为0的表达式

4.3. CASE表达式最终会作为一个确定的值来处理

4.4. 可以把CASE表达式当作聚合函数的参数来使用

5. 用GROUP BY和关联子查询代替循环

5.1. SQL中没有专门的循环语句

5.1.1. 使用游标实现循环,但是这样的话还是面向过程的做法

5.1.2. 去掉普通编程语言中的循环正是SQL语言设计之初的目的之一

5.2. 将关系整体作为操作的对象。目的是避免循环

5.3. 面向过程语言在循环时经常用到的处理是“控制、中断”

5.3.1. 在SQL中,这两个处理可以分别用GROUP BY子句和关联子查询来表达

5.3.2. 关联子查询适合用来分割处理单元

6. 表中的行没有顺序

6.1. 对于文件来说,行的顺序是非常重要的

6.2. 表有意地放弃了行的顺序这一形象的概念,从而使它具有了更高的抽象度

6.3. 依赖顺序的不好的写法

6.3.1. 在定义视图时指定ORDER BY子句(如果某种数据库支持这种写法,那么它本身就有问题)

6.3.2. Oracle中的rownum这样依赖具体实现的“行编号”列

7. 将表看成集合

7.1. 理解表的抽象性的最好的方法是使用自连接

8. 理解EXISTS谓词和“量化”的概念

8.1. 谓词逻辑有100多年的历史,是现代逻辑学的标准逻辑体系

8.2. 对于SQL来说,量化符就是EXISTS谓词

8.3. 更应该灵活掌握的其实是其否定形式——NOT EXISTS的用法

8.3.1. 对于SQL中不具备的全称量化符,我们只能通过在程序中使用NOT EXISTS来表达

8.3.2. 通过德·摩根定律和NOT EXISTS来表达全称量化的方法

8.3.3. 使用NOT EXISTS的查询语句,可读性都不太好

8.3.3.1. 同样的功能也可以用HAVING子句或者ALL谓词来实现

8.3.4. NOT EXISTS有一个很大的优点,即性能比HAVING子句和ALL谓词要好得多

9. 学习HAVING子句的真正价值

9.1. 与WHERE子句不同,HAVING子句正是设置针对集合的条件的地方

10. 不要画长方形,去画圆

10.1. 能够准确描述静态数据模型的标准工具是维恩图,即“圆”

 


http://www.ppmy.cn/news/61734.html

相关文章

KDBR-IV变压器空负载短路损耗测试仪

一、产品概述 本产品是我公司针对不良电力用户偷逃基本电费、私自增容问题而研发设计的仪器,用于变压器容量、空载、负载等特性参数测量的高精密仪器。本仪器为多功能测量仪器,相当于往常两种测试仪器:即变压器容量测试仪变压器特性参数测试仪…

yolov8 OpenCV DNN 部署 推理报错

yolov8是yolov5作者发布的新作品 目录 1、下载源码 2、下载权重 3、配置环境 4、导出onnx格式 5、OpenCV DNN 推理 1、下载源码 git clone https://github.com/ultralytics/ultralytics.git 2、下载权重 git clone https://github.com/ultralytics/assets/releases/dow…

ntp时间同步装置(NTP服务器)对网络摄像机的精准对时方案

ntp时间同步装置(NTP服务器)对网络摄像机的精准对时方案 ntp时间同步装置(NTP服务器)对网络摄像机的精准对时方案 网络摄像机相比于模拟摄像机的功能多增加了数字化压缩控制器和基于WEB管理界面的操作系统和内部时钟系统&#xff…

工业数据安全治理探索

本文提出一套集管理、技术、运营为一体的工业数据安全治理参考框架,治理框架如图1所示。在法律法规、国家标准、行业标准的框架下,融合DSMM成熟度模型理论,围绕数据采集、传输、存储、处理、交换以及销毁等各个阶段的全生命周期,分…

「STC8A8K64D4开发板」——外部中断(INT0~INT4)

第2-4讲:外部中断(INT0~INT4) 学习目的学习中断的相关概念。掌握外部中断配置及中断优先级配置的程序设计。掌握中断服务程序的编写。 中断相关概念 什么是中断 中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。 CPU在处理某一事件A时&#xff0c…

前端-01Html5基本知识

1 基本 1.1 第一个前端程序 内容 <html><head><title>我的网页</title></head><body>Hello,我的第一个网页</body> </html>使用浏览器打开 1.2 工具安装 浏览器 谷歌浏览器 清缓存 ctrlshiftdelete vscode 生成浏览器文…

Word控件Spire.Doc 【打印】教程(1):通过 5 个步骤以编程方式打印 Word 文档

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

stm32103ZET6使用编码器(磁电增量式)

这里写目录标题 磁电增量式编码器介绍TIM定时器&#xff08;编码器接口模式&#xff09;一些用到的算法均值滤波冒泡排序&#xff08;从小到大&#xff09;一阶低通滤波 编码器测数代码编码器接口HAL库函数 正点原子的电机例程(原例程用的是stm32f407&#xff0c;我这里改成用s…