本章介绍如何在HCatalog中创建和管理视图.使用 CREATE VIEW 语句创建数据库视图.可以从单个表,多个表或其他视图创建视图.
要创建视图,用户必须根据具体实现具有适当的系统权限.
创建视图创建具有给定名称的视图.如果已存在具有相同名称的表或视图,则会引发错误.您可以使用 IF NOT EXISTS 跳过错误.
如果没有提供列名,视图列的名称将自动从
注意 : 如果SELECT包含无别名的标量表达式,如x + y,则生成的视图列名称将以_C0,_C1等形式生成.
重命名列时,列注释可以也提供.注释不会自动从基础列继承.
如果视图的定义SELECT表达式无效,则CREATE VIEW语句将失败.
CREATE VIEW [IF NOT EXISTS] [db_name.] view_name [(column_name [COMMENT column_comment],...) ] [COMMENT view_comment] [TBLPROPERTIES(property_name = property_value,...)] AS SELECT ...;
以下是员工表数据.现在让我们看看如何创建名为 Emp_Deg_View 的视图,其中包含薪水大于35,000的员工的字段ID,名称,名称和工资.
+------+-------------+--------+-------------------+-------+ | ID | Name | Salary | Designation | Dept | +------+-------------+--------+-------------------+-------+ | 1201 | Gopal | 45000 | Technical manager | TP | | 1202 | Manisha | 45000 | Proofreader | PR | | 1203 | Masthanvali | 30000 | Technical writer | TP | | 1204 | Kiran | 40000 | Hr Admin | HR | | 1205 | Kranthi | 30000 | Op Admin | Admin | +------+-------------+--------+-------------------+-------+
以下是根据上述给定数据创建视图的命令.
./hcat –e "CREATE VIEW Emp_Deg_View (salary COMMENT ' salary more than 35,000') AS SELECT id, name, salary, designation FROM employee WHERE salary ≥ 35000;"
OK Time taken: 5.3 seconds
DROP VIEW删除指定视图的元数据.删除其他视图引用的视图时,不会给出警告(依赖视图悬空为无效,必须由用户删除或重新创建).
DROP VIEW [IF EXISTS] view_name;
以下命令用于删除名为 Emp_Deg_View 的视图.
DROP VIEW Emp_Deg_View;