Spark SQL----DROP语句
一、DROP DATABASE
1.1 描述
删除数据库,并从文件系统中删除与该数据库关联的目录。如果数据库在系统中不存在,将抛出异常。
1.2 语法
DROP { DATABASE | SCHEMA } [ IF EXISTS ] dbname [ RESTRICT | CASCADE ]
1.3 参数
- DATABASE | SCHEMA
DATABASE和SCHEMA的意思是一样的,两者都可以使用。 - IF EXISTS
如果指定,则当数据库不存在时不会引发异常。 - RESTRICT
如果指定,将限制删除非空数据库,并且在默认情况下处于启用状态。 - CASCADE
如果指定,将删除所有关联的表和函数。
1.4 例子
-- Create `inventory_db` Database
CREATE DATABASE inventory_db COMMENT 'This database is used to maintain Inventory';
-- Drop the database and it's tables
DROP DATABASE inventory_db CASCADE;
-- Drop the database using IF EXISTS
DROP DATABASE IF EXISTS inventory_db CASCADE;
二、DROP FUNCTION
2.1 描述
DROP FUNCTION语句删除临时或用户定义函数(UDF)。如果函数不存在,将抛出异常。
2.2 语法
DROP [ TEMPORARY ] FUNCTION [ IF EXISTS ] function_name
2.3 参数
- function_name
指定现有函数的名称。函数名称可以选择性地用数据库名称限定。
语法:[database_name.]函数名 - TEMPORARY
应用于删除TEMPORARY函数。 - IF EXISTS
如果指定,则在函数不存在时不会引发异常。
2.4 例子
-- Create a permanent function `test_avg`
CREATE FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';
-- List user functions
SHOW USER FUNCTIONS;
+----------------+
| function|
+----------------+
|default.test_avg|
+----------------+
-- Create Temporary function `test_avg`
CREATE TEMPORARY FUNCTION test_avg AS
'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';
-- List user functions
SHOW USER FUNCTIONS;
+----------------+
| function|
+----------------+
|default.test_avg|
| test_avg|
+----------------+
-- Drop Permanent function
DROP FUNCTION test_avg;
-- Try to drop Permanent function which is not present
DROP FUNCTION test_avg;
Error: Error running query:
org.apache.spark.sql.catalyst.analysis.NoSuchPermanentFunctionException:
Function 'default.test_avg' not found in database 'default'; (state=,code=0)
-- List the functions after dropping, it should list only temporary function
SHOW USER FUNCTIONS;
+--------+
|function|
+--------+
|test_avg|
+--------+
-- Drop Temporary function
DROP TEMPORARY FUNCTION IF EXISTS test_avg;
三、DROP TABLE
3.1 描述
DROP TABLE删除表,并从文件系统中删除与表关联的目录(如果表不是EXTERNAL table)。如果表不存在,则抛出异常。如果是外部表,则只从metastore数据库中删除关联的元数据信息。如果表是缓存的,则该命令解除对表及其所有从属项的缓存。
3.2 语法
DROP TABLE [ IF EXISTS ] table_identifier [ PURGE ]
3.3 参数
- IF EXISTS
如果指定,则当表不存在时不会引发异常。 - table_identifier
指定要删除的表名称。表名称可以选择性地使用数据库名称进行限定。
语法:[ database_name. ] table_name - PURGE
如果指定,则在删除表时完全清除表跳过trash(注意:在Hive Metastore 0.14.0及更高版本中提供PURGE)。
3.4 例子
-- Assumes a table named `employeetable` exists.
DROP TABLE employeetable;
-- Assumes a table named `employeetable` exists in the `userdb` database
DROP TABLE userdb.employeetable;
-- Assumes a table named `employeetable` does not exist.
-- Throws exception
DROP TABLE employeetable;
Error: org.apache.spark.sql.AnalysisException: Table or view not found: employeetable;
(state=,code=0)
-- Assumes a table named `employeetable` does not exist,Try with IF EXISTS
-- this time it will not throw exception
DROP TABLE IF EXISTS employeetable;
-- Completely purge the table skipping trash.
DROP TABLE employeetable PURGE;
四、DROP VIEW
4.1 描述
DROP VIEW从catalog中删除与指定视图关联的元数据。
4.2 语法
DROP VIEW [ IF EXISTS ] view_identifier
4.3 参数
- IF EXISTS
如果指定,则在视图不存在时不会引发异常。 - view_identifier
指定要删除的视图名称。视图名称可以选择性地使用数据库名称进行限定。
语法:[ database_name. ] view_name
4.4 例子
-- Assumes a view named `employeeView` exists.
DROP VIEW employeeView;
-- Assumes a view named `employeeView` exists in the `userdb` database
DROP VIEW userdb.employeeView;
-- Assumes a view named `employeeView` does not exist.
-- Throws exception
DROP VIEW employeeView;
Error: org.apache.spark.sql.AnalysisException: Table or view not found: employeeView;
(state=,code=0)
-- Assumes a view named `employeeView` does not exist,Try with IF EXISTS
-- this time it will not throw exception
DROP VIEW IF EXISTS employeeView;