SQL基础教程读书笔记-1

查询基础

2.2 算数运算符和比较运算符

2.2.1算数运算符

+ - * /

需要注意NULL

  • 5 + NULL
  • 10 - NULL
  • 1 * NULL
  • 4 / NULL
  • NULL / 9
  • NULL / 0
    以上运算结果全都是NULL,实际上所有包含NULL的运算,结果肯定是NULL。

2.2.2比较运算符

1.

运算符 含义
= 和~相等
<> 和~不相等
>= 大于等于~
> 大于~
< 小于~
<= 小于等于~

2.对字符串使用不等号时的注意事项
字符串类型的数据原则上按照字典进行排序
例如:
11 > 2
但是 ‘11‘<‘2‘
3.不能对NULL使用比较运算符
希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符;希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL 运算符。

2.2.3逻辑运算符

1.SQL中的逻辑运算包含对真、假和不确定进行运算的三值逻辑。

运算符 含义
NOT 否定某一条件
AND 并且
OR

2.AND优先级高于OR,优先执行OR可以使用括号。
3.三值逻辑中的AND和OR真值表
AND

P Q P AND Q
不确定 不确定
不确定
不确定 不确定
不确定
不确定 不确定 不确定

OR

P Q P OR Q
不确定
不确定 不确定
不确定
不确定 不确定
不确定 不确定 不确定

3.聚合与排序

3.1 对表进行聚合查询

1.聚合函数(集合函数):计算之前已经将NULL排除在外。

函数 含义
COUNT 计算表中的记录数(行数)
SUM 计算表中数值列中数据的合计值
AVG 计算表中数值列中数据的平均值
MAX 求出表中任意列中数据的最大值
MIN 求出表中任意列中数据的最小值

2.COUNT函数的结果根据参数的不同而不同
COUNT(*)包含NULL的数据行数
COUNT(<列名>)NULL之外的数据行数
3.
MAX/MIN函数几乎适用于所有数据类型的列
SUM/AVG只适用于数值类型的列
4.使用聚合函数删除重复值
COUNT( DISTINCT *)

3.2对表进行分组

1.GROUP BY子句

SELECT <列名1>,<列名2>,<列名3>,...

FROM <表明>

GROUP BY <列名1>,<列名2>,<列名3>,...;
聚合键中包含NULL时,在结果中会以"不确定"行(空行)的形式表现出来。
2.与聚合函数和GROUP BY子句有关的常见错误
常见错误①——在SELECT子句中书写了多余的列(MYSQL 支持)
使用聚合函数时,SELECT子句只能存在以下三种元素

  • 常数
  • 聚合函数
  • GROUP BY 子句指定的列名(也就是聚合键)

常见错误②——在GROUP BY子句中写了列的别名
下列语句会发生执行错误:
SELECT product_type AS pt,count(*)
FROM product
GROUP BY pt;
这是因为SQL在DBMS中的执行顺序造成的——SELECT子句在GROUP BY子句之后执行。

常见错误③——GROUP BY子句结果能排序吗
GROUP BY 子句结果的显示是无序的。

常见错误④——在WHERE子句中使用聚合函数
只有SELECT子句和HAVING子句(以及ORDER BY子句)中能够使用聚合函数。

3.3为聚合结果指定条件

1.HAVING子句为集合(组)指定条件。
HAVING可以使用3中要素:
常数
聚合函数
GROUP BY子句中指定的列名(聚合键)

2.相对于HAVING子句,更适合写在WHERE 子句中的条件
聚合键所对应的条件不应写在HAVING子句当中,而应写在WHERE子句中。
原因:
①:WHERE子句 = 指定行所对应的条件;
HAVING子句 = 指定组所对应的条件
②:WHERE执行速度快,使用COUNT函数等对表中数据进行聚合操作时,DBMS内部会进行排序处理,尽可能减少排序的行数,才能增加处理速度。WHERE在排序前过滤,减少了排序行数。HAVING在排序之后进行过滤。

3.4 对查询结果进行排序

1.使用ORDER BY对查询结果进行排序。
2.在ORDER BY 子句中列名的后面使用关键字ASC 可以进行升序排序;使用DESC关键字可以进行降序排序。
3.ORDER BY子句中可以使用多个排序键。
4.排序键包含NULL时,会在开头或末尾进行汇总。
5.在ORDER BY子句中可以使用SELECT子句中定义的别名。这是因为SELECT的执行顺序:
FROM——>WHERE——>GROUP BY ——>HAVING ——>SELECT ——>ORDER BY
6.在ORDER BY子句中可以使用SELECT子句中未使用的列和聚合函数。

时间: 2024-10-29 20:12:28

SQL基础教程读书笔记-1的相关文章

SQL Server2012 T-SQL基础教程--读书笔记(5-7章)

SQL Server2012 T-SQL基础教程--读书笔记(5-7章) SqlServer T-SQL 示例数据库:点我 Chapter 05 表表达式 5.1 派生表 5.1.1 分配列别名 5.1.2 使用参数 5.1.3 嵌套 5.1.4 多个引用 5.2 公用表表达式 5.2.1 分别列别名 5.2.2 使用参数 5.2.3 定义多个CTE 5.2.4 CTE的多次引用 5.2.5 递归CTE 5.3 视图 5.3.1 视图和ORDER BY 子句 5.3.2 视图选项 5.4 内嵌表

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1.2 INSERT SELECT 语句 8.1.3 INSERT EXEC 语句 8.1.4 SELECT INTO 语句 8.1.5 BULK INSERT 语句 8.1.6 标识列属性和序列对象 8.1.6.1 标识列属性 8.1.6.2 序列对象 8.2 删除数据 8.2.1 DELETE 语

SQL Server2012 T-SQL基础教程--读书笔记

SQL Server2012 T-SQL基础教程--读书笔记 SqlServer Chapter 01 T-SQL 查询和编程背景 1.3 创建表和定义数据的完整性 1.3.1 创建表 1.3.2 定义数据的完整性 1. 主键约束 2. 唯一约束 3. 外键束约 4. CHECK约束 5. 默认约束 Chapter 02 单表查询 2.1 SELECT 语句元素 2.1.7 TOP和OFFSET-FETCH 1. TOP筛选 2. OFFSET-FETCH 2.1.8 开窗函数速览 2.2 谓词

【索引】Objective-C基础教程-读书笔记

第1章 启程 http://www.cnblogs.com/duxiuxing/p/5492219.html 第2章 对C的扩展 第3章  面向对象编程的基础知识 第4章 继承 第5章 复合 第6章 源文件组织 第7章 深入了解Xcode 第8章 Foundation Kit介绍 第9章 内存管理 第10章 对象初始化 第11章 属性 第12章 类别 第13章 协议 第14章 代码块和并发性 第15章 AppKit简介 第16章 UIKit简介 第17章 文件加载与保存 第18章 健/值编码 第

Python基础教程读书笔记

1.字符串的定义,单双引号一样,可以使用转义\ 2.拼接字符串str1+str2 3.转换成字符串 str(1000000000000000L)->'1000000000000000' repr(100000000000000000L)->'100000000000000000L' repr是会保留原值的一个操作 4.raw_input("valus :") 一般接收用户输入使用此方法 5.多行字符串或长字符串可以使用'''val'''或"""

HTML5与CSS3基础教程读书笔记 2015/11/28

第七章 1.css分类 (1)控制基本格式的属性:font-size和color (2)控制布局的属性:position和float (3)控制在哪里换页的打印控制元素 (4)控制项目显示和消失的动态属性 (5)创建下拉列表和其他交互性组件 2.css3的新特性 圆角.阴影效果.文字阴影.自定义字体.旋转文本.半透明背景颜色.多图像背景.渐变等 3.基本格式 注意,上一行没写完的换到下一行要空连个字符 注:h1叫做选择器(h1和{之间最好用一个空格隔开),{}之间叫做声明块 提示:可以添加空格和

Python基础教程---读书笔记三

原文链接:http://www.faceye.net/search/144443.html 1. 所有的标准序列操作都使用于字符串,记住字符串不可改变. 2. 字符串格式化:标记转换说明符(%),如果字符串本身包含%,用%%代替. 3. 字符串格式化转换标志:-表示左对齐:+表示在转换值前加正负号:""(空白字符)表示正数之前保留空格:0表示转换值若位数不够用0填充. 4. find(str, begin_index, end_index): 返回子串所在位置最左端索引,没有找到返回-

Jquery基础教程读书笔记一

一.选择元素 1.理解DOM  理解父元素.子元素.同级元素....可以利用火狐浏览器firebug辅助查看. 2.使用$()函数 有3种基本的选择符:标签名.ID.类. 实例:标签名:css中p{}写法 Jquery可以用$("p") 取得文档中所有的段落. Id : css中 #some-id{}写法 Jquery可以用$("#some-id") 取得文档中ID为some-id的一个元素. 类 : css中.some-class{}写法 $(".som

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据 XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你需要一个查询处理引擎. SQL Server 数据库通过XML数据类型方法的T-SQL 语句来处理XQuery. SQL Server 并不支持所有的X