diff --git a/ch02: 基础查询与排序.md b/ch02: 基础查询与排序.md index 923e9c3..46b091e 100644 --- a/ch02: 基础查询与排序.md +++ b/ch02: 基础查询与排序.md @@ -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>, ……