# Iceberg on Flink DDL语法说明
#### 基本建表语句
最基本的建表语句，指定表名、列定义及表属性。
```
CREATE TABLE lf_iceberg_catalog.iceberg_db.iceberg_table (
   id BIGINT COMMENT 'unique id',
   data STRING NOT NULL
 ) WITH ('format-version'='2');
```
支持的常用子句：
- **PARTITION BY (column1, column2, ...)：**配置分区，Flink 尚不支持隐式分区（hidden partitioning）。
- **COMMENT 'table document'：**设置表描述。
- **WITH ('key'='value', ...)：**设置表配置（存储在 Iceberg 表属性中）。
#### PRIMARY KEY（主键约束）
可以为单列或多列声明主键约束，主键必须唯一且不能包含 NULL。主键约束是 UPSERT 模式所必需的。
**带主键约束的建表语句**
```
CREATE TABLE lf_iceberg_catalog.iceberg_db.iceberg_table (
   id BIGINT COMMENT 'unique id',
   data STRING NOT NULL,
   PRIMARY KEY(id) NOT ENFORCED
 ) WITH ('format-version'='2');
```
#### PARTITIONED BY（分区表）
使用 PARTITIONED BY 子句创建分区表。
**分区表建表语句**
```
CREATE TABLE lf_iceberg_catalog.iceberg_db.iceberg_table (
   id BIGINT COMMENT 'unique id',
   data STRING NOT NULL
 ) PARTITIONED BY (data)
 WITH ('format-version'='2');
```
#### CREATE TABLE LIKE（复制表结构）
基于已有表创建具有相同表结构、分区和表属性的新表。
```
CREATE TABLE lf_iceberg_catalog.iceberg_db.iceberg_table (
   id BIGINT COMMENT 'unique id',
   data STRING
 );
CREATE TABLE lf_iceberg_catalog.iceberg_db.iceberg_table_like LIKE lf_iceberg_catalog.iceberg_db.iceberg_table;
```
