#表API和SQL
ApacheFlink有两个关系API——表API和SQL——用于统一的流和批处理。表API是用于斯卡拉和Java的语言集成查询API，它允许以非常直观的方式从关系运算符（如选择、筛选和连接）组成查询。Flink的SQL支持基于实现SQL标准的[apache calcite]（https://calcite.apache.org）。无论输入是批输入（数据集）还是流输入（数据流），在任一接口中指定的查询都具有相同的语义并指定相同的结果。

表API和SQL接口以及Flink的数据流和数据集API紧密集成在一起。您可以轻松地在所有基于API的API和库之间切换。例如，您可以使用[cep library]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/libs/cep.html）从数据流中提取模式，然后使用表API分析模式，或者在运行[gelly graph algorithm]（//ci ci.apache.org/projects/fli）之前使用SQL查询扫描、筛选和聚合批处理表。关于预处理数据的nk/flink-docs-release-1.7/dev/libs/gelly）。

**请注意，表API和SQL尚未完成功能，正在积极开发中。并非所有操作都支持[Table API，SQL]和[Stream，Batch]输入的每个组合。**

## 步骤
表API和SQL捆绑在“flink table”maven工件中。为了使用表API和SQL，必须将以下依赖项添加到项目中：

```
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-table_2.11</artifactId>
  <version>1.7.1</version>
</dependency>
```

此外，您需要为Flink的scala批处理或流式API添加依赖项。对于批查询，需要添加：

```
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-scala_2.11</artifactId>
  <version>1.7.1</version>
</dependency>
```

对于流式查询，需要添加：

```
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-scala_2.11</artifactId>
  <version>1.7.1</version>
</dependency>
```

**注意：**由于Apache方解石中的一个问题，它阻止了用户类加载器被垃圾收集，因此我们不建议构建包含“Flink Table”依赖项的fat-jar。相反，我们建议将flink配置为在系统类加载器中包含“flink table”依赖项。这可以通过将'flink table.jar'文件从`./opt'文件夹复制到`./lib'文件夹来完成。有关详细信息，请参阅[这些说明]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/linking.html）。

##下一步去哪里？

*[概念和公共API]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/common.html）：表API和SQL的共享概念和API。

*[流式处理概念]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/streaming）：流式处理表API或SQL的特定文档，例如时间属性的配置和更新结果的处理。

*[连接到外部系统]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/functions.html）：用于向外部系统读写数据的可用连接器和格式。

*[表API]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/table api.html）：支持表API的操作和API。

*[sql]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/sql.html）：支持SQL的操作和语法。

*[内置函数]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/functions.html）：表API和SQL中支持的函数。

*[sql client]（//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/sql client.html）：与flink-sql一起玩，在不了解编程知识的情况下向集群提交表程序。
