

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

# 中的 SQL 概觀AWS Clean Rooms
<a name="sql-reference"></a>

歡迎使用 *AWS Clean RoomsSQL 參考。*

AWS Clean Rooms是以業界標準的結構化查詢語言 (SQL) 為基礎建置，這是一種查詢語言，包含您用來處理資料庫和資料庫物件的命令和函數。SQL 也會強制執行有關使用資料類型、表達式和常值的規則。

下列主題提供有關此 SQL 參考中使用的慣例和命名規則的一般資訊。

**Topics**
+ [

# SQL 參考慣例
](sql-ref-conventions.md)
+ [

# SQL 命名規則
](sql-ref-naming.md)
+ [

# SQL 引擎的資料類型支援
](sql-reference-supported-data-types-dialect.md)

下列各節提供您可以在其中使用的常值、資料類型、SQL 命令、SQL 函數類型和 SQL 條件的相關資訊AWS Clean Rooms。
+ [AWS Clean Rooms Spark SQL](sql-reference-spark.md)

如需 的詳細資訊AWS Clean Rooms，請參閱 [AWS Clean Rooms使用者指南](https://docs.aws.amazon.com/clean-rooms/latest/userguide/what-is.html)和 [AWS Clean RoomsAPI 參考](https://docs.aws.amazon.com/clean-rooms/latest/apireference/Welcome.html)。

# SQL 參考慣例
<a name="sql-ref-conventions"></a>

本節說明用於撰寫 SQL 表達式、命令和函數語法的慣例。


| 字元 | 描述 | 
| --- | --- | 
| CAPS (大寫字母) | 大寫字詞為關鍵字。 | 
| [ ]  | 方括號是用來表示選用的引數。方括號中的多個引數，代表您可以選擇任何數目的引數。此外，方括號中不同行的引數，代表 剖析器期望引數的排序，等於在語法中所列出的順序。 | 
| \$1 \$1  | 大括號表示您需要選擇大括號內的其中一個引數。 | 
| \$1 | 直立線符號會將您可選擇的引數隔開。 | 
| 斜體 | 斜體的字表示預留位置。您必須插入適當的值來取代斜體字詞。 | 
| ... | 省略符號表示您可以重複前一個元素。 | 
| '  | 單引號中的字詞表示您必須輸入引用內容。 | 

# SQL 命名規則
<a name="sql-ref-naming"></a>

下列各節說明 中的 SQL 命名規則 AWS Clean Rooms。

**Topics**
+ [

## 設定的資料表關聯名稱和資料欄
](#confg-table-and-column-naming-rules)
+ [

## 保留字
](#reserved-words)

## 設定的資料表關聯名稱和資料欄
<a name="confg-table-and-column-naming-rules"></a>

可以查詢的成員使用設定的資料表關聯名稱做為查詢中的資料表名稱。已設定的資料表關聯名稱和已設定的資料表資料欄可以在查詢中別名。

下列命名規則適用於設定的資料表關聯名稱、設定的資料表資料欄名稱和別名：
+ 它們只能使用英數字元、底線 (\$1) 或連字號 (-) 字元，但不能以連字號開頭或結尾。
  + (*僅限自訂分析規則*) 他們可以使用美元符號 (\$1)，但不能使用遵循美元引用字串常數的模式。

    引用美元的字串常數包含：
    + 美元符號 (\$1)
    + 零個或多個字元的選用「標籤」
    + 另一個貨幣符號
    + 構成字串內容的任意字元序列
    + 美元符號 (\$1)
    + 開始美元引號的相同標籤
    + 美元符號

      例如：`$$invalid$$`
+ 它們不能包含連續連字號 (-) 字元。
+ 它們不能以下列任何字首開頭：

  `padb_`, `pg_`, `stcs_`, `stl_`, `stll_`, `stv_`, `svcs_`, `svl_`, `svv_`, `sys_`, `systable_`
+ 它們不能包含反斜線字元 (\$1) 、引號 (') 或非雙引號的空格。
+ 如果它們以非字母字元開頭，則必須在雙引號 (" ") 內。
+ 如果它們包含連字號 (-) 字元，則必須在雙引號 (" ") 內。
+ 長度必須介於 1 到 127 個字元之間。
+ [預留單字](#reserved-words)必須在雙引號 (" ") 內。
+ 下列資料欄名稱無法保留在 AWS Clean Rooms （即使是引號） 中使用：
  + oid
  + Tableoid
  + xmin
  + cmin
  + xmax
  + cmax
  + ctid

## 保留字
<a name="reserved-words"></a>

以下是 中的預留單字清單 AWS Clean Rooms。


|  |  |  |  | 
| --- |--- |--- |--- |
|  AES128  |  DELTA32KDESC  |  LEADING  |  PRIMARY  | 
|  AES256ALL  |  DISTINCT  |  LEFTLIKE  |  RAW  | 
|  ALLOWOVERWRITEANALYSE  |  DO  |  LIMIT  |  READRATIO  | 
|  ANALYZE  |  DISABLE  |  LOCALTIME  |  RECOVERREFERENCES  | 
|  AND  |  ELSE  |  LOCALTIMESTAMP  |  REJECTLOG  | 
|  ANY  |  EMPTYASNULLENABLE  |  LUN  |  RESORT  | 
|  ARRAY  |  ENCODE  |  LUNS  |  RESPECT  | 
|  AS  |  ENCRYPT   |  LZO  |  RESTORE  | 
|  ASC  |  ENCRYPTIONEND  |  LZOP  |  RIGHTSELECT  | 
|  AUTHORIZATION  |  EXCEPT  |  MINUS  |  SESSION\$1USER  | 
|  AZ64  |  EXPLICITFALSE  |  MOSTLY16  |  SIMILAR  | 
|  BACKUPBETWEEN  |  FOR  |  MOSTLY32  |  SNAPSHOT  | 
|  BINARY  |  FOREIGN  |  MOSTLY8NATURAL  |  SOME  | 
|  BLANKSASNULLBOTH  |  FREEZE  |  NEW  |  SYSDATESYSTEM  | 
|  BYTEDICT  |  FROM  |  NOT  |  TABLE  | 
|  BZIP2CASE  |  FULL  |  NOTNULL  |  TAG  | 
|  CAST  |  GLOBALDICT256  |  NULL  |  TDES  | 
|  CHECK  |  GLOBALDICT64KGRANT  |  NULLSOFF  |  TEXT255  | 
|  COLLATE  |  GROUP  |  OFFLINEOFFSET  |  TEXT32KTHEN  | 
|  COLUMN  |  GZIPHAVING  |  OID  |  TIMESTAMP  | 
|  CONSTRAINT  |  IDENTITY  |  OLD  |  TO  | 
|  CREATE  |  IGNOREILIKE  |  ON  |  TOPTRAILING  | 
|  CREDENTIALSCROSS  |  IN  |  ONLY  |  TRUE   | 
|  CURRENT\$1DATE  |  INITIALLY  |  OPEN  |  TRUNCATECOLUMNSUNION  | 
|  CURRENT\$1TIME  |  INNER  |  OR  |  UNIQUE  | 
|  CURRENT\$1TIMESTAMP  |  INTERSECT  |  ORDER  | UNNEST | 
|  CURRENT\$1USER  |  INTERVAL  |  OUTER  |  USING  | 
|  CURRENT\$1USER\$1IDDEFAULT  |  INTO  |  OVERLAPS  |  VERBOSE  | 
|  DEFERRABLE  |  IS  |  PARALLELPARTITION  |  WALLETWHEN  | 
|  DEFLATE  |  ISNULL  |  PERCENT  |  WHERE  | 
|  DEFRAG  |  JOIN  |  PERMISSIONS  |  WITH  | 
|  DELTA  |  LANGUAGE  |  PIVOTPLACING  |  WITHOUT  | 

# SQL 引擎的資料類型支援
<a name="sql-reference-supported-data-types-dialect"></a>

AWS Clean Rooms 支援多個 SQL 引擎和方言。了解這些實作的資料類型系統對於成功的資料協作和分析至關重要。下表顯示 AWS Clean Rooms SQL、Snowflake SQL 和 Spark SQL 之間的同等資料類型。

## 數值資料類型
<a name="numeric-data-types-table"></a>

數值類型代表各種類型的數字，從精確整數到近似浮點值。數值類型的選擇會影響儲存需求和運算精確度。整數類型因位元組大小而異，而小數和浮點類型提供不同的精確度和縮放選項。


| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | Description | 
| --- | --- | --- | --- | --- | 
| 8 位元組整數 | BIGINT | 不支援 | BIGINT、LONG | 從 -9，223，372，036，854，775，808 到 9，223，372，036，854，775，807 的帶正負號整數。 | 
| 4 位元組整數 | INT | 不支援 | INT、INTEGER | 從 -2，147，483，648 到 2，147，483，647 的帶正負號整數 | 
| 2 位元組整數 | SMALLINT  | 不支援 | SMALLINT，簡短 | 從 -32，768 到 32，767 的帶正負號整數 | 
| 1 位元組整數 | 不支援 | 不支援 | TINYINT、BYTE | 從 -128 到 127 的帶正負號整數 | 
|  雙精確度浮點數 | 雙精度、雙精度 | FLOAT， FLOAT4, FLOAT8， DOUBLE， DOUBLE PRECISION， REAL | DOUBLE | 8 位元組雙精度浮點數 | 
| 單一精確度浮點數 | REAL、FLOAT | 不支援 | FLOAT | 4 位元組單精度浮點數 | 
| 小數 （固定精確度） | DECIMAL  | DECIMAL、NUMERIC、NUMBER Snowflake 會自動將較小寬度的確切數值類型 (INT、BIGINT、SMALLINT 等） 別名為 NUMBER。  | DECIMAL、NUMERIC、 | 任意精確度帶正負號的小數位數 | 
| 小數 （含精確度） | DECIMAL(p) | DECIMAL(p)、NUMBER(p) | DECIMAL(p) | 固定精確度小數位數 | 
| 小數 （使用擴展） | DECIMAL(p,s) | DECIMAL(p，s)、NUMBER(p，s) | DECIMAL(p,s) | 具有擴展的固定精確度小數位數 | 

## 布林值資料類型
<a name="boolean-data-types-table"></a>

布林值類型代表簡單的 true/false 邏輯值。這些類型在 SQL 引擎之間是一致的，通常用於旗標、條件和邏輯操作。


| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | Description | 
| --- | --- | --- | --- | --- | 
| Boolean  | BOOLEAN  | BOOLEAN  | BOOLEAN  | 代表 true/false 值  | 

## 日期和時間資料類型
<a name="date-time-data-types-table"></a>

日期和時間類型處理時間資料，精確度和時區感知程度各不相同。這些類型支援儲存日期、時間和時間戳記的不同格式，包括或排除時區資訊的選項。


| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | Description | 
| --- | --- | --- | --- | --- | 
| Date  | DATE  | DATE  | DATE  | 不含時區的日期值 （年、月、日） | 
| 時間  | TIME  | 不支援 | 不支援 | UTC 的當日時間，不含時區 | 
| 使用 TZ 的時間 | TIMETZ  | 不支援 | 不支援 | UTC 中的當日時間，含時區 | 
| 時間戳記  | TIMESTAMP  | TIMESTAMP、TIMESTAMP\$1NTZ | TIMESTAMP\$1NTZ |  不含時區的時間戳記 NTZ 表示「無時區」  | 
| 使用 TZ 的時間戳記 | TIMESTAMPTZ  | TIMESTAMP\$1LTZ | TIMESTAMP、TIMESTAMP\$1LTZ | 具有本機時區的時間戳記 LTZ 表示「當地時區」  | 

## 字元資料類型
<a name="character-data-types-table"></a>

字元類型可存放文字資料，同時提供固定長度和可變長度選項。這些類型會處理文字字串和二進位資料，並選用長度規格來控制儲存配置。


| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | Description | 
| --- | --- | --- | --- | --- | 
| 固定長度字元  | CHAR  | CHAR、CHARACTER | CHAR、CHARACTER | 固定長度的字元字串 | 
| 長度為 的固定長度字元 | CHAR(n) | CHAR(n), CHARACTER(n) | CHAR(n), CHARACTER(n) | 指定長度的固定長度字元字串 | 
| 可變長度字元 | VARCHAR  | VARCHAR、STRING、TEXT | VARCHAR、STRING | 可變長度字元字串 | 
| 可變長度字元與長度 | VARCHAR(n) | VARCHAR(n)、STRING(n)、TEXT(n) | VARCHAR(n) | 具有長度限制的可變長度字元字串  | 
| 二進位  | VARBYTE  | BINARY、VARBINARY | BINARY  | 二進位位元組序列 | 
| 具有長度的二進位 | VARBYTE(n) | 不支援 | 不支援 | 具有長度限制的二進位位元組序列 | 

## 結構化資料類型
<a name="structured-data-types-table"></a>

結構化類型可將多個值合併為單一欄位，以允許複雜的資料組織。這些包括排序集合的陣列、索引鍵/值對的映射，以及使用具名欄位建立自訂資料結構的結構。


| 資料類型 | AWS Clean Rooms SQL | Snowflake SQL | Spark SQL | Description | 
| --- | --- | --- | --- | --- | 
| 陣列  | ARRAY<type> | ARRAY（類型） | ARRAY<type> | 相同類型的元素順序 陣列類型必須包含相同類型的元素  | 
| Map  | MAP<key，value> | MAP（索引鍵、值） | MAP<key，value> | 鍵值對的集合 映射類型必須包含相同類型的元素  | 
| Struct  | STRUCT< field1： type1， field2： type2> |  OBJECT( field1 type1， field2 type2 ) | STRUCT< field1： type1， field2： type2 > | 具有指定類型之具名欄位的結構 結構式類型語法在實作之間可能略有不同  | 
| 超級  | SUPER  | 不支援 | 不支援 | 彈性類型支援所有資料類型，包括複雜類型 | 