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 문은 TableEnvironment의 executeSql() 메서드로 실행할 수 있어요. 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: 모델이 존재하지 않으면 아무 일도 일어나지 않아요.