

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從關聯式 (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` 也會傳回有關資料表索引、佈建輸送量設定、約略的項目計數及其他中繼資料的資訊。