相关文章推荐
绅士的松鼠  ·  window.open('/new-wind ...·  4 周前    · 
性感的小蝌蚪  ·  C#在DateTime.ParseExact ...·  3 月前    · 
发呆的石榴  ·  HttpClient之URI_httpcli ...·  11 月前    · 
笑点低的肉夹馍  ·  SQLDescribeCol ...·  1 年前    · 
MySQL入门 视图

MySQL入门 视图

3 年前 · 来自专栏 每日总结之数据分析

视图的表格定义在创建的时候被定格,本身并不包含数据。作为一个select语句保存在数据字典里面。当数据发生更新的时候,视图也会发生变化。视图可以用来提高数据处理工作的效率。

需要注意的是:select 语句 from 中不能有subquery子查询语句。select不能使用变量。存储程序中select不能含有参数和局部变量。视图是基于其他表格创建的,改表格必须存在,在创建视图后删除的话,访问视图会出现错误。

基表:用来创建视图的表叫做基表。


例子:

首先两个表格:顾客信息表和订单信息表

利用inner join提取必要信息:

SELECT customerName, checkNumber, paymentDate, amount

FROM customers

INNERJOIN payments

USING (customerNumber);

下次要获取相同的信息,需要写相同的查询语句。一种方法是将查询保存到.txt或.sql文件中,以便以后可以从MySQL Workbench或任何其他MySQL客户端工具打开并执行查询。更好的方法是将查询保存在数据库服务器中并为其分配名称。 此命名查询称为数据库视图,或简称为视图。根据定义,视图是存储在数据库目录中的命名查询,运用语句 create view:

一旦执行了CREATE VIEW语句,MySQL将创建视图并将其存储在数据库中。

现在可以在SQL语句中将视图引用为表格。 例如可以使用SELECT语句从customerPayments视图中查询数据:

SELECT * FROM customerPayments;

语法非常简单。请注意,视图并不实际存储数据。 当针对视图发出SELECT语句时,MySQL执行视图定义中指定的基础查询并返回结果集。 因此,有时将视图称为虚拟表。MySQL允许基于SELECT语句创建视图,该语句从一个或多个表中检索数据。 此图说明了基于多个表的列的视图:

此外,MySQL甚至允许创建不引用任何表的视图。 但是很少会在实践中发现这种观点。

例如通过执行以下查询来创建一个名为daysofweek的视图,该视图每周返回7天:

可以从daysofweek视图中查询数据,如下所示:

SELECT * FROM daysofweek;

MySQL视图的优点

1)简化复杂的查询: 视图有助于简化复杂的查询。如果有任何经常使用的复杂查询,则可以基于该查询创建一个视图,以便可以通过使用简单的SELECT语句来引用该视图,而不必再次键入查询。

2)使业务逻辑一致: 假设必须在每个查询中重复编写相同的公式。或者有一个具有复杂业务逻辑的查询。为了使此逻辑在查询中保持一致,可以使用视图来存储计算并隐藏复杂性。

3)添加额外的安全层: 表格可能会暴露很多数据,包括敏感数据,例如个人和银行信息。通过使用视图和特权,可以通过仅向用户公开必要的数据来限制用户可以访问的数据。例如,表中的员工可能包含SSN和地址信息,这些信息只能由HR部门访问。要将常规信息(例如名字,姓氏和性别)显示给General Administration(GA)部门,可以基于这些列创建一个视图,并向该GA部门的用户授予该视图的权限,而不是授予表的全部雇员。

4)启用向后兼容:在旧系统中,视图可以实现向后兼容。假设想将一个大表标准化为许多较小的表。而且您不想影响引用该表的当前应用程序。在这种情况下,可以基于新表创建一个名称与该表相同的视图,以便所有应用程序都可以像引用表一样引用该视图。视图和表不能具有相同的名称,因此需要先删除表,然后再创建名称与已删除表相同的视图。

基础语句训练:

发布于 2020-06-27 10:27

文章被以下专栏收录

    每日总结之数据分析

    每日总结之数据分析

    积累学习到的数据分析知识汇总