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

这篇具有很好参考价值的文章主要介绍了读SQL进阶教程笔记15_SQL编程思维。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读SQL进阶教程笔记15_SQL编程思维文章来源地址https://www.toymoban.com/news/detail-436186.html

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. 能够准确描述静态数据模型的标准工具是维恩图,即“圆”

到了这里,关于读SQL进阶教程笔记15_SQL编程思维的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读SQL进阶教程笔记11_关系数据库基础

    正式的关系模型术语 非正式的日常用语 关系(relation ) 表(table ) 元组(tuple ) 行(row )或记录(record ) 势(cardinality ) 行数(number of rows ) 属性(attribute ) 列(column )或字段(field ) 度(degree ) 列数(number of columns ) 定义域(domain ) 列的取值集合(pool of legal values ) 10.5.3.1. “泛文件主义” 10.5.3.2. 

    2023年04月14日
    浏览(36)
  • 读SQL进阶教程笔记12_地址与三值逻辑

    5.1.4.1. 命题其实不存在于客观世界,而存在于我们的内心

    2023年04月19日
    浏览(37)
  • Lua 进阶 · 教程笔记

    笔记的内容出自 Bilibili 上的视频:Lua教程-进阶部分 - 4K超清【不定期更新】 笔记主要用于供笔者个人或读者回顾知识点,如有纰漏,烦请指出 : ) 国内的大佬 云风 翻译了 Lua 的 Api 参考手册:传送门【】 以后读者在练习或者开发途中可以在参考手册里查看 Lua 提供的 Api。

    2024年01月24日
    浏览(34)
  • ROS2 Navigation 进阶教程学习笔记 第一章

    Nav2提供了新的拱你和工具,使创建机器人应用程序变得更容易 在本单元中,将学习 1. 通过simple Commander API进行基本Nav2操作 2. 通过followwaypoints使用waypoint follower和task executor插件 3. 禁区和限速区简介 然后您将基于Nav2创建一个基本的自主机器人demo。您将经常在一个仿真仓库中

    2024年02月08日
    浏览(30)
  • 【操作宝典】IDE神器解密:IntelliJ IDEA详细教程,Java编程进阶指南!

    目录 🛸1. 新建Java项目 🛸2. 运行Java程序 🛸3. 创建springboot项目 方法一 导入jar包 ​编辑方法二 maven的安装配置 🛸4. 创建Vue项目 ​编辑4.1 配置node.js ​编辑4.2 idea运行 文件--新建--项目 JAVA模型--JDK 注意: 程序放在src里面 xxx.java则创建的类名只能为xxx 示例程序Hello.java 建议使

    2024年02月05日
    浏览(39)
  • kotlin教程4:函数进阶

    kotlin教程:编程基础💎数据结构💎面向对象 kotlin 的函数定义非常灵活,既可以按照顺序传参,也可以通过参数名传参,而且可以设置参数默认值,这些在基础教程中已经讲过了。 此外, kotlin 中用 vararg 修饰的参数,为长度可变的参数列表 递归是一种常用的编程技巧,就像

    2024年02月05日
    浏览(31)
  • aardio教程二) 进阶语法

    aardio中除了基础数据类型外,其他的复合对象都是table(例如类和名字空间等)。table可以用来存放aardio的任何对象,包括另一个table。 在其他语言中的字典、列表、数组、集合映射等,在aardio中都使用table来实现。 创建字典 创建数组 数组和字典可以混用 使用class定义类

    2024年03月18日
    浏览(30)
  • SpringBoot进阶教程(七十七)WebSocket

    WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 很多

    2024年02月08日
    浏览(36)
  • git 进阶系列教程--push

    功能介绍 将本地仓库中的内容同步到远程仓库 指令解析 这个命令就上将本地仓库中的文件同步到远程。是平时用到push最多的指令。它其实是一种简写方式。省略了远程仓库的地址,本地分支。 这个命令是比较全的一条指令。意思是推送本地master分支到远程(origin)的master分支

    2024年02月14日
    浏览(36)
  • git 进阶系列教程--pull

    功能 从远程仓库拉取最新代码到本地 代码解析 将远程仓库代码拉取到本地。当然这个命令的前提是你本地代码与远程代码有链接,无论是你upstream也好git clone也罢。而且是默认拉取远程代码中与该分支有关联的分支与本地该分支合并。同时,git pull不止是拉取代码,同时会将

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包