Update ch03: 复杂一点的查询.md

This commit is contained in:
mba1398
2021-08-13 22:38:50 +08:00
committed by GitHub
parent d75321c4f5
commit 5e7e2ddf2f

View File

@@ -18,7 +18,7 @@ SELECT stu_name FROM view_students_info;
《*sql**基础**教程**第2版*》用一句话非常凝练的概括了视图与表的区别---“是否保存了实际的数据”。所以视图并不是数据库真实存储的数据表,它可以看作是一个窗口,通过这个窗口我们可以看到数据库表中真实存在的数据。所以我们要区别视图和数据表的本质,即视图是基于真实表的一张虚拟的表,其数据来源均建立在真实表的基础上。
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.01view.png)
![图片](./img/ch03/ch03.01view.png)
*图片来源《sql基础教程第2版》*
@@ -46,7 +46,7 @@ CREATE VIEW <视图名称>(<列名1>,<列名2>,...) AS <SELECT语句>
视图不仅可以基于真实表,我们也可以在视图的基础上继续创建视图。
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.02view2.png)
![图片](./img/ch03/ch03.02view2.png)
*图片来源《sql基础教程第2版》*
@@ -81,7 +81,7 @@ SELECT product_type, COUNT(*)
```
创建的视图如下图所示:
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.03view3.png)
![图片](./img/ch03/ch03.03view3.png)
* 基于多表的视图
@@ -98,7 +98,7 @@ SELECT product_type, sale_price, shop_name
```
创建的视图如下图所示
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.04view4.png)
![图片](./img/ch03/ch03.04view4.png)
我们可以在这个视图的基础上进行查询
@@ -110,7 +110,7 @@ SELECT sale_price, shop_name
```
查询结果为:
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.05result.png)
![图片](./img/ch03/ch03.05result.png)
## 3.1.5 如何修改视图结构
@@ -136,7 +136,7 @@ ALTER VIEW productSum
```
此时productSum视图内容如下图所示
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.06productsum.png)
![图片](./img/ch03/ch03.06productsum.png)
## 3.1.6 如何更新视图内容
@@ -165,11 +165,11 @@ UPDATE productsum
```
此时我们再查看productSum视图可以发现数据已经更新了
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.07productsum2.png)
![图片](./img/ch03/ch03.07productsum2.png)
此时观察原表也可以发现数据也被更新了
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.08productsumsrc.png)
![图片](./img/ch03/ch03.08productsumsrc.png)
不知道大家看到这个结果会不会有疑问刚才修改视图的时候是设置product_type='办公用品'的商品的sale_price=5000为什么原表的数据只有一条做了修改呢
@@ -293,7 +293,7 @@ SELECT product_type, product_name, sale_price
```
你能理解这个例子在做什么操作么?先来看一下这个例子的执行结果
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.09case.png)
![图片](./img/ch03/ch03.09case.png)
通过上面的例子我们大概可以猜到吗,关联子查询就是通过一些标志将内外两层的查询连接起来起到过滤数据的目的,接下来我们就一起看一下关联子查询的具体内容吧。
@@ -580,7 +580,7 @@ LOWER 函数只能针对英文字母使用,它会将参数中的字符串全
使用 SUBSTRING 函数 可以截取出字符串中的一部分字符串。截取的起始位置从字符串最左侧开始计算索引值起始为1。
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.10function.png)
![图片](./img/ch03/ch03.10function.png)
* **扩展内容SUBSTRING_INDEX -- 字符串按索引截取**
@@ -1338,11 +1338,11 @@ SELECT SUM(CASE WHEN product_type = '衣服' THEN sale_price ELSE 0 END) AS sum_
假设有如下图表的结构
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.11casewhen1.png)
![图片](./img/ch03/ch03.11casewhen1.png)
计划得到如下的图表结构
![图片](https://github.com/datawhalechina/team-learning-sql/blob/main/img/ch03/ch03.12casewhen2.png)
![图片](./img/ch03/ch03.12casewhen2.png)
聚合函数 + CASE WHEN 表达式即可实现该转换