自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 SQL进阶教程——SQL中的层级(2-10)

1. 谓词逻辑中的层级,集合论中的层级谓词逻辑中的阶是为了区分集合论中的元素和集合,以及谓词逻辑中的参数和谓词GROUP BY中的阶与元素和集合的区别有关,因此属于集合论中的阶2. 为什么聚合后不能再引用原表中的列在对表进行聚合的时候,只能在SELECT子句中写下面三种内容聚合键聚合函数常量年龄只是每个人的属性,而不是小组的属性。小组的属性只能是评价或者总和等统计性质的属性3...

2019-11-07 04:01:06 999

原创 SQL进阶教程——消灭NULL委员会(2-9)

1. 为什么NULL如此惹人讨厌在进行SQL编码时,必须考虑违反人类直觉的三指逻辑在指定 IS NULL 不会用到索引,因而SQL语句会执行性能低下如果四则运算以及SQL函数的参数中包含NULL,会引起“NULL的传播”在接受SQL查询的宿主语言中,NUL的处理方法没有统一标准与一般的列的值不同,NULL是通过在数据行的某处加上多余的bit来实现的2. 并不能完全消除NULL无法...

2019-11-07 03:52:49 698

原创 SQL进阶教程——人类的逻辑学(2-8)

1. 逻辑学的革命排中律:A或者非A总有一个成立,古典逻辑学中,作为神,无论多难的问题都能瞬间解决,因此古典逻辑学被称为“神的逻辑学”2. 人类的逻辑学数据库的使用者当然是人类,而不是神。因此,数据的表达方式也应该基于有限而且不完善的人类的认知,而不是神的完美无缺的认知。这就是数据库采用三指逻辑的原因...

2019-11-07 03:40:41 670

原创 SQL进阶教程——从面向过程思维向申明式思维,面向集合思维转变的7个关键点(2-6)

前言SQL中没有赋值或者循环的处理,数据也不以记录为单位进行处理,而已集合为单位进行处理1. 用CASE表达式代替IF语句和CASE语句。SQL更像一种函数式语言之所以叫它“CASE表达式”而不是“CASE语句”,是因此CASE表达式与1+1一样,都是表达式,在执行时会被整体当做一个值来处理。既然同样是表达式,那么能写1+1这样的表达式的地方都能写CASE表达式,而且因为CASE表达式最终会...

2019-11-07 03:28:47 683

原创 SQL进阶教程——GROUP BY 和PARTITION BY(2-5)

1. 类group by和partition by的区别在于,group by会在分类之后进行聚合操作划分出的子集都是非空集合所以子集的并集等于划分之前的集合任何两个子集之间都没有交集满足以上三个性质的各子集称为“类”通过对3取余给自然数集合N分类后,我们会得到下面三个类余0的类:M1={0,3,6,9…}余1的类:M2={1,4,7…}余2的类:M3={2,5,8…}...

2019-11-07 02:58:08 1133 1

原创 SQL进阶教程——地址这一巨大怪物(2-4)

1. 前言在关系模型诞生之前的研究工作中,最大动机是明确区分数据管理中的逻辑层和物理层。我们可以把它叫做数据独立性目标——Codd一般来说到关系数据库中没有指针时,并不是说在物理层也完全没有指针。相反,在物理层,指针时存在的。但是,就像前面说过的那样,在关系系统中,物理层的详细存储信息对用户是不可见的2. 关系模型是为摆脱地址而生的在现实世界的各种业务中,归根到底,我们想要的是“数据”,而...

2019-11-07 02:36:40 565

原创 SQL进阶教程——开始于关系,结束于关系(2-3)

1. 从运算角度审视集合封闭性:运算的输入和输出都是关系数学会根据“对于什么运算是封闭的”这样的标准,将集合分为各种类型,对于某种运算封闭的集合在数学上称为“代数结构”群:对加法和减法(或者乘法和除法)封闭环:对加法,减法,乘法封闭域:对加法,减法,乘法,除法封闭,即可以自由进行四则运算2. 实践和原理关系支持加法,减法,乘法,除法运算(除法运算的定义是有的),因此,关系也满足域...

2019-11-07 02:12:44 748

原创 SQL进阶教程——为什么叫“关系”模型(2-2)

