

# 从关系（SQL）数据库与从 DynamoDB 获取表信息方面的差异
<a name="SQLtoNoSQL.GetTableInfo"></a>

您可以根据您的规范验证是否已创建表。关系数据库中显示了所有表的架构。Amazon DynamoDB 表没有架构，因此仅显示主键属性。

**Topics**
+ [使用 SQL 获取有关表的信息](#SQLtoNoSQL.GetTableInfo.SQL)
+ [在 DynamoDB 中获取有关表的信息](#SQLtoNoSQL.GetTableInfo.DynamoDB)

## 使用 SQL 获取有关表的信息
<a name="SQLtoNoSQL.GetTableInfo.SQL"></a>

大多数关系数据库管理系统 (RDBMS) 允许您描述表的结构—列、数据类型、主键定义等。在 SQL 中，没有执行此任务的标准方法。不过，许多数据库系统提供了 `DESCRIBE` 命令。以下是 MySQL 的一个示例。

```
DESCRIBE Music;
```

这将返回表的结构以及所有列名称、数据类型和大小。

```
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| Artist     | varchar(20) | NO   | PRI | NULL    |       |
| SongTitle  | varchar(30) | NO   | PRI | NULL    |       |
| AlbumTitle | varchar(25) | YES  |     | NULL    |       |
| Year       | int(11)     | YES  |     | NULL    |       |
| Price      | float       | YES  |     | NULL    |       |
| Genre      | varchar(10) | YES  |     | NULL    |       |
| Tags       | text        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
```

此表的主键包含 *Artist* 和 *SongTitle*。

## 在 DynamoDB 中获取有关表的信息
<a name="SQLtoNoSQL.GetTableInfo.DynamoDB"></a>

DynamoDB 具有与之类似的 `DescribeTable` 操作。唯一的参数是表名称。

```
{
    TableName : "Music"
}
```

来自 `DescribeTable` 的回复如下所示。

```
{
  "Table": {
    "AttributeDefinitions": [
      {
        "AttributeName": "Artist",
        "AttributeType": "S"
      },
      {
        "AttributeName": "SongTitle",
        "AttributeType": "S"
      }
    ],
    "TableName": "Music",
    "KeySchema": [
      {
        "AttributeName": "Artist",
        "KeyType": "HASH"  //Partition key
      },
      {
        "AttributeName": "SongTitle",
        "KeyType": "RANGE"  //Sort key
      }
    ],

    ...
```

`DescribeTable` 还返回有关表中的索引、预置的吞吐量设置、大约项目数和其他元数据的信息。