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

news2025/1/15 16:52:28

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.coloradmin.cn/o/501515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DOM事件(中)

常见的事件分类(了解) ●我们在写页面的时候经常用到的一些事件 ●大致分为几类,浏览器事件 / 鼠标事件 / 键盘事件 / 表单事件 / 触摸事件 ●不需要都记住,但是大概要知道 鼠标事件 ●click :点击事件 ●dblclick &a…

Python小姿势 - # 如何使用Python爬取网页数据

如何使用Python爬取网页数据 今天我们来学习一下如何使用Python来爬取网页数据。 首先,我们需要准备一个空白的文件,在文件中输入以下代码: import requests url http://www.baidu.com r requests.get(url) print(r.text) 上面的代码中&…

宝宝腹泻怎么办?儿科医生分享小儿腹泻的辩证和处理方法

小儿腹泻病是婴幼儿时期的常见病。面对腹泻,很多父母往往不知所措,甚至不知道该怎么处理,只能带宝宝去医院治疗。由于腹泻具有反复性,稍有护理不当,甚至会加重病情。那么,小儿腹泻药如何处理呢?…

微服务---Redis实用篇-黑马头条项目-登录功能(短信验证缓存,用户信息缓存)

黑马头条项目-登录功能(短信验证缓存,用户信息缓存) 1、短信登录 1.1、导入黑马点评项目 1.1.1 、导入SQL 1.1.2、有关当前模型 手机或者app端发起请求,请求我们的nginx服务器,nginx基于七层模型走的事HTTP协议,可以实现基于Lua直接绕开t…

Android之WindowManager介绍

WindowManager android中真正展示给用户的是window和view. activity在android中所其的作用主要是处理一些逻辑问题,比如生命周期的管理、建立窗口等。 在android中,窗口的管理还是比较重要的一块,因为他直接负责把内容展示给用户&#xff…

11.streamFile

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…

05-微服务部署2023系列-centos+docker部署redis(单机版)

1、创建数据挂载目录 mkdir /root/docker/redisCluster/redis1/data -p 2、部署并启动命令 docker run -itd --privileged=true --name redisMaster -p 19000:6379 -v /root/docker/redisCluster/redis1/data:/data redis --appendonly yes --requirepass "myRedisPass123…

美颜sdk的开发流程及其在不同平台上的适用性比较

当下,在开发美颜功能时,美颜sdk成为了不可或缺的工具。近期,很多开发者向小编提问开发美颜的一些专业技术问题。本篇文章,小编将为大家统一解答一下近期的热门问题。 一、开发流程 1、确定美颜算法 美颜算法是美颜sdk的核心&a…

【Linux下】进程间通信

文章目录 进程间通信进程间通信的目的进程间通信的分类进程间通信的本质 管道初识管道匿名管道创建匿名管道理解协同机制和原子性写入 命名管道命名管道创建的俩种方式使用命名管道实现俩个不同进程之间通信 **管道实现进程间通信的本质**匿名管道vs命名管道 system Vsystem V共…

【Linux】进程概述和进程状态转换(查看进程、实时显示进程动态、杀死进程等)

目录 进程概述进程状态转换进程的状态进程相关命令 橙色 进程概述 进程是正在运行的程序的实例,是基本的分配单元也是基本的执行单元。 可以用一个程序来创建多个进程,进程是由内核定义的抽象实体,并为该实体分配用以执行程序的各项系统资源…

【Jmeter快速入门】

Jmeter快速入门 Jmeter快速入门1.安装Jmeter1.1.下载1.2.解压1.3.运行 2.快速入门2.1.设置中文语言2.2.基本用法 Jmeter快速入门 1.安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 1.1.下载 可以Apache Jm…

git在vs可视化界面下变基操作

vs版本:vs2022 天天都在使用git,听说过变基这个名词,但是并没有实操过变基,正好今天有个同事说起一件事情:提交代码的时候有太多的自动合并,如果需要回退版本,操作起来很困难,理想状…

如何在项目中实现登录时的验证码校验功能?

如何在项目中实现登录时的验证码校验功能? 第一步:创建项目,添加依赖第二步:验证码配置(CaptchaConfig类)第三步:创建CaptchaController第四步:测试注意问题 这里介绍一款老牌的验证…

使用@Resource注解和@Inject注解

1.Resource和Inject概述 1.1.Resource注解 Resource注解是Java规范里面的,也可以说它是JSR250规范里面定义的一个注解。该注解默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时&…

KCC南京成立会议如期举办

1915年9月15日,陈独秀等人在上海创立了《新青年》杂志,掀起了中华新文化思潮。接着,在1919年5月4日,陈独秀、李大钊等人发起了五四运动,唤醒了沉睡多年的东方巨狮。从此,五四青年节便成为了青年人的节日。 …

上市后首份财报,紫燕食品去年净利下降超3成

近日,上海紫燕食品股份有限公司(下称“紫燕食品”,603517.SH)交出了上市后的首份年报。 去年9月26日,紫燕食品在上交所主板上市,成为继绝味食品(603517.SH)、周黑鸭(01458.HK&#…

Jetpack Compose 中的Deep Linking — Android

Jetpack Compose 中的Deep Linking — Android 在本文中,我们将学习如何在 Jetpack Compose 中轻松实现深度链接。 什么是深度链接? 深层链接允许用户直接从外部来源(例如网站或其他应用程序)导航到应用程序内的特定内容。 添…

联想笔记本系统更新中断后变成蓝屏怎么U盘重装系统?

联想笔记本系统更新中断后变成蓝屏怎么U盘重装系统?有用户使用的联想笔记本电脑在系统更新的过程中,因为自己进行了一些操作,导致系统更新中断了,重启系统之后变成了蓝屏的情况。那么这个时候怎么去通过U盘重装系统来恢复电脑使用…

2d游戏人物动作实现(C语言)

没有接触制作小游戏前,感觉做游戏很不可思议,游戏里的人物是怎么移动的,怎么攻击,释放技能。。。。。。现在逐渐了解到之后,发现2d游戏人物的动作更多是图片的拼接,动作是否精细,由这个动作的帧…

第四十二章 Unity 下拉框 (Dropdown) UI

本章节我们介绍下拉框 (Dropdown),我们点击菜单栏“GameObject”->“UI”->“Dropdown”,然后调整它的位置,效果如下 其实它的本质就是一个下拉列表,然后选择列表中的一个选项而已。大家在很多网页中应该可以看到类似的UI元…