freeCodeCamp/guide/chinese/sql/sql-create-view-statement/index.md

78 lines
3.6 KiB
Markdown
Raw Normal View History

---
title: SQL Create View Statement
localeTitle: SQL创建视图语句
---
## SQL创建视图语句
### 什么是观点?
View是一个数据库对象它呈现一个或多个表中存在的数据。视图以与表类似的方式使用但它们不包含任何数据。它们只是“指向”其他地方存在的数据例如表或视图
### 我们为什么喜欢他们?
* 视图是限制所呈现数据的一种方式。例如,人力资源部门数据被过滤以仅呈现非敏感信息。在这种情况下,敏感信息可以是社会安全号码,员工性别,支付率,家庭住址等。
* 跨多个表的复杂数据可以组合成一个“视图”。这可以使您的业务分析师和程序员的工作更轻松。
### 重要安全提示
* 视图由系统管理。当更改,添加或更新相关表中的数据时,系统将更新视图。我们只在需要管理系统资源的使用时才使用它们。
* 在MySQL中创建视图后对表设计即新列或删除列的更改不会在视图本身中更新。必须更新或重新创建视图。
* 视图是四种标准数据库对象类型之一。其他是表,存储过程和函数。
* 视图通常可以像处理表一样处理,但是当视图包含多个表时,更新会受到限制或不可用。
* 关于视图的许多其他详细信息超出了本入门指南的范围。花时间阅读数据库管理员手册享受这个功能强大的SQL对象。
### 创建视图语句的语法MySQL
```sql
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
```
_本指南将涵盖声明的这一部分......_
```sql
CREATE
VIEW view_name [(column_list)]
AS select_statement
```
### 从学生表创建示例视图
笔记:
* 视图的名称末尾有一个“v”。建议视图名称表明它是某种方式的视图使程序员和数据库管理员的工作更轻松。您的IT商店应该有自己的命名对象规则。
* 视图中的列受到WHERE子句的SELECT和数据行的限制。
* 由于名称中的“ - ”,视图名称周围的“\`”字符是必需的。 MySQL报告没有它们的错误。
```sql
create view `programming-students-v` as
select FullName, programOfStudy
from student
where programOfStudy = 'Programming';
select * from `programming-students-v`;
```
![图像-1](https://github.com/SteveChevalier/guide-images/blob/master/create-view-statement01.JPG?raw=true)
### 使用View组合来自多个表的数据的示例
学生人口统计表已添加到数据库中以演示此用法。该视图将组合这些表。
笔记:
* 要“连接”表表必须具有唯一标识每一行的字段通常是主键。在这种情况下它是学生ID。 (有关[SQL连接](../sql-joins/index.md)指南的更多信息。)
* 注意每个表的“别名”学生为“s”学生联系为“sc”。这是一种缩短表名的工具可以更轻松地识别正在使用的表。它比重复输入长表名更容易。在此示例中它是必需的因为studentID在两个表中都是相同的列名称并且系统将显示“模糊列名称错误”而不指定要使用的表。
![图像-1](https://github.com/SteveChevalier/guide-images/blob/master/create-view-statement02.JPG?raw=true)
_与所有这些事情一样观点还有很多。请参阅您的数据库管理员手册并自己尝试不同的选项。_