- TiDB Cloudについて
- 始めましょう
- クラスターの管理
- データの移行
- サンプル データのインポート
- データを TiDB に移行する
- TiDB からのデータのエクスポート
- データのバックアップと復元
- 監視と警告
- パフォーマンスの調整
- 概要
- パフォーマンスを分析する
- SQL チューニング
- TiKV Follower Readの調整
- コプロセッサ キャッシュ
- ガベージ コレクション (GC)
- TiFlash のパフォーマンスを調整する
- ユーザー アクセスの管理
- 請求する
- 参照
- TiDB クラスターのアーキテクチャ
- TiDB Cloudクラスターの制限とクォータ
- TiDB の制限事項
- SQL
- TiDB で SQL を調べる
- SQL 言語の構造と構文
- SQL ステートメント
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ALTER DATABASE
ALTER INDEX
ALTER TABLE
ALTER TABLE COMPACT
ALTER USER
ANALYZE TABLE
BATCH
BEGIN
CHANGE COLUMN
COMMIT
CHANGE DRAINER
CHANGE PUMP
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW ANALYZE STATUS
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- データ型
- 関数と演算子
- クラスタ化インデックス
- 制約
- 生成された列
- SQL モード
- テーブル属性
- 取引
- ビュー
- パーティショニング
- 一時テーブル
- キャッシュされたテーブル
- 文字セットと照合順序
- 履歴データの読み取り
- システム テーブル
mysql
- 情報_スキーマ
- 概要
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_INFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
KEY_COLUMN_USAGE
PARTITIONS
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS_HISTORY
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
- システム変数
- ストレージ エンジン
- TiKV
- ティフラッシュ
- Dumpling
- テーブル フィルター
- データとインデックス間の不一致のトラブルシューティング
- よくある質問
- リリースノート
- サポート
- 用語集
重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。
SQLモード
TiDBサーバーはさまざまなSQLモードで動作し、これらのモードをクライアントごとに異なる方法で適用します。 SQLモードは、以下に説明するように、TiDBがサポートするSQL構文と、実行するデータ検証チェックのタイプを定義します。
TiDBの起動後、 SET [ SESSION | GLOBAL ] sql_mode='modes'
を変更してSQLモードを設定します。
SQLモードをGLOBAL
レベルで設定する場合は、 SUPER
の特権があることを確認してください。このレベルでの設定は、後で確立される接続にのみ影響します。 SESSION
レベルでのSQLモードへの変更は、現在のクライアントにのみ影響します。
Modes
は、コンマ('、')で区切られた一連の異なるモードです。 SELECT @@sql_mode
ステートメントを使用して、現在のSQLモードを確認できます。 SQLモードのデフォルト値: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
。
重要なsql_mode
値
ANSI
:このモードは標準SQLに準拠しています。このモードでは、データがチェックされます。データが定義されたタイプまたは長さに準拠していない場合、データタイプは調整またはトリミングされ、warning
が返されます。STRICT_TRANS_TABLES
:データが厳密にチェックされる厳密モード。誤ったデータがテーブルに挿入されると、エラーが返されます。TRADITIONAL
:このモードでは、TiDBは「従来の」SQLデータベースシステムのように動作します。不正な値が列に挿入されると、警告ではなくエラーが返されます。次に、INSERT
またはUPDATE
ステートメントはすぐに停止されます。
SQLモードテーブル
名前 | 説明 |
---|---|
PIPES_AS_CONCAT | 「 |
ANSI_QUOTES | " を識別子として扱います。 ANSI_QUOTES が有効になっている場合、一重引用符のみが文字列リテラルとして扱われ、二重引用符は識別子として扱われます。したがって、二重引用符を使用して文字列を引用することはできません。 (フルサポート) |
IGNORE_SPACE | このモードが有効になっている場合、システムはスペースを無視します。例:「user」と「user」は同じです。 (フルサポート) |
ONLY_FULL_GROUP_BY | SELECT 、またはHAVING で参照されている非集約列がORDER BY に存在しない場合、このSQLステートメントは無効です。これは、列がGROUP BY に存在しGROUP BY が、クエリによって表示されるのは異常であるためです。 (フルサポート) |
NO_UNSIGNED_SUBTRACTION | オペランドに減算の記号がない場合、結果をUNSIGNED としてマークしません。 (フルサポート) |
NO_DIR_IN_CREATE | テーブルの作成時に、 INDEX DIRECTORY およびDATA DIRECTORY のディレクティブをすべて無視します。このオプションは、セカンダリレプリケーションサーバーにのみ役立ちます(構文サポートのみ) |
NO_KEY_OPTIONS | SHOW CREATE TABLE ステートメントを使用する場合、 ENGINE などのMySQL固有の構文はエクスポートされません。 mysqldumpを使用してDBタイプ間で移行する場合は、このオプションを検討してください。 (構文サポートのみ) |
NO_FIELD_OPTIONS | SHOW CREATE TABLE ステートメントを使用する場合、 ENGINE などのMySQL固有の構文はエクスポートされません。 mysqldumpを使用してDBタイプ間で移行する場合は、このオプションを検討してください。 (構文サポートのみ) |
NO_TABLE_OPTIONS | SHOW CREATE TABLE ステートメントを使用する場合、 ENGINE などのMySQL固有の構文はエクスポートされません。 mysqldumpを使用してDBタイプ間で移行する場合は、このオプションを検討してください。 (構文サポートのみ) |
NO_AUTO_VALUE_ON_ZERO | このモードが有効になっている場合、 AUTO_INCREMENT 列に渡される値が0 または特定の値であると、システムはこの値をこの列に直接書き込みます。 NULL が渡されると、システムは自動的に次のシリアル番号を生成します。 (フルサポート) |
NO_BACKSLASH_ESCAPES | このモードが有効になっている場合、 \ の円記号はそれ自体を表すだけです。 (フルサポート) |
STRICT_TRANS_TABLES | トランザクションストレージエンジンの厳密モードを有効にし、不正な値が挿入された後、ステートメント全体をロールバックします。 (フルサポート) |
STRICT_ALL_TABLES | トランザクションテーブルの場合、不正な値が挿入された後、トランザクションステートメント全体をロールバックします。 (フルサポート) |
NO_ZERO_IN_DATE | 月または日の部分が0 の日付は受け入れられない厳密モード。 IGNORE オプションを使用する場合、TiDBは同様の日付に「0000-00-00」を挿入します。非厳密モードでは、この日付は受け入れられますが、警告が返されます。 (フルサポート) |
NO_ZERO_DATE | 厳密モードでは、「0000-00-00」を有効な日付として使用しません。 IGNORE オプションを使用して、ゼロの日付を挿入することもできます。非厳密モードでは、この日付は受け入れられますが、警告が返されます。 (フルサポート) |
ALLOW_INVALID_DATES | このモードでは、システムはすべての日付の有効性をチェックしません。 1 から12 の範囲の月の値と1 から31 の範囲の日付の値のみをチェックします。このモードは、 DATE 列とDATATIME 列にのみ適用されます。 TIMESTAMP 列すべてに完全な妥当性チェックが必要です。 (フルサポート) |
ERROR_FOR_DIVISION_BY_ZERO | このモードが有効になっている場合、データ変更操作( INSERT またはUPDATE )で0 による除算を処理すると、システムはエラーを返します。このモードが有効になっていない場合、システムは警告を返し、代わりに NULL が使用されます。 (フルサポート) |
NO_AUTO_CREATE_USER | 指定されたパスワードを除いて、 GRANT が新しいユーザーを自動的に作成しないようにします(完全サポート) |
HIGH_NOT_PRECEDENCE | NOT演算子の優先順位は、 NOT a BETWEEN b AND c などの式がNOT (a BETWEEN b AND c) として解析されるようなものです。 MySQLの一部の古いバージョンでは、この式は(NOT a) BETWEEN b AND c として解析されます。 (フルサポート) |
NO_ENGINE_SUBSTITUTION | 必要なストレージエンジンが無効になっているか、コンパイルされていない場合に、ストレージエンジンが自動的に置き換えられないようにします。 (構文サポートのみ) |
PAD_CHAR_TO_FULL_LENGTH | このモードが有効になっている場合、システムはCHAR のタイプの末尾のスペースをトリミングしません。 (構文サポートのみ。このモードはMySQL8.0で非推奨になっています。) |
REAL_AS_FLOAT | REAL をDOUBLE の同義語ではなく、 FLOAT の同義語として扱います(完全サポート) |
POSTGRESQL | PIPES_AS_CONCAT NO_FIELD_OPTIONS ANSI_QUOTES ( IGNORE_SPACE NO_KEY_OPTIONS NO_TABLE_OPTIONS ) |
MSSQL | PIPES_AS_CONCAT NO_FIELD_OPTIONS ANSI_QUOTES ( IGNORE_SPACE NO_KEY_OPTIONS NO_TABLE_OPTIONS ) |
DB2 | PIPES_AS_CONCAT NO_FIELD_OPTIONS ANSI_QUOTES ( IGNORE_SPACE NO_KEY_OPTIONS NO_TABLE_OPTIONS ) |
MAXDB | PIPES_AS_CONCAT NO_TABLE_OPTIONS ANSI_QUOTES NO_FIELD_OPTIONS IGNORE_SPACE NO_KEY_OPTIONS NO_AUTO_CREATE_USER |
MySQL323 | NO_FIELD_OPTIONS にHIGH_NOT_PRECEDENCE (構文サポートのみ) |
MYSQL40 | NO_FIELD_OPTIONS にHIGH_NOT_PRECEDENCE (構文サポートのみ) |
ANSI | REAL_AS_FLOAT にPIPES_AS_CONCAT ( ANSI_QUOTES IGNORE_SPACE のみ) |
TRADITIONAL | STRICT_TRANS_TABLES NO_AUTO_CREATE_USER STRICT_ALL_TABLES ( NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO ) |
ORACLE | PIPES_AS_CONCAT NO_FIELD_OPTIONS ANSI_QUOTES NO_AUTO_CREATE_USER IGNORE_SPACE NO_KEY_OPTIONS NO_TABLE_OPTIONS ) |
このページの内容