1. 关系的定义“为什么叫它关系模型,而不叫他表模型?”“链接数据结构”指的是使用指针连接数据的链表结构,这是分层模型和网状模型数据结构流行的时期特有的关系和表的确相似,实质却不相同关系中不允许存在重复的元组,而表中可以存在关系中的元组没有从上往下的顺序,而表中的行有从上往下的顺序关系中的属性没有从左往右的顺序,额表中的列有从左往右的顺序关系中所有的属性都是不可分割的,而表中列的...

2019-11-07 01:47:04 645

原创 SQL进阶教程——关系型数据库的历史(2-1)

1. 前言关系模型的创始人是E.F.Codd,他在1969年发表的论文《大型数据库中关系存储的可推导性,冗余与一致性》,这篇里程碑的论文奠定了关系模型的理论基础2. 两篇论文写于1969年的《大型数据库中关系存储的可推导性,冗余与一致性》写于1970年的《大型功效数据库的关系基础》3. Codd的贡献定义了关系运算定义了代数运算采用谓词逻辑作为数据库操作的基础4. 196...

2019-11-07 00:52:00 735

原创 SQL进阶教程——SQL编程方法(第十二章)

1. 前言随着编程语言从注重“更容易让机器理解”的低级语言(如计算机语言和编程语言)向“更容易让人类理解”的高级语言发展,人们对“编程语言应该是一种人类可以读得懂,写得出的语言”这样的观点越来越认同,于是从认知心理学的角度研究编程风格的领域应运而生。(认知心理学:能跑起来就行,效率才是一切)2. 表的设计名字和意义名称l包括用来指代具体东西的固有名称,也包含用来指代概念或者集合的一般名...

2019-11-06 03:20:09 843

原创 SQL进阶教程——让SQL飞起来(第十一章)

1. 前言本节主要介绍一些使SQL执行速度更快,消耗内存更少的技巧。查询速度慢并不只是因为SQL本身问题,还可能是因为内存分配不佳,文件结构不合理等其他原因。2. 使用高效的查询在SQL中,很多时候不同代码能够得出相同结果。从理论上来说,得到相同的不同代码应该有相同的性能,但遗憾的是,查询优化器生成的执行计划很大程度上要受到代码外部结构的影响。因此如果想优化查询性能,必须知道如何写代码才能使...

2019-11-05 03:57:35 780

原创 SQL进阶教程——HAVING子句又回来了(第十章)

1. 前言学习HAVING子句的用法是帮主我们顺序的忘掉面向过程语言的思考方式并理解SQL面向集合特性的有效的方法。这是因为,HAVING子句的处理对象是集合而不是记录,所以只有习惯了面向集合的思考方式,才能真正的学好它2. 各位,全体点名Teamsmember(队员)team_id(队伍编号 ID)status(状态)乔1待命肯1出勤中米克...

2019-11-04 22:57:32 623

原创 SQL进阶教程——用SQL处理数列(第九章)

1.前言SQL语言在处理数据时默认地不考虑顺序。因此,如果遇到了需要考虑顺序的情况,处理方法与面向过程语言及文件系统的处理方法很不一样。本节将以数列为例介绍一下SQL的处理方法,并且挖掘出隐藏在背后的基本原理。2.生成连续的编号Digitsdigit( 数字 )0123456789-- 求连续编号(1):求0...

2019-11-04 19:20:35 818

原创 SQL进阶教程——EXISTS谓词的用法(第八章)

1. 前言支撑SQL和关系数据库的基础理论主要有两个:一个是数学领域的集合论;另一个是作为现代逻辑学标准体系的谓词逻辑。2. 理论篇什么是谓词返回值为真值的函数实体的阶层一介谓词:输入值为行(=或者between)二阶谓词:输入值为行的集合(exists)三阶谓词:输入值为集合的集合…关系数据库中实体的阶层0阶:行1阶:表(行的集合)2阶:表的集合全程量化...

2019-11-01 01:22:49 1160

原创 SQL进阶教程——用SQL进行集合运算(第七章)

1. 前言集合论是SQL语言的根基——这是贯穿全书主题之一。因为他的这个特性,SQL也被称为面向集合语言。只有从集合的角度思考,才能明白SQL的强大。2. 集合运算的几个注意事项SQL能操作具有重复行的集合,可以通过可选项ALL来支持。集合运算符为了排除重复行,默认的会发生排序,而加上可选项ALL之后就不会排序,所以性能会有提升。如果不关心结果是否存在重复行,或者确认结果不会产生重复行,可...

2019-11-01 00:29:52 839

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除