DROP 语句

DROP 语句可用于删除指定的 catalog,也可用于从当前或指定的 Catalog 中删除一个已经注册的表、视图或函数。

Flink SQL 目前支持以下 DROP 语句:

  • DROP CATALOG
  • DROP TABLE
  • DROP DATABASE
  • DROP VIEW
  • DROP FUNCTION

执行 DROP 语句

Java

可以使用 TableEnvironment 中的 executeSql() 方法执行 DROP 语句。 若 DROP 操作执行成功,executeSql() 方法返回 ‘OK’,否则会抛出异常。

以下的例子展示了如何在 TableEnvironment 中执行一个 DROP 语句。

Scala

可以使用 TableEnvironment 中的 executeSql() 方法执行 DROP 语句。 若 DROP 操作执行成功,executeSql() 方法返回 ‘OK’,否则会抛出异常。

以下的例子展示了如何在 TableEnvironment 中执行一个 DROP 语句。

Java

可以使用 TableEnvironment 中的 executeSql() 方法执行 DROP 语句。 若 DROP 操作执行成功,executeSql() 方法返回 ‘OK’,否则会抛出异常。

以下的例子展示了如何在 TableEnvironment 中执行一个 DROP 语句。

Python

可以使用 TableEnvironment 中的 execute_sql() 方法执行 DROP 语句。 若 DROP 操作执行成功,execute_sql() 方法返回 ‘OK’,否则会抛出异常。

以下的例子展示了如何在 TableEnvironment 中执行一个 DROP 语句

SQL CLI

可以在 SQL CLI 中执行 DROP 语句。

以下的例子展示了如何在 SQL CLI 中执行一个 DROP 语句。

Java

  1. TableEnvironment tableEnv = TableEnvironment.create(...);
  2. // 注册名为 “Orders” 的表
  3. tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)");
  4. // 字符串数组: ["Orders"]
  5. String[] tables = tableEnv.listTables();
  6. // or tableEnv.executeSql("SHOW TABLES").print();
  7. // 从 catalog 删除 “Orders” 表
  8. tableEnv.executeSql("DROP TABLE Orders");
  9. // 空字符串数组
  10. String[] tables = tableEnv.listTables();
  11. // or tableEnv.executeSql("SHOW TABLES").print();

Scala

  1. val tableEnv = TableEnvironment.create(...)
  2. // 注册名为 “Orders” 的表
  3. tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)")
  4. // 字符串数组: ["Orders"]
  5. val tables = tableEnv.listTables()
  6. // or tableEnv.executeSql("SHOW TABLES").print()
  7. // 从 catalog 删除 “Orders” 表
  8. tableEnv.executeSql("DROP TABLE Orders")
  9. // 空字符串数组
  10. val tables = tableEnv.listTables()
  11. // or tableEnv.executeSql("SHOW TABLES").print()

Python

  1. table_env = TableEnvironment.create(...)
  2. # 字符串数组: ["Orders"]
  3. tables = table_env.listTables()
  4. # or table_env.executeSql("SHOW TABLES").print()
  5. # 从 catalog 删除 “Orders” 表
  6. table_env.execute_sql("DROP TABLE Orders")
  7. # 空字符串数组
  8. tables = table_env.list_tables()
  9. # or table_env.execute_sql("SHOW TABLES").print()

SQL CLI

  1. Flink SQL> CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...);
  2. [INFO] Table has been created.
  3. Flink SQL> SHOW TABLES;
  4. Orders
  5. Flink SQL> DROP TABLE Orders;
  6. [INFO] Table has been removed.
  7. Flink SQL> SHOW TABLES;
  8. [INFO] Result was empty.

DROP CATALOG

  1. DROP CATALOG [IF EXISTS] catalog_name

删除给定名字的 catalog。

IF EXISTS

如果目标 catalog 不存在,则不会执行任何操作。

DROP TABLE

  1. DROP TABLE [IF EXISTS] [catalog_name.][db_name.]table_name

根据给定的表名删除某个表。若需要删除的表不存在,则抛出异常。

IF EXISTS

表不存在时不会进行任何操作。

DROP DATABASE

  1. DROP DATABASE [IF EXISTS] [catalog_name.]db_name [ (RESTRICT | CASCADE) ]

根据给定的表名删除数据库。若需要删除的数据库不存在会抛出异常 。

IF EXISTS

若数据库不存在,不执行任何操作。

RESTRICT

当删除一个非空数据库时,会触发异常。(默认为开)

CASCADE

删除一个非空数据库时,把相关联的表与函数一并删除。

DROP VIEW

  1. DROP [TEMPORARY] VIEW [IF EXISTS] [catalog_name.][db_name.]view_name

删除一个有 catalog 和数据库命名空间的视图。若需要删除的视图不存在,则会产生异常。

TEMPORARY

删除一个有 catalog 和数据库命名空间的临时视图。

IF EXISTS

若视图不存在,则不会进行任何操作。

依赖管理 Flink 没有使用 CASCADE / RESTRICT 关键字来维护视图的依赖关系,当前的方案是在用户使用视图时再提示错误信息,比如在视图的底层表已经被删除等场景。

DROP FUNCTION

  1. DROP [TEMPORARY|TEMPORARY SYSTEM] FUNCTION [IF EXISTS] [catalog_name.][db_name.]function_name;

删除一个有 catalog 和数据库命名空间的 catalog function。若需要删除的函数不存在,则会产生异常。

TEMPORARY

删除一个有 catalog 和数据库命名空间的临时 catalog function。

TEMPORARY SYSTEM

删除一个没有数据库命名空间的临时系统函数。

IF EXISTS

若函数不存在,则不会进行任何操作。