# GraphQL 查询

By [zxy327](https://paragraph.com/@zxy327) · 2024-02-20

---

GraphQL 概述
==========

GraphQL 是一种 API 查询语言，也是一种运行时，用于使用您为数据定义的类型系统来执行这些查询。它用于抽象化编写 SQL 的必要性，因为它使客户端能够准确地请求他们需要的数据（通常在单个请求中），这比构建多个 SQL 查询更高效且更易于管理。

### GraphQL 与 SQL 有何不同？

GraphQL 与 SQL 的不同之处在于数据检索和操作的方法。 SQL 是一种用于访问和管理数据库的标准语言，它是围绕预定义查询构建的，其中服务器定义可以检索哪些数据以及如何检索数据。相比之下，GraphQL 主要是一种 API 查询语言，它允许客户端通常在单个请求中精确地请求他们需要的数据。这种查询灵活性减少了对多个 SQL 查询的需求，从而优化了数据获取和处理。此外，GraphQL 使用类型系统来描述数据，而 SQL 直接与数据库模式交互。

### SxT 中如何使用 GraphQL？

除了我们常规的[SQL REST API](https://docs.spaceandtime.io/docs/graphql-queries)（这也是您在使用 Studio 查询编辑器或 JDBC 驱动程序时所使用的 API）之外，GraphQL 还充当 SxT 的另一个入口点。您可以使用 GraphQL 查询自己的 Space 和 Time 表以及我们提供的所有索引区块链数据，就像通过核心 SQL REST API 一样。

### 您可以使用 GraphQL 做什么？

如今，GraphQL 可用于以下功能：

*   运行查询并聚合数据
    
*   发现存在哪些模式
    
*   检索特定的 GraphQL 架构
    
*   为表（或公共表）创建、更新或删除 GraphQL 架构
    

### GraphQL 有哪些用例？

GraphQL 非常适合对于标准 SQL 来说过于复杂的用例。与 SQL 相比，它提供：

*   **自定义/灵活的数据检索：** GraphQL 允许用户精确定义他们想要在单个查询中检索的数据，而不是依赖于一组固定的服务器定义的端点。
    
*   **更简单的数据聚合：** GraphQL可用于集成和获取来自Space和Time的各个表中的数据，从而更容易聚合数据。您可以使用它来查询多个不可连接的表。
    

使用 Studio 执行 GraphQL
====================

直接从 Space and Time Studio 执行 GraphQL 是开始使用 GraphQL 的最简单方法。简单地...

1.  导航至 Studio 并登录。
    
2.  在查询选项卡下，选择 GraphQL。
    
3.  您将看到可供探索的 GraphQL 架构列表。选择您想要使用的一个，然后会弹出一个 GraphQL 查询编辑器。
    
4.  编写您的 GraphQL 查询！有关编写 GraphQL 的指南，请参阅[此资源](https://graphql.org/learn/queries/)。
    

使用 API 执行 GraphQL
=================

您还可以直接与我们的[GraphQL API](https://docs.spaceandtime.io/docs/refs/graphql-overview)交互。

我们有一个 GraphQL API 端点，您可以使用它来执行 GraphQL 查询。

我们还有一组 REST API，您可以使用它们来发现、管理和编辑现有的 GraphQL 架构。这些 API 不用于执行 GraphQL，而是用于管理您的架构和配置。

### GraphQL API

我们提供了一个[执行 GraphQL](https://docs.spaceandtime.io/reference/execute-graphql) API 端点，您可以使用它对任何现有的 GraphQL 模式执行查询。如果您需要管理现有架构或发现新架构，请使用我们的 REST API（请参阅以下部分）。

一旦您有了想要使用的 GraphQL 架构，只需像平常一样编写您的 GraphQL 查询即可。确保在标头中指定架构名称，输入查询将根据您引用的架构进行验证。此外，针对权限表的任何查询都需要使用 biscuits 进行[授权](https://docs.spaceandtime.io/docs/biscuit-authorization)（就像您通过 SQL API 查询它们一样） - 因此请在必要时在请求正文中指定 biscuits。

### REST API

GraphQL REST API 可用于管理和发现 GraphQL 模式。

\*\*要查明存在哪些架构：\*\*只需调用[Discover GraphQL schemas](https://docs.spaceandtime.io/reference/graphql-schema-discover) API。您可以搜索公共模式和订阅模式。

\*\*要查看 GraphQL 架构：\*\*使用[检索 GraphQL 架构](https://docs.spaceandtime.io/reference/graphql-schema-retrieve)API。

\*\*要创建新的 GraphQL 架构：：\*\*使用[创建 GraphQL 架构](https://docs.spaceandtime.io/reference/graphql-schema-create)API。您需要一个现有的数据库模式，但 GraphQL 模式将代表您自动生成 - 您所需要做的就是提供 GraphQL 模式的名称、可见性范围（例如，选择是否要包含公共表）仅）和数据库模式标识符。`PUBLIC`

\*\*如果您需要重新生成 GraphQL 架构：\*\*使用[更新 GraphQL 架构](https://docs.spaceandtime.io/reference/graphql-schema-update)API。如果您添加或删除表（即更改数据模型），您可能需要使用它。

\*\*如果您需要删除 GraphQL 架构：\*\*使用[删除 GraphQL 架构](https://docs.spaceandtime.io/reference/graphql-schema-delete)API。

---

*Originally published on [zxy327](https://paragraph.com/@zxy327/graphql)*
