我们如何创建MySQL视图?
MySQL视图是使用CREATE VIEW语句创建的。可以从单个表,多个表或另一个视图创建视图。我们知道,要创建视图,用户必须根据特定的实现具有适当的系统特权。
基本的 CREATE VIEW语法如下-
语法
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]
这里,
创建视图- 此语句创建一个新视图。
View_name- view_name是视图的名称。视图始终属于数据库。默认情况下,在当前使用的数据库中创建一个新视图。
Select_statement- select_statement是一个SELECT语句,并提供视图的定义。Select_statement可以从基本表或其他视图中选择数据。
Column_list- column_list部分是可选的。它在视图名称之后的视图列中提供了名称列,其中名称必须是唯一的。column_list中的名称数必须与SELECT语句检索的列数相同。如果要给视图列使用其他名称,可以通过在选择列表中添加[AS name]子句来实现。
OR REPLACE-如果在CREATE VIEW语句中添加了可选的OR REPLACE子句,则CREATE VIEW语句将替换现有视图并创建一个新视图。如果该视图不存在,则CREATE VIEW与CREATE或REPLACE VIEW相同。
ALGORITHM- ALGORITHM子句是可选的,它影响MySQL处理视图的方式。算法采用三个值:MERGE,TEMPTABLE或UNDEFINED。默认算法为UNDEFINED。
[DEFINER = {用户| CURRENT_USER}] [SQL SECURITY {DEFINER | INVOKER} ]- DEFINER和SQL SECURITY子句指定在视图调用时检查访问权限时要使用的安全上下文。如果指定DEFINER子句,则以下规则确定合法的DEFINER用户值-
如果您没有SUPER特权,则唯一的合法用户值是您自己的帐户,并且不能将定义程序设置为其他帐户。
如果您具有SUPER特权,则可以指定任何语法上合法的帐户名。
在使用SQL SECURITY DEFINER特征定义的存储例程中,CURRENT_USER返回该例程的DEFINER值。如果视图定义包含CURRENT_USER的DEFINER值,则这也会影响在此例程中定义的视图。
8. [与[级联| LOCAL] CHECK OPTION] – 可以为可更新视图提供WITH CHECK OPTION子句,以防止对select_statement中WHERE子句为true的那些行进行插入或更新。在用于可更新视图的WITH CHECK OPTION子句中,LOCAL和CASCADED关键字确定根据另一个视图定义该视图时检查测试的范围。LOCAL关键字仅将CHECK OPTION限制为所定义的视图。CASCADED也会评估基础视图的检查。如果没有给出任何关键字,则默认值为CASCADED。
示例
在此示例中,我们在表“ Customers”上创建名为First_View的视图,其数据如下所示:
mysql> Select * from Customers;+-------------+----------+
| Customer_Id | Name |
+-------------+----------+
| 1 | Rahul |
| 2 | Yashpal |
| 3 | Gaurav |
| 4 | Virender |
+-------------+----------+
4 rows in set (1.30 sec)
mysql> Create view first_view AS SELECT * FROM Customers;
现在,如果我们将使用视图的名称运行查询,那么我们将从其创建表中获取详细信息。
mysql> Select * from first_view;+-------------+----------+
| Customer_Id | Name |
+-------------+----------+
| 1 | Rahul |
| 2 | Yashpal |
| 3 | Gaurav |
| 4 | Virender |
+-------------+----------+
4 rows in set (0.13 sec)
以上是 我们如何创建MySQL视图? 的全部内容, 来源链接: utcz.com/z/345355.html