1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Task02:SQL基础查询与排序-天池龙珠计划SQL训练营

Task02:SQL基础查询与排序-天池龙珠计划SQL训练营

时间:2022-11-19 10:22:09

相关推荐

Task02:SQL基础查询与排序-天池龙珠计划SQL训练营

Task02:SQL基础查询与排序

一、SELECT语句基础

1.1 从表中选取数据

SELECT语句

1.2从表中选取符合条件的数据

WHERE语句

1.3 相关法则

星号(*)代表全部列的意思。SQL中可以随意使用换行符,不影响语句执行(但不可插入空行)。设定汉语别名时需要使用双引号(")括起来。在SELECT语句中使用DISTINCT可以删除重复行。注释是SQL语句中用来标识说明或者注意事项的部分。分为1行注释"-- "和多行注释两种"/* */"。

二、算术运算符和比较运算符

2.1 算术运算符

2.2 比较运算符

2.3 常用法则

SELECT子句中可以使用常数或者表达式。使用比较运算符时一定要注意不等号和等号的位置。字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。

三、逻辑运算符

3.1 NOT运算符

3.2 AND运算符和OR运算符

3.3 通过括号优先处理

3.4 真值表

3.5 含有NULL时的真值

NULL的真值结果既不为真,也不为假,因为并不知道这样一个值。

那该如何表示呢?

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

三值逻辑下的AND和OR真值表为:

四、对表进行聚合查询

4.1 聚合函数

SQL中用于汇总的函数叫做聚合函数。以下五个是最常用的聚合函数:

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

4.2 使用聚合函数删除重复值

4.3 常用法则

COUNT函数的结果根据参数的不同而不同。COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。聚合函数会将NULL排除在外。但COUNT(*)例外,并不会排除NULL。MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列。想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT。在聚合函数的参数中使用DISTINCT,可以删除重复数据。

五、对表进行分组

5.1 GROUP BY语句

在 GROUP BY 子句中指定的列称为聚合键或者分组列

5.2 聚合键中包含NULL时

5.3 GROUP BY书写位置

5.4 在WHERE子句中使用GROUP BY

5.5 常见错误

在使用聚合函数及GROUP BY子句时,经常出现的错误有:

在聚合函数的SELECT子句中写了聚合健以外的列 使用COUNT等聚合函数时,SELECT子句中如果出现列名,只能是GROUP BY子句中指定的列名(也就是聚合键)。在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。在WHERE中使用聚合函数 原因是聚合函数的使用前提是结果集已经确定,而WHERE还处于确定结果集的过程中,所以相互矛盾会引发错误。 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及ORDER BY子句中使用聚合函数。

六、为聚合结果指定条件

6.1 用HAVING得到特定分组

6.2 HAVING特点

七、对查询结果进行排序

7.1 ORDER BY

默认为升序排列,降序排列为DESC

7.2 ORDER BY中列名可使用别名

前文讲GROUP BY中提到,GROUP BY 子句中不能使用SELECT 子句中定义的别名,但是在 ORDER BY 子句中却可以使用别名。为什么在GROUP BY中不可以而在ORDER BY中可以呢?

这是因为SQL在使用 HAVING 子句时 SELECT 语句的执行****顺序为:

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

其中SELECT的执行顺序在 GROUP BY 子句之后,ORDER BY 子句之前。也就是说,当在ORDER BY中使用别名时,已经知道了SELECT设置的别名存在,但是在GROUP BY中使用别名时还不知道别名的存在,所以ORDER BY中可以使用别名,但是在GROUP BY中不能使用别名****。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。