Update ch02: 基础查询与排序.md
This commit is contained in:
@@ -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-22(2-2节)中的SELECT语句能够从product表中取出“销售单价(saleprice)比进货单价(purchase price)高出500日元以上”的商品。请写出两条可以得到相同结果的SELECT语句。执行结果如下所示。
|
||||
代码清单2-22(2-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还处于确定结果集的过程中,所以相互矛盾会引发错误。 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及ORDER BY子句中使用聚合函数。
|
||||
1. 在聚合函数的SELECT子句中写了聚合健以外的列使用COUNT等聚合函数时,SELECT子句中如果出现列名,只能是GROUP BY子句中指定的列名(也就是聚合键)。
|
||||
2. 在GROUP BY子句中使用列的别名SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
|
||||
3. 在WHERE中使用聚合函数原因是聚合函数的使用前提是结果集已经确定,而WHERE还处于确定结果集的过程中,所以相互矛盾会引发错误。 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及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>, ……
|
||||
|
||||
Reference in New Issue
Block a user