手记

视图查询

什么是视图

视图是虚拟的表。与包含真实数据的表不一样,视图只是基于其他表的查询结果集。
创建视图之后,可以用与表基本相同的方式使用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表进行查询。

创建视图

Students表:

| id  | class_id | name | gender | score |
| --- | -------- | ---- | ------ | ----- |
| 1   | 1        | 小明 | M      | 90    |
| 2   | 1        | 小红 | F      | 95    |
| 3   | 1        | 小军 | M      | 88    |
| 4   | 1        | 小米 | F      | 73    |
| 5   | 2        | 小白 | F      | 81    |
| 6   | 2        | 小兵 | M      | 55    |
| 7   | 2        | 小林 | M      | 85    |
| 8   | 3        | 小新 | F      | 91    |
| 9   | 3        | 小王 | M      | 89    |
| 10  | 3        | 小丽 | F      | 88    |

Classes表:

| id | name |
|----|------|
| 1  | 一班  |
| 2  | 二班  |
| 3  | 三班  |
| 4  | 四班  |

通过CREATE VIEW语句来创建视图:

CREATE VIEW Grade_ranking AS
SELECT
  C.name class_name,
  S.name,
  S.score
FROM
  Students S
  INNER JOIN Classes C ON S.class_id = C.id
ORDER BY
  S.score DESC;
  
SELECT class_name, name, score FROM Grade_ranking WHERE score > 90;

+------------+-------+-------+
| class_name | name  | score |
+------------+-------+-------+
| 一班       | 小红  | 95    |
| 三班       | 小新  | 91    |
+------------+-------+-------+

首先创建了一个名为Grade_ranking的视图,它联结两个表,返回class_name、name、score的列表,然后从视图中检索特定数据。
利用视图,可一次性编写基础的SQL,然后根据需要多次使用。

0人推荐
随时随地看视频
慕课网APP