Update ch02: 基础查询与排序.md

This commit is contained in:
mba1398
2021-10-10 13:33:20 +08:00
committed by GitHub
parent 7be4f57339
commit 560f0f8bcb

View File

@@ -182,7 +182,7 @@ SELECT product_name, product_type, regist_date
AND regist_date = '2009-09-11'
OR regist_date = '2009-09-20';
```
错误的原因是**AND 运算符优先于 OR 运算符**想要优先执行OR运算可以使用**括号**
错误的原因是 **AND 运算符优先于 OR 运算符** 想要优先执行OR运算可以使用 **括号**
```sql
-- 通过使用括号让OR运算符先于AND运算符执行
SELECT product_name, product_type, regist_date
@@ -235,8 +235,7 @@ NULL的真值结果既不为真也不为假因为并不知道这样一个
### 2.1
编写一条SQL语句`product`(商品) 表中选取出“登记日期(`regist`)在2009年4月28日之后”的商品查询结果要包含 `product name``regist_date` 两列。
编写一条SQL语句`product`(商品) 表中选取出“登记日期(`regist_date`)在2009年4月28日之后”的商品查询结果要包含 `product name``regist_date` 两列。
### 2.2
@@ -264,7 +263,7 @@ SELECT *
### 2.3
代码清单2-222-2节中的SELECT语句能够从product表中取出“销售单价saleprice比进货单价purchase price高出500日元以上”的商品。请写出两条可以得到相同结果的SELECT语句。执行结果如下所示。
代码清单2-222-2节中的SELECT语句能够从 `product` 表中取出“销售单价(`sale_price`)比进货单价(`purchase_price`高出500日元以上”的商品。请写出两条可以得到相同结果的SELECT语句。执行结果如下所示。
```sql
product_name | sale_price | purchase_price
@@ -276,9 +275,9 @@ T恤衫 |   1000 | 500
### 2.4
请写出一条SELECT语句从product表中选取出满足“销售单价打九折之后利润高于100日元的办公用品和厨房用具”条件的记录。查询结果要包括product_name列、product_type列以及销售单价打九折之后的利润别名设定为profit
请写出一条SELECT语句 `product` 表中选取出满足“销售单价打九折之后利润高于 `100` 日元的办公用品和厨房用具”条件的记录。查询结果要包括 `product_name`列、`product_type` 列以及销售单价打九折之后的利润(别名设定为 `profit`)。
提示销售单价打九折可以通过saleprice列的值乘以0.9获得利润可以通过该值减去purchase_price列的值获得。
提示:销售单价打九折,可以通过 `sale_price` 列的值乘以0.9获得,利润可以通过该值减去 `purchase_price` 列的值获得。
# 2.4 对表进行聚合查询
@@ -335,7 +334,7 @@ SELECT SUM(sale_price), SUM(DISTINCT sale_price)
## 2.5.1 GROUP BY语句
之前使用聚合函数都是会整个表的数据进行处理当你想将进行分组汇总时将现有的数据按照某列来汇总统计GROUP BY可以帮助你
之前使用聚合函数都是会整个表的数据进行处理当你想将进行分组汇总时将现有的数据按照某列来汇总统计GROUP BY可以帮助你
```sql
SELECT <1>,<2>, <3>,
@@ -390,9 +389,9 @@ SELECT purchase_price, COUNT(*)
在使用聚合函数及GROUP BY子句时经常出现的错误有
1. 在聚合函数的SELECT子句中写了聚合健以外的列 使用COUNT等聚合函数时SELECT子句中如果出现列名只能是GROUP BY子句中指定的列名也就是聚合键
2. 在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
3. 在WHERE中使用聚合函数 原因是聚合函数的使用前提是结果集已经确定而WHERE还处于确定结果集的过程中所以相互矛盾会引发错误。 如果想指定条件可以在SELECTHAVING下面马上会讲以及ORDER BY子句中使用聚合函数。
1. 在聚合函数的SELECT子句中写了聚合健以外的列使用COUNT等聚合函数时SELECT子句中如果出现列名只能是GROUP BY子句中指定的列名也就是聚合键
2. 在GROUP BY子句中使用列的别名SELECT子句中可以通过AS来指定别名但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
3. 在WHERE中使用聚合函数原因是聚合函数的使用前提是结果集已经确定而WHERE还处于确定结果集的过程中所以相互矛盾会引发错误。 如果想指定条件可以在SELECTHAVING下面马上会讲以及ORDER BY子句中使用聚合函数。
# 2.6 为聚合结果指定条件
@@ -430,7 +429,7 @@ HAVING product_name = '圆珠笔';
## 2.7.1 ORDER BY
SQL中的执行结果是随机排列的当需要按照特定顺序排序时使用**ORDER BY**子句。
SQL中的执行结果是随机排列的当需要按照特定顺序排序时使用 **ORDER BY** 子句。
```sql
SELECT <1>, <2>, <3>,