《SQL基础教程》读书小记
看了《SQL进阶教程》之后,感觉很不错,趁618入手了这本《SQL基础教程》,希望有什么可以让人眼前一亮的知识。
- 将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库。
- DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。比如:COMMIT,ROLLBACK,GRANT,REVOKE。
- 列的数据类型是CHAR型,字符串以定长字符串的形式存储在被指定为CHAR型的列中。所谓定长字符串,就是当列中存储的字符串长度达不到最大长度的时候,使用半角空格进行补足。
- VARCHAR型是可变长字符串。
- 在使用DISTINCT时,NULL也被视为一类数据,NULL存在于多行中时,也会被合并为一条NULL数据。
- DISTINCT关键字只能用在查询的第一个列名之前。
- 算术运算符有NULL时,结果都是NULL。比如
NULL/0
不会发生错误,结果是NULL。 - 比较字符串以字典顺序进行比较。
- 用于汇总的函数称为聚合函数或聚集函数,就是将多行汇总为一行。
- 不使用GROUP BY子句时,是将表中的所有数据作为一组来对待的。
- 把聚合键之外的列名书写在SELECT子句之中会出现错误,MYSQL除外。
- 实际上,只有SELECT子句和HAVING子句,以及ORDER BY子句中能使用COUNT等聚合函数。(执行顺序在GROUP BY之后的)
- HAVING子句中能够使用的3种要素是:①常数;②聚合函数;③GROUP BY子句中指定的列名(即聚合键)。都是对组来说是唯一值得。
- SELECT执行的顺序:FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY;这也是为什么ORDER BY可以使用列的别名的原因。
- 多行INSERT可以同时插入多行数据,但是ORACLE并不支持,ORACLE使用如下实现多行插入:
INSERT ALL INTO table1() VALUES() INTO table2() VALUES() SELECT 1 FROM dual;
INSERT ALL WHEN condition1 THEN INTO table1 VALUES() WHEN condition2 THEN INTO table2 VALUES() SELECT * FROM table
INSERT ALL WHEN condition1 THEN INTO table1 VALUES() ELSE INTO table2 VALUES() SELECT * FROM table
- 事务就是需要在同一个处理单元中执行的一系列更新处理的集合。
- MySQL的事务开始语句是
START TRANSACTION
,ORACLE没有;事务的结束语句都是:COMMIT
,ROLLBACK
。 - 实际上,几乎所有的数据库产品的事务都无需开始指令。这是因为大部分情况下,事务在数据库连接建立时就已经悄悄开始了,并不需要用户再明确发出开始指令。例如,使用ORACLE时,数据库建立连接以后,第一条SQL执行的同时,事务就已经悄悄开始了。
- 通常有两种模式:①每条SQL就是一个事务。比如MYSQL。②直到用户执行COMMIT或者ROLLBACK为止算作一个事务。比如ORACLE。所以ORACLE执行了DELETE也可以通过ROLLBACK回滚。
- 事务的一致性:指的是事务中包含的处理要满足数据库提前设置的约束。
- 视图不保存实际的数据。实际上视图保存的是SELECT语句。
- 视图中的数据会随着原表的变化自动更新,视图归根到底是SELECT语句,所谓“参照视图”也就是“执行SELECT语句”的意思。
- 多重视图会降低SQL的性能,应该避免在视图的基础上创建视图。
- 定义视图时,不要使用ORDER BY。
- 视图只有满足以下条件,才能被更新:①SELECT子句中没有使用DISTINCT。②FROM子句中只有一张表。③未使用GROUP BY子句。④未使用HAVING子句。
- 子查询就是一张一次性视图。
- 标量子查询必须而且只能返回一行一列的结果。就是返回单一值的查询,所以可以使用
=
,<>
等进行比较。 CAST(转换前的值 AS 想要转换的数据类型)
- COALESCE函数会返回可变参数中左侧开始第一个不是NULL的值。
- 谓词的返回值是真值(TRUE、FALSE、UNKNOWN)。
- 内联结是交叉联结的一部分,“内”也可以理解为“包含在交叉联结结果中的部分”。相反,外联结的“外”可以理解为“交叉联结结果之外的部分”。
- 窗口函数也称作OLAP函数,意思是对数据库数据进行实时分析处理。
- 能够作为窗口函数使用的函数:①聚合函数(SUM、AVG、COUNT、MAX、MIN)。②RANK、DENSE_RANK、ROW_NUMBER等专用窗口函数。
- PARTITION BY子句并不具备GROUP BY子句的汇总功能。
- 通过PARTITION BY分组后的记录集合称为窗口。此处的窗口并非“窗户”的意思,而是代表范围。
- 窗口函数只写在SELECT子句中。在SELECT子句外使用窗口函数是没有意义的。
- 在DBMS内部,窗口函数是对WHERE子句或者GROUP BY子句处理后的“结果”进行的操作。
- 窗口函数指定范围:
ROWS n PRECENDING
(从自身往前n行,加上自己一共n+1行),ROWS n FOLLOWING
(从自身往后n行,加上自己一共n+1行),ROWS BETWEEN n PRECENDING AND n FOLLOWING
(自身前后n行,加上自己一共2n+1行)。 - OVER子句中的ORDER BY只是用来决定窗口函数按照什么样的顺序进行计算的,对结果的排列顺序并没有影响。
ROLLUP
可以同时得出合计和小计。会同时得出①GROUP BY()
②GROUP BY(colum1)
③GROUP BY(colum1,colum2)
…GROUP BY(colum1...column)
的汇总。- 使用
GROUPING
函数能够简单地分辨出原始数据中的NULL和超级分组记录中的NULL。 CUBE
函数是在ROLLUP
的基础上增加GROUP BY中的每个单独聚合键汇总结果。
《SQL基础教程》读书小记相关推荐
- 程序员思维训练思维导图
- 程序员思维修炼:如何从新手成为专家
在"职场跃迁工具:德雷福斯模型及应用2例"中,给大家分享了"德雷福斯模型": 这个模型,来自<程序员思维修炼>这本书: <程序员思维修炼> ...
- 大牛告诉你,只有突破程序员思维,才不会沦为码农!
过去我曾一直认为程序员是依靠他们的技术在编程,也是因为技术使得程序员的水平有高低之分,但随着我写代码的时间越来越长,也接触到更多的程序员,我渐渐发现程序员们其实是依靠他们所特有的程序员思维在进行编程的 ...
- 程序员思维是什么?程序员思维从哪里来?程序员思维到哪里去?
程序员思维是什么? 程序员思维从哪里来? 程序员思维到哪里去? 好吧,这是三个终极的问题.没有标准答案,也没有什么不标准的答案.我只是试图给出自己的一个思考的总结. 再解释程序员思维是什么问题这个问题 ...
- [IHS] No.2 程序员一生的读书计划
欢迎来到 Integ's Hack Show 第二期,今天我们来聊一聊:程序员一生的读书计划. 先来看下我列的书单: <Unix 编程艺术> <松本行弘的程序世界> <如 ...
- 程序员思维僵化_僵化趋势
程序员思维僵化 重点 (Top highlight) When I started this whole crazy ride, I was expecting it to die down righ ...
- java程序员进阶必读书单
以下是我推荐给Java开发者们的一些值得一看的好书,从java基础开始到高级,以及从高级进阶到架构等的书单. 基本都是经典之作,可以利用工作闲暇的时间,系统阅读. [外链图片转存失败,源站可能有防盗链 ...
- 程序员思维修炼读后感
<程序员思维修炼>读后感 程序员思维修炼的这本书,主要讲了程序员不同的职业阶段,以及常见思维误区,以及解决方案,给大家在各自工作中提供一些帮助,值得阅读. 通过本书的阅读,解决了我一个很重 ...
- 跳出程序员思维:如何应对上手英文工具站的几点误区
这次给大家带来程序员如何应对上手英文工具站的几点误区,帮助大家跳出程序员思维,一起出海赚美刀 ~ ----- 小小分割线 ----- 误区一:以为参加了几次对应项目训练营,就可以赚到美刀.这样想,往往 ...
- 高效能程序员的修炼 --读书笔记
高效能程序员的修炼 –读书笔记 这是我读完Jeff Atwood的<高效能程序员的修炼>这本书后的一些回顾, 我会根据这本书的章节依次写下对每章节的理解和认识. 高效能程序员的修炼 读书笔 ...
最新文章
- C++的STL 栈实现 判断栈的出栈顺序是否合理
- 消息队列面试经典十连问
- Essential C++中文版 前言
- ubuntu分屏软件_Ubuntu终端多窗口分屏Terminator
- Python筛选中文字符(跟网上其他可能不一样)
- ubuntu命令安装jdk
- 微软开源基于云的生理学研究工具
- Python爬虫利器一Requests库的用法
- loadrunner之socket协议脚本编写
- M1 mac 使用docker 安装mysql
- 松下plc驱动VF0变频器_2021厦门松下伺服马达回收现金回收
- Linux下替代grep高效文本搜索工具
- Django2.0——实现简易登陆、注册
- 去掉txt文本某些字符
- html什么是一级标题,一级标题是什么(论文一二三级标题范本)
- 收藏 | 堪称神器的42款Chrome插件
- 公众号代运营的价格一般是多少钱
- 【批量识别图片内容改名】如何批量识别图片中的文字并自动改名,如何根据图片上的文字内容重命名图片,批量的识别区域内容如何重命名改名,全部告诉你
- 买鞋买包包之——猪牛羊皮的特色与辨别
- html通过css来设置半透明背景
热门文章
- SVN revert命令
- 半监督学习+3D医疗图像检测 FocalMix
- CORS是什么(跨域)
- gstreamer不同的调度模式
- 多模态预训练模型CLIP:中文版本开放使用
- python 数据错位相减,上下两行相减
- 达州学计算机好的学校有哪些,达州市计算机专业职业学校有哪些
- “软盘、硬盘、磁盘和内存”的理解
- 集装箱港口智能化管理解决方案
- 无法更新计算机的启动设置安装,“windows 无法更新计算机的启动配置。安装无法继续”这样解决...