DROP 문

DROP 문 (DROP Statements)

DROP 문은 주어진 catalog 이름의 카탈로그를 제거하거나, 현재 또는 지정된 Catalog에서 등록된 테이블/뷰/함수를 제거하는 데 사용돼요. Flink SQL이 지원하는 DROP 문들을 소개해요.

출처: 문서

본문

Flink SQL은 현재 다음 DROP 문을 지원해요.

  • DROP CATALOG
  • DROP TABLE
  • DROP MATERIALIZED TABLE
  • DROP DATABASE
  • DROP VIEW
  • DROP FUNCTION
  • DROP MODEL

DROP 문 실행 (Run a DROP statement)

DROP 문은 TableEnvironmentexecuteSql() 메서드로 실행할 수 있어요. executeSql() 메서드는 성공적인 DROP 작업이면 'OK'를 반환하고, 그렇지 않으면 예외를 던져요. 다음 예시는 TableEnvironment에서 DROP 문을 실행하는 방법을 보여줘요. DROP 문은 SQL CLI에서도 실행할 수 있어요.

TableEnvironment tableEnv = TableEnvironment.create(...);

// register a table named "Orders"
tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)");

// a string array: ["Orders"]
String[] tables = tableEnv.listTables();
// or tableEnv.executeSql("SHOW TABLES").print();

// drop "Orders" table from catalog
tableEnv.executeSql("DROP TABLE Orders");

// an empty string array
String[] tables = tableEnv.listTables();
// or tableEnv.executeSql("SHOW TABLES").print();
val tableEnv = TableEnvironment.create(...)

// register a table named "Orders"
tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)")

// a string array: ["Orders"]
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()

// drop "Orders" table from catalog
tableEnv.executeSql("DROP TABLE Orders")

// an empty string array
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()
table_env = TableEnvironment.create(...)

# a string array: ["Orders"]
tables = table_env.list_tables()
# or table_env.execute_sql("SHOW TABLES").print()

# drop "Orders" table from catalog
table_env.execute_sql("DROP TABLE Orders")

# an empty string array
tables = table_env.list_tables()
# or table_env.execute_sql("SHOW TABLES").print()
Flink SQL> CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...);
[INFO] Table has been created.

Flink SQL> SHOW TABLES;
Orders

Flink SQL> DROP TABLE Orders;
[INFO] Table has been removed.

Flink SQL> SHOW TABLES;
[INFO] Result was empty.

DROP CATALOG

DROP CATALOG [IF EXISTS] catalog_name

주어진 catalog 이름의 카탈로그를 제거해요.

  • IF EXISTS: 카탈로그가 존재하지 않으면 아무 일도 일어나지 않아요.

DROP TABLE

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

주어진 테이블 이름의 테이블을 제거해요. 제거하려는 테이블이 존재하지 않으면 예외가 발생해요.

  • TEMPORARY: catalog와 database 네임스페이스를 가진 임시 테이블을 제거해요.
  • IF EXISTS: 테이블이 존재하지 않으면 아무 일도 일어나지 않아요.

DROP MATERIALIZED TABLE

Materialized 테이블에 대한 전용 페이지를 참고하세요.

DROP DATABASE

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

주어진 데이터베이스 이름의 데이터베이스를 제거해요. 제거하려는 데이터베이스가 존재하지 않으면 예외가 발생해요.

  • IF EXISTS: 데이터베이스가 존재하지 않으면 아무 일도 일어나지 않아요.
  • RESTRICT: 비어있지 않은 데이터베이스를 제거하면 예외가 발생해요. 기본적으로 활성화돼요.
  • CASCADE: 비어있지 않은 데이터베이스를 제거할 때 모든 관련 테이블과 함수도 제거해요.

DROP VIEW

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

catalog와 database 네임스페이스를 가진 뷰를 제거해요. 제거하려는 뷰가 존재하지 않으면 예외가 발생해요.

  • TEMPORARY: catalog와 database 네임스페이스를 가진 임시 뷰를 제거해요.
  • IF EXISTS: 뷰가 존재하지 않으면 아무 일도 일어나지 않아요.
  • MAINTAIN DEPENDENCIES: Flink는 CASCADE/RESTRICT 키워드로 뷰의 의존성을 유지하지 않아요. 현재 방식은 뷰의 기본 테이블이 제거된 것 같은 시나리오에서 사용자가 뷰를 사용하려 할 때 지연 오류 메시지를 생성하는 것이에요.

DROP FUNCTION

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

catalog와 database 네임스페이스를 가진 카탈로그 함수를 제거해요. 제거하려는 함수가 존재하지 않으면 예외가 발생해요.

  • TEMPORARY: catalog와 database 네임스페이스를 가진 임시 카탈로그 함수를 제거해요.
  • TEMPORARY SYSTEM: 네임스페이스가 없는 임시 시스템 함수를 제거해요.
  • IF EXISTS: 함수가 존재하지 않으면 아무 일도 일어나지 않아요.

DROP MODEL

DROP [TEMPORARY] MODEL [IF EXISTS] [catalog_name.][db_name.]model_name

주어진 모델 이름의 모델을 제거해요. 제거하려는 모델이 존재하지 않고 IF EXISTS가 설정되지 않았다면 예외가 발생해요.

  • TEMPORARY: catalog와 database 네임스페이스를 가진 임시 모델을 제거해요.
  • IF EXISTS: 모델이 존재하지 않으면 아무 일도 일어나지 않아요.

더 알아보기 (Learn more)