# GraphQL 查询

By [laodao](https://paragraph.com/@ukpkmkk) · 2024-04-02

---

GraphQL 概述

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

### GraphQL 与 SQL 有何不同？

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

### GraphQL 如何在 SxT 中使用？

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

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

目前，GraphQL 可以用于以下功能：

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

### GraphQL 有哪些用例？

GraphQL 非常适合标准 SQL 无法处理的复杂用例。与 SQL 相比，它提供：

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

使用 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

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

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

### REST API

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

\*\*要找出存在哪些架构：\*\*只需调用[Discover GraphQL 架构](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。如果您添加或删除表（即更改数据模型），则可能需要使用此 API。

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

---

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