SQL 方言と準拠
このページでは、TiDB Cloud Lake がサポートする SQL 方言の詳細と、SQL 標準への準拠状況、特に SQL:2011 の機能と TiDB Cloud Lake におけるそのサポート状況について説明します。
サポートされる SQL 方言
SQL 方言とは、Structured Query Language の特定のバリエーションまたは種類を指します。TiDB Cloud Lake はデフォルトで PostgreSQL 方言をサポートしており、他のサポート対象の方言へ柔軟に切り替えることもできます。サポートされる方言とその簡単な説明については、以下の表を参照してください。
| 方言 | 概要 | 詳細情報 |
|---|---|---|
PostgreSQL | エンタープライズで一般的に使用される、デフォルトでサポートされる方言 | https://www.postgresql.org/ |
MySQL | オープンソースのデータベース管理システム | https://www.mysql.com/ |
Hive | ビッグデータ処理向けのデータウェアハウス | https://hive.apache.org/ |
Prql | PRQL は、データ変換のためのモダンな言語であり、シンプルかつ強力なパイプライン型 SQL 代替言語です | https://github.com/PRQL/prql |
Experimental | テストおよび研究向けの実験的な方言 | N/A |
サポートされる SQL 方言を切り替える、または現在の方言を表示するには、sql_dialect 設定を使用します。
-- Set SQL dialect to PRQL
SET sql_dialect = 'Prql';
-- Display current dialect
SHOW SETTINGS LIKE 'sql_dialect';
SQL 準拠サマリー
TiDB Cloud Lake は SQL 標準への準拠を目指しており、特に SQL:2011 としても知られる ISO/IEC 9075:2011 をサポートしています。これは網羅的な準拠表明ではありませんが、TiDB Cloud Lake は SQL 標準で求められる多くの機能を取り入れており、構文や関数にわずかな違いがある場合があります。このページでは、TiDB Cloud Lake の SQL:2011 標準に対する準拠レベルを示します。
| Feature ID | 機能名 | サポート状況 | 注記 |
|---|---|---|---|
| E011 | 数値データ型 | Yes | |
| E011-01 | INTEGER および SMALLINT データ型 | Yes | |
| E011-02 | REAL、DOUBLE PRECISION、および FLOAT データ型 | Yes | |
| E011-03 | DECIMAL および NUMERIC データ型 | Yes | |
| E011-04 | 算術演算子 | Yes | |
| E011-05 | 数値比較 | Yes | |
| E011-06 | 数値データ型間の暗黙的キャスト | Yes | |
| E021 | 文字列型 | Partial | |
| E021-01 | CHARACTER データ型 | No | 固定長文字列型はサポートされていません |
| E021-02 | CHARACTER VARYING データ型 | Yes | |
| E021-03 | 文字リテラル | Yes | |
| E021-04 | CHARACTER_LENGTH 関数 | Yes | |
| E021-05 | OCTET_LENGTH 関数 | Yes | |
| E021-06 | SUBSTRING | Yes | |
| E021-07 | 文字列連結 | Yes | |
| E021-08 | UPPER および LOWER 関数 | Yes | |
| E021-09 | TRIM 関数 | Yes | |
| E021-10 | 固定長および可変長文字列型間の暗黙的キャスト | No | 固定長文字列型はサポートされていません |
| E021-11 | POSITION 関数 | Yes | |
| E021-12 | 文字比較 | Yes | |
| E031 | 識別子 | Yes | |
| E031-01 | 区切り識別子 | Yes | |
| E031-02 | 小文字の識別子 | Yes | |
| E031-03 | 末尾のアンダースコア | Yes | |
| E051 | 基本的なクエリ仕様 | Partial | |
| E051-01 | SELECT DISTINCT | Yes | |
| E051-02 | GROUP BY 句 | Yes | |
| E051-04 | GROUP BY に SELECT リストにないカラムを含めることができる | Yes | |
| E051-05 | 選択項目の名前変更 | Yes | |
| E051-06 | HAVING 句 | Yes | |
| E051-07 | select リスト内の修飾付き * | No | |
| E051-08 | FROM 句内の相関名 | Yes | |
| E051-09 | FROM 句内でのカラム名変更 | No | |
| E061 | 基本的な述語と検索条件 | Partial | |
| E061-01 | 比較述語 | Yes | |
| E061-02 | BETWEEN 述語 | Yes | |
| E061-03 | 値のリストを伴う IN 述語 | Yes | |
| E061-04 | LIKE 述語 | Yes | |
| E061-05 | LIKE 述語: ESCAPE 句 | No | |
| E061-06 | NULL 述語 | Yes | |
| E061-07 | 量化比較述語 | Yes | |
| E061-08 | EXISTS 述語 | Yes | |
| E061-09 | 比較述語内のサブクエリ | Yes | |
| E061-11 | IN 述語内のサブクエリ | Yes | |
| E061-12 | 量化比較述語内のサブクエリ | Yes | |
| E061-13 | 相関サブクエリ | Yes | |
| E061-14 | 検索条件 | Yes | |
| E071 | 基本的なクエリ式 | Partial | |
| E071-01 | UNION DISTINCT テーブル演算子 | Yes | |
| E071-02 | UNION ALL テーブル演算子 | Yes | |
| E071-03 | EXCEPT DISTINCT テーブル演算子 | Yes | |
| E071-05 | テーブル演算子で結合されるカラムは、データ型が完全に同一である必要はない | Partial | 暗黙的に型強制できるデータ型のカラムのみ、テーブル演算子で結合できます。 |
| E071-06 | サブクエリ内のテーブル演算子 | Yes | |
| E081 | 基本的な権限 | Partial | |
| E081-01 | テーブルレベルの SELECT 権限 | Yes | |
| E081-02 | DELETE 権限 | Yes | |
| E081-03 | テーブルレベルの INSERT 権限 | Yes | |
| E081-04 | テーブルレベルの UPDATE 権限 | Yes | |
| E081-05 | カラムレベルの UPDATE 権限 | No | |
| E081-06 | テーブルレベルの REFERENCES 権限 | No | |
| E081-07 | カラムレベルの REFERENCES 権限 | No | |
| E081-08 | WITH GRANT OPTION | No | |
| E081-09 | USAGE 権限 | No | |
| E081-10 | EXECUTE 権限 | No | |
| E091 | 集合関数 | Yes | |
| E091-01 | AVG | Yes | |
| E091-02 | COUNT | Yes | |
| E091-03 | MAX | Yes | |
| E091-04 | MIN | Yes | |
| E091-05 | SUM | Yes | |
| E091-06 | ALL 量指定子 | Yes | |
| E091-07 | DISTINCT 量指定子 | Partial | 現在、TiDB Cloud Lake は COUNT(DISTINCT ...) と SELECT DISTINCT ... クエリをサポートしています。 |
| E101 | 基本的なデータ操作 | Partial | |
| E101-01 | INSERT 文 | Yes | |
| E101-03 | 検索条件付き UPDATE 文 | Yes | |
| E101-04 | 検索条件付き DELETE 文 | Yes | |
| E111 | 単一行 SELECT 文 | Yes | |
| E121 | 基本カーソルサポート | Partial | |
| E121-01 | DECLARE CURSOR | No | |
| E121-02 | ORDER BY のカラムは select リストに含まれている必要はない | Yes | |
| E121-03 | ORDER BY 句内の値式 | Yes | |
| E121-04 | OPEN 文 | No | |
| E121-06 | 位置指定 UPDATE 文 | No | |
| E121-07 | 位置指定 DELETE 文 | No | |
| E121-08 | CLOSE 文 | No | |
| E121-10 | FETCH 文: 暗黙の NEXT | No | |
| E121-17 | WITH HOLD カーソル | No | |
| E131 | NULL 値サポート(値の代わりの null) | Yes | |
| E141 | 基本整合性制約 | No | |
| E141-01 | NOT NULL 制約 | Yes | TiDB Cloud Lake のデフォルト: すべてのカラムは NULL を許容します。 |
| E141-02 | NOT NULL カラムの UNIQUE 制約 | No | |
| E141-03 | PRIMARY KEY 制約 | No | |
| E141-04 | 参照削除アクションと参照更新アクションの両方でデフォルトが NO ACTION の基本 FOREIGN KEY 制約 | No | |
| E141-06 | CHECK 制約 | No | |
| E141-07 | カラムのデフォルト値 | Yes | |
| E141-08 | PRIMARY KEY に対する NOT NULL の推論 | No | |
| E141-10 | 外部キー内の名前は任意の順序で指定できる | No | |
| E151 | トランザクションサポート | Partial | |
| E151-01 | COMMIT 文 | Partial | TiDB Cloud Lake は、個々の DML 文ごとの暗黙的トランザクションのみをサポートします。 |
| E151-02 | ROLLBACK 文 | No | |
| E152 | 基本 SET TRANSACTION 文 | No | |
| E152-01 | SET TRANSACTION 文: ISOLATION LEVEL SERIALIZABLE 句 | No | |
| E152-02 | SET TRANSACTION 文: READ ONLY および READ WRITE 句 | No | |
| E153 | サブクエリを含む更新可能クエリ | Yes | |
| E161 | 先頭の二重マイナスを使用する SQL コメント | Yes | |
| E171 | SQLSTATE サポート | No | |
| E182 | ホスト言語バインディング | No | |
| F031 | 基本スキーマ操作 | Yes | |
| F031-01 | 永続ベーステーブルを作成する CREATE TABLE 文 | Yes | |
| F031-02 | CREATE VIEW 文 | Yes | |
| F031-03 | GRANT 文 | Partial | |
| F031-04 | ALTER TABLE 文: ADD COLUMN 句 | Yes | |
| F031-13 | DROP TABLE 文: RESTRICT 句 | Partial | |
| F031-16 | DROP VIEW 文: RESTRICT 句 | Partial | |
| F031-19 | REVOKE 文: RESTRICT 句 | Partial | |
| F041 | 基本的な結合テーブル | Yes | |
| F041-01 | 内部結合(ただし INNER キーワードは必須ではない) | Yes | |
| F041-02 | INNER キーワード | Yes | |
| F041-03 | LEFT OUTER JOIN | Yes | |
| F041-04 | RIGHT OUTER JOIN | Yes | |
| F041-05 | 外部結合はネスト可能 | Yes | |
| F041-07 | 左または右外部結合の内部テーブルは、内部結合でも使用できる | Yes | |
| F041-08 | すべての比較演算子をサポート(= のみではない) | Yes | |
| F051 | 基本的な日付と時刻 | Partial | |
| F051-01 | DATE データ型(DATE リテラルのサポートを含む) | Yes | |
| F051-02 | TIME データ型(TIME リテラルのサポートを含む)。小数秒精度は少なくとも 0 | No | |
| F051-03 | TIMESTAMP データ型(TIMESTAMP リテラルのサポートを含む)。小数秒精度は少なくとも 0 および 6 | Yes | |
| F051-04 | DATE、TIME、および TIMESTAMP データ型に対する比較述語 | Yes | |
| F051-05 | 日時型と文字列型の間の明示的 CAST | Yes | |
| F051-06 | CURRENT_DATE | Yes | |
| F051-07 | LOCALTIME | Yes | |
| F051-08 | LOCALTIMESTAMP | Yes | |
| F081 | ビュー内の UNION と EXCEPT | Yes | |
| F131 | グループ化操作 | Yes | |
| F131-01 | グループ化されたビューを含むクエリで WHERE、GROUP BY、および HAVING 句をサポート | Yes | |
| F131-02 | グループ化されたビューを含むクエリで複数テーブルをサポート | Yes | |
| F131-03 | グループ化されたビューを含むクエリで集合関数をサポート | Yes | |
| F131-04 | GROUP BY および HAVING 句とグループ化されたビューを含むサブクエリ | Yes | |
| F131-05 | GROUP BY および HAVING 句とグループ化されたビューを含む単一行 SELECT | Yes | |
| F181 | 複数モジュールサポート | No | |
| F201 | CAST 関数 | Yes | |
| F221 | 明示的デフォルト | No | |
| F261 | CASE 式 | Yes | |
| F261-01 | 単純 CASE | Yes | |
| F261-02 | 検索 CASE | Yes | |
| F261-03 | NULLIF | Yes | |
| F261-04 | COALESCE | Yes | |
| F311 | スキーマ定義文 | Partial | |
| F311-01 | CREATE SCHEMA | Yes | |
| F311-02 | 永続ベーステーブル用の CREATE TABLE | Yes | |
| F311-03 | CREATE VIEW | Yes | |
| F311-04 | CREATE VIEW: WITH CHECK OPTION | No | |
| F311-05 | GRANT 文 | Partial | |
| F471 | スカラーサブクエリ値 | Yes | |
| F481 | 拡張 NULL 述語 | Yes | |
| F812 | 基本フラグ付け | No | |
| S011 | 区別データ型 | No | |
| T321 | 基本 SQL 呼び出しルーチン | No | |
| T321-01 | オーバーロードなしのユーザー定義関数 | Yes | |
| T321-02 | オーバーロードなしのユーザー定義ストアドプロシージャ | No | |
| T321-03 | 関数呼び出し | Yes | |
| T321-04 | CALL 文 | No | |
| T321-05 | RETURN 文 | No | |
| T631 | 1 つのリスト要素を持つ IN 述語 | Yes |