对《SQL基础教程》的笔记(9)

SQL基础教程
  • 书名: SQL基础教程
  • 作者: MICK
  • 页数: 294
  • 出版社: 人民邮电出版社
  • 出版年: 2013-8-1
  • 第8章 SQL 高级处理

    olap rank dense_rank row_number rank over()

    partition by order by

    rows preceding following

    grouping rollup cube grouping sets

    2017-12-16 13:56:57 回应
  • 第2章 查询基础 

    其实这是 SQL 中特有的情况。这时真值是除真假之外的第三种值——不确定(UNKNOWN) 。一般的逻辑运算并不存在这第三种值。 SQL 之外的语言也基本上只使用真和假这两种真值。与通常的逻辑运算被称为二值逻辑相对,只有 SQL 中的逻辑运算被称为三值逻辑。

    2017-12-16 15:40:36 回应
  • 第91页

    使用GROUP BY子句可以像切蛋糕那样将表分割。通过使用聚合函数和 GROUP BY子句,可以根据“商品种类”或者“登记日期”等将表分割后再 进行汇总。 ● 聚合键中包含NULL时,在结果中会以“不确定”行(空行)的形式表现出来。 ● 使用聚合函数和GROUP BY子句时需要注意以下4点。 ① 只能写在SELECT子句之中 ② GROUP BY子句中不能使用SELECT子句中列的别名 ③ GROUP BY子句的聚合结果是无序的 ④ WHERE子句中不能使用聚合函数

    2017-12-16 16:11:58 回应
  • 第95页

    SELECT 并用时 WHERE 和 GROUP BY的执行顺序 FROM → WHERE → GROUP BY → SELECT

    2017-12-16 16:15:29 回应
  • 第100页

    但其实这个问题本身就是本末倒置的,我们应该考虑的是该 SELECT 语句是否 满足需求。选择的标准其实非常简单,在“想要删除选择结果中的重复记录”时 使用 DISTINCT,在“想要计算汇总结果”时使用 GROUP BY。 不使用COUNT等聚合函数,而只使用GROUP BY子句的SELECT语句,会让人 觉得非常奇怪,使人产生“到底为什么要对表进行分组呢?这样做有必要吗?”等 疑问。

    2017-12-16 16:18:50 回应
  • 第106页

    虽然条件分别写在 WHERE 子句和 HAVING 子句当中,但是条件的 内容以及返回的结果都完全相同。因此,大家可能会觉得两种书写方式都 没问题。 如果仅从结果来看的话,确实如此。但笔者却认为,聚合键所对应的 条件还是应该书写在 WHERE 子句之中。 理由有两个。 首先,根本原因是 WHERE 子句和 HAVING 子句的作用不同。如前 所述, HAVING 子句是用来指定“组”的条件的。因此,“行”所对应的 条件还是应该写在 WHERE 子句当中。这样一来,书写出的 SELECT 语 句不但可以分清两者各自的功能,理解起来也更加容易。 WHERE 子句 = 指定行所对应的条件 HAVING 子句 = 指定组所对应的条件 其次,对初学者来说,研究 DBMS 的内部实现这一话题有些深奥, 这里就不做介绍了,感兴趣的读者可以参考随后的专栏——WHERE 子句 和 HAVING 子句的执行速度。

    WHERE子句和HAVING子句的执行速度 在 WHERE 子句和 HAVING 子句中都可以使用的条件,最好写在 WHERE 子 句中的另一个理由与性能即执行速度有关系。由于性能不在本书介绍的范围之内, 因此暂不进行说明。通常情况下,为了得到相同的结果,将条件写在 WHERE 子句 中要比写在 HAVING 子句中的处理速度更快,返回结果所需的时间更短。 为了理解其中原因,就要从 DBMS 的内部运行机制来考虑。使用 COUNT 函 数等对表中的数据进行聚合操作时,DBMS 内部就会进行排序处理。排序处理是 会大大增加机器负担的高负荷的处理 A。因此,只有尽可能减少排序的行数,才能 提高处理速度。 通过 WHERE 子句指定条件时,由于排序之前就对数据进行了过滤,因此能够 减少排序的数据量。但 HAVING 子句是在排序之后才对数据进行分组的,因此与 在 WHERE 子句中指定条件比起来,需要排序的数据量就会多得多。虽然 DBMS 的内部处理不尽相同,但是对于排序处理来说,基本上都是一样的。 此外, WHERE 子句更具速度优势的另一个理由是,可以对 WHERE 子句指定条 件所对应的列创建索引,这样也可以大幅提高处理速度。创建索引是一种非常普遍 的提高 DBMS 性能的方法,效果也十分明显,这对 WHERE 子句来说也十分有利。

    2017-12-16 16:25:06 回应
  • 第155页

    之前我们说过,在 SELECT 语句中视图可以和表一样使用。那么, 对于 INSERT、 DELETE、 UPDATE 这类更新语句(更新数据的 SQL) 来说,会怎么样呢? 实际上,虽然这其中有很严格的限制,但是某些时候也可以对视图进 行更新。标准 SQL 中有这样的规定:如果定义视图的 SELECT 语句能够 满足某些条件,那么这个视图就可以被更新。下面就给大家列举一些比较 具有代表性的条件。 ① SELECT 子句中未使用 DISTINCT ② FROM 子句中只有一张表 ③ 未使用 GROUP BY 子句 ④ 未使用 HAVING 子句

    2017-12-16 16:58:12 回应
  • 第196页

    COALESCE 是 SQL 特有的函数。该函数会返回可变参数 A 中左侧开 始第 1个不是 NULL 的值。参数个数是可变的,因此可以根据需要无限增加。 其实转换函数的使用还是非常频繁的。在 SQL 语句中将 NULL 转换 为其他值时就会用到转换函数(代码清单 6-19、代码清单 6-20)。就像之 前我们学习的那样,运算或者函数中含有 NULL 时,结果全都会变为 NULL。能够避免这种结果的函数就是 COALESCE。

    2017-12-16 17:12:20 回应
  • 第242页

    这正是外联结的关键点。多出的 2 条记录是高压锅和圆珠笔,这 2 条 记录在 ShopProduct 表中并不存在,也就是说,这 2 种商品在任何商 店中都没有销售。由于内联结只能选取出同时存在于两张表中的数据,因 此只在 Product 表中存在的 2 种商品并没有出现在结果之中。 相反,对于外联结来说,只要数据存在于某一张表当中,就能够读取 出来。在实际的业务中,例如想要生成固定行数的单据时,就需要使用外 联结。如果使用内联结的话,根据 SELECT 语句执行时商店库存状况的 不同,结果的行数也会发生改变,生成的单据的版式也会受到影响,而使 用外联结能够得到固定行数的结果。 虽说如此,那些表中不存在的信息我们还是无法得到,结果中高压锅 和圆珠笔的商店编号和商店名称都是 NULL(具体信息大家都不知道,真 是无可奈何)。外联结名称的由来也跟 NULL 有关,即“结果中包含原表 中不存在(在原表之外)的信息”。相反,只包含表内信息的联结也就被 称为内联结了。

    2017-12-16 17:26:44 回应

的其他笔记  · · · · · ·  ( 全部1108条 )

人类死亡史
3
请教机长
2
预期收益:在不确定市场创造非凡回报
9
經濟學.INFOGRAPHICS視覺資訊大繪解
6
民族与民族主义
18
共產主義
2
On Java 中文版 基础卷
1
预期收益
15
阿尔法经济学
5
CFA一级中文教材
3
我畢業五年,用ETF賺到400萬
16
人为何需要仪式
3
投资的常识
5
图解棒球规则
3
生存还是毁灭
2
因子投资
6
像大师一样投资
1
致命的海滩
1
FOF投资的量化分析
1
决战股市终极方案
1
男权的神话
4
小乌龟投资智慧2
2
股票魔法师
2
每个人的经济学
11
投资精要
3
估值:难点、解决方案及相关案例
1
手把手教你港股打新
2
从投票到暴力
2
巴菲特与索罗斯的投资习惯
2
股市进阶之道
7
中国股神林园炒股秘籍
1
彼得·林奇的成功投资
8
价值的力量
1
投资至简
7
债券投资实战
1
徐远的投资课
27
原则
1
從地理看經濟的44堂公開課
6
完全圖解 從海洋看世界經濟: 從海上貿易、領海攻防, 到石油、天然氣、水產資源的爭奪戰, 看懂世界經濟全貌
5
慢慢变富
3
癌症
1
您厉害,您赚得多
4
投资中不简单的事
9
投资中最简单的事
7
超额收益
2
股市真规则
11
股市长线法宝(原书第5版)
13
大钱细思
5
共同基金常识
8
散户自救法则
1
买入大牛股的9个关键
3
指数基金投资指南
4
七堂课穿越牛熊
4
低风险投资十八种武器
6
低风险投资之路 (第二版)
1
投资大白话
4
你的第一本保险指南
6
躺着赚钱
3
ETF全球投资指南
9
投资最重要的事
14
定投十年财务自由
19
投资
1
现代世界的诞生
1
全球不平等逸史
8
好好赚钱
1
有效资产管理
4
毒家企業
1
how to如何不切实际地解决实际问题
1
迈向财富自由之路
5
美国政党与选举
6
领导力
1
戏剧
1
經濟學.視覺資訊全解讀
12
好的资本主义,坏的资本主义
5
太阳系三环到四环搬迁纪要
1
埃及的革命考古學
1
經濟學人109個世界常識: 藏在5G通訊、表情符號和酒杯尺寸背後的祕密
2
重构
1
为什么不平等至关重要
1
白板
7
邻人之妻
3
秘境
1
白话大数据与机器学习
1
深度学习入门
1
怎样玩转信息
1
民族主义
2
码农翻身
2
数据密集型应用系统设计
2
自闭症
2
瘋狂世界
1
万物起源
1
码出高效:Java开发手册
4
做二休五
1
民主
2
Java Web轻量级开发面试教程
1
海盗经济学
3
法医的眼泪
1
生活中的经济学
2
纪录片
5
数字游戏
3
程序员面试金典(第5版)
2
上一堂最好玩的日本学
1
Java程序员成功面试秘籍
15
程序员面试手册
2
Spring 3.x企业应用开发实战
3
Spring+MyBatis企业应用实战
12
扫地出门
10
数据结构与算法经典问题解析
2
深入分析Java Web技术内幕
3
东京酷玩之旅
1
日本.铁道旅行途中
1
Java程序性能优化
8
宅人的东京
1
Spring实战(第4版)
4
Spring实战(第3版)
1
Java Persistence with MyBatis 3
1
Effective java 中文版(第2版)
15
疯狂Java讲义
13
銀座媽媽桑教的,男人就是吃這套!
1
Java Web技术及应用
1
塑造世界经济的50项伟大发明
1
Java 8实战
2
MySQL技术内幕
1
吴琼琼的彩妆教室
1
风格感觉
1
培養與鍛鍊程式設計的邏輯腦(第二版)
2
明解Java
3
无神论
8
經濟學A-Z速查指南
6
高手
1
经济学语境下的法律规则
4
精通Git(第2版)
3
千年金融史
1
创造性破坏
10
移动的帝国
4
搭地铁游曼谷(第3版)
1
乡下人的悲歌
3
如何有效阅读一本书
1
co-Trip小游趣:东京
1
这就是日本
8
东京攻略完全制霸(第5版)
1
算法图解
14
HTTP/2基础教程
2
政治是什么?
19
为什么有的国家富裕,有的国家贫穷
1
认识管理(第4版)
4
Web应用安全权威指南
22
图解基础设施设计模式
4
PHP7内核剖析
2
经济学的思维方式(原书第13版)
2
图解Java多线程设计模式
1
经营战略全史
4
图解密码技术
10
图解TCP/IP (第5版)
5
斯坦福极简经济学
1
图解HTTP
5
经济学通识课
2
Web应变之道
1
SQL进阶教程
5
技术之瞳——阿里巴巴技术笔试心得
2
深入理解ES6
11
文案创作完全手册
2
收获,不止SQL优化
8
卧底经济学4
7
知识分子与社会
1
Pretty Good Number One
13
网络是怎样连接的
5
图解设计模式
1
JavaScript权威指南(第6版)
1
JavaScript高级程序设计(第3版)
2
Web性能权威指南
6
JavaScript模式
7
高性能网站建设进阶指南
12
AV男優Q&A
1
黑客攻防技术宝典(第2版)
11
程序员面试攻略(原书第3版)
1
jQuery基础教程(第3版)
5
jQuery 技术内幕
1
李安哲学
1
编写高质量代码
1
HTML5数据推送应用开发
2
酷玩经济学
10
JavaScript忍者秘籍
6
Ruby on Rails Tutorial
5
Modern PHP(中文版)
1
Web前端黑客技术揭秘
5
性存在
5
好色
1
MongoDB权威指南
4
谜男启示录
2
賣淫的倫理學探究
2
嗨翻C语言
1
艺术的疗效
1
高效能程序员的修炼
2
独裁者手册
2
我的涼山兄弟
2
哈利·波特的哲学世界
4
如何高效学习
3
无聊的魅力
2
Web之困:现代Web应用安全指南
1
程序员的思维修炼
1
苦水音乐
1
大转变
1
《生活大爆炸》粉丝升级手册
3
像经济学家一样思考
1
打工女孩
3
经济学常识
1
美国底层生存方式揭秘
1
时尚的哲学
1
被掩盖的经济真相
2
读人
4
平壤水族馆
1
人生的意义
3
浪潮之巅
15
论剽窃
1
你以为你以为的就是你以为的吗?2
5
加图决策者手册
4
不要讓床冷掉
2
社会主义
1
足球经济学
14
享受吧!一個人的SEX
1
快感
2
漫步华尔街
4
一件T恤的全球经济之旅
4
一切皆有价
6
白老虎
3
市场经济:大师们的思考
23
写给无神论者
3
理性乐观派
10
怪诞行为学
5
为什么常识会撒谎
2
价格理论及其应用
9
被捆绑的欲望
2
反对爱情
5
百辩经济学
8
诡辩与真相
57
亲爱的卧底经济学家
4
头条新闻背后的哲学
1
社会学与生活
1
把妹達人之誘惑藝術
3