- TiDBについて
- クイックスタート
- 発展させる
- 概要
- クイックスタート
- TiDB CloudでTiDBクラスターを構築する(DevTier)
- TiDBのCRUDSQL
- TiDBを使用してシンプルなCRUDアプリを構築する
- アプリケーション例
- TiDBに接続する
- データベーススキーマの設計
- データの書き込み
- データの読み取り
- 取引
- 最適化
- トラブルシューティング
- 参照
- デプロイ
- 移行する
- 管理
- 監視と警告
- トラブルシューティング
- TiDBトラブルシューティングマップ
- 遅いクエリを特定する
- 遅いクエリを分析する
- SQL診断
- Top SQLを使用して高価なクエリを特定する
- ログを使用して高価なクエリを特定する
- ステートメント要約表
- ホットスポットの問題のトラブルシューティング
- 読み取りと書き込みの待ち時間の増加のトラブルシューティング
- クラスタのオンサイト情報を保存および復元する
- クラスタセットアップのトラブルシューティング
- 高いディスクI/O使用量のトラブルシューティング
- ロックの競合のトラブルシューティング
- TiFlashのトラブルシューティング
- 楽観的なトランザクションでの書き込みの競合のトラブルシューティング
- データとインデックス間の不整合のトラブルシューティング
- 性能チューニング
- チューニングガイド
- Configuration / コンフィグレーションの調整
- システムチューニング
- ソフトウェアのチューニング
- SQLチューニング
- チュートリアル
- TiDBツール
- 概要
- ユースケース
- ダウンロード
- TiUP
- ドキュメントマップ
- 概要
- 用語と概念
- TiUPコンポーネントを管理する
- FAQ
- トラブルシューティングガイド
- コマンドリファレンス
- 概要
- TiUPコマンド
- TiUPクラスターコマンド
- 概要
- tiup cluster audit
- tiup cluster check
- tiup cluster clean
- tiup cluster deploy
- tiup cluster destroy
- tiup cluster disable
- tiup cluster display
- tiup cluster edit-config
- tiup cluster enable
- tiup cluster help
- tiup cluster import
- tiup cluster list
- tiup cluster patch
- tiup cluster prune
- tiup cluster reload
- tiup cluster rename
- tiup cluster replay
- tiup cluster restart
- tiup cluster scale-in
- tiup cluster scale-out
- tiup cluster start
- tiup cluster stop
- tiup cluster template
- tiup cluster upgrade
- TiUPDMコマンド
- 概要
- tiup dm audit
- tiup dm deploy
- tiup dm destroy
- tiup dm disable
- tiup dm display
- tiup dm edit-config
- tiup dm enable
- tiup dm help
- tiup dm import
- tiup dm list
- tiup dm patch
- tiup dm prune
- tiup dm reload
- tiup dm replay
- tiup dm restart
- tiup dm scale-in
- tiup dm scale-out
- tiup dm start
- tiup dm stop
- tiup dm template
- tiup dm upgrade
- TiDBクラスタートポロジリファレンス
- DMクラスタートポロジリファレンス
- ミラーリファレンスガイド
- TiUPコンポーネント
- PingCAPクリニック診断サービス(テクニカルプレビュー)
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDBデータ移行
- TiDBデータ移行について
- クイックスタート
- DMクラスタをデプロイする
- チュートリアル
- 高度なチュートリアル
- シャーディングされたテーブルからのデータのマージと移行
- GH-ost/PT-oscを使用するMySQLデータベースからの移行
- より多くの列を持つダウンストリームTiDBテーブルにデータを移行する
- 管理
- 参照
- 例
- トラブルシューティング
- リリースノート
- バックアップと復元(BR)
- TiDB Binlog
- TiCDC
- Dumpling
- sync-diff-inspector
- TiSpark
- 参照
- クラスターアーキテクチャ
- 主要な監視指標
- セキュリティ
- 権限
- SQL
- SQL言語の構造と構文
- SQLステートメント
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER USER
ANALYZE TABLE
BACKUP
BATCH
BEGIN
CHANGE COLUMN
COMMIT
CHANGE DRAINER
CHANGE PUMP
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
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 PLACEMENT POLICY
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]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
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 [BACKUPS|RESTORES]
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE PLACEMENT POLICY
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 PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
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モード
- テーブル属性
- トランザクション
- ガベージコレクション(GC)
- ビュー
- パーティショニング
- 一時テーブル
- キャッシュされたテーブル
- 文字セットと照合
- SQLの配置ルール
- システムテーブル
mysql
- INFORMATION_SCHEMA
- 概要
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PLACEMENT_POLICIES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
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
METRICS_SCHEMA
- UI
- TiDBダッシュボード
- 概要
- 管理
- アクセス
- 概要ページ
- クラスター情報ページ
- Top SQLページ
- キービジュアライザーページ
- メトリクス関係グラフ
- SQLステートメント分析
- 遅いクエリページ
- クラスター診断
- 検索ログページ
- インスタンスプロファイリング
- セッションの管理とConfiguration / コンフィグレーション
- FAQ
- CLI
- コマンドラインフラグ
- Configuration / コンフィグレーションファイルのパラメーター
- システム変数
- ストレージエンジン
- テレメトリー
- エラーコード
- テーブルフィルター
- トポロジラベルによるレプリカのスケジュール
- よくある質問
- リリースノート
- すべてのリリース
- リリースタイムライン
- TiDBバージョニング
- v6.1
- v6.0
- v5.4
- v5.3
- v5.2
- v5.1
- v5.0
- v4.0
- v3.1
- v3.0
- v2.1
- v2.0
- v1.0
- 用語集
リテラル値
TiDBリテラル値には、文字リテラル、数値リテラル、日時リテラル、16進数、バイナリリテラル、およびNULLリテラルが含まれます。このドキュメントでは、これらのリテラル値のそれぞれを紹介します。
このドキュメントでは、文字列リテラル、数値リテラル、NULL値、16進リテラル、日付と時刻のリテラル、ブール値リテラル、およびビット値リテラルについて説明します。
文字列リテラル
文字列はバイトまたは文字のシーケンスであり、一重引用符'
文字または二重引用符"
文字で囲まれています。例えば:
'example string'
"example string"
隣り合って配置された引用符で囲まれた文字列は、1つの文字列に連結されます。次の行は同等です。
'a string'
'a' ' ' 'string'
"a" ' ' "string"
ANSI_QUOTES
SQL MODEが有効になっている場合、二重引用符で囲まれた文字列は識別子として解釈されるため、文字列リテラルは一重引用符でのみ引用できます。
文字列は、次の2つのタイプに分けられます。
- バイナリ文字列:バイトのシーケンスで構成され、文字セットと照合順序は両方とも
binary
であり、互いに比較するとバイトを単位として使用します。 - 非バイナリ文字列:文字のシーケンスで構成され、
binary
以外のさまざまな文字セットと照合があります。互いに比較すると、非バイナリ文字列は文字を単位として使用します。文字セットによっては、文字に複数のバイトが含まれる場合があります。
文字列リテラルには、特定の文字セットと照合順序を使用する文字列として指定するために、オプションのcharacter set introducer
とCOLLATE clause
を含めることができます。
[_charset_name]'string' [COLLATE collation_name]
例えば:
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8'string' COLLATE utf8_bin;
N'literal'(またはn'literal')を使用して、国別文字セットに文字列を作成できます。次のステートメントは同等です。
SELECT N'some text';
SELECT n'some text';
SELECT _utf8'some text';
文字列内のいくつかの特殊文字を表すために、エスケープ文字を使用してエスケープできます。
エスケープ文字 | 意味 |
---|---|
\ 0 | ASCII NUL(X'00')文字 |
\ ' | 一重引用符' 文字 |
\ " | 二重引用符" 文字 |
\ b | バックスペース文字 |
\ n | 改行(改行)文字 |
\ r | キャリッジリターン文字 |
\ t | タブ文字 |
\ z | ASCII 26(Ctrl + Z) |
\ | バックスラッシュ\ 文字 |
\% | % 文字 |
\ _ | _ 文字 |
'
で囲まれた文字列で"
を表す場合、または"
で囲まれた文字列で'
を表す場合は、エスケープ文字を使用する必要はありません。
詳細については、 MySQLの文字列リテラルを参照してください。
数値リテラル
数値リテラルには、整数リテラルとDECIMALリテラル、および浮動小数点リテラルが含まれます。
整数には、小数点記号として.
を含めることができます。数字の前に-
または+
を付けて、それぞれ負または正の値を示すことができます。
正確な値の数値リテラルは1, .2, 3.4, -5, -6.78, +9.10
として表すことができます。
数値リテラルは、 1.2E3, 1.2E-3, -1.2E3, -1.2E-3
などの科学的記数法で表すこともできます。
詳細については、 MySQLの数値リテラルを参照してください。
日付と時刻のリテラル
日付と時刻のリテラル値は、引用符で囲まれた文字列や数値など、いくつかの形式で表すことができます。 TiDBが日付を予期する場合、 '2017-08-24'
、および'20170824'
のいずれかを日付として解釈し20170824
。
TiDBは、次の日付形式をサポートしています。
'YYYY-MM-DD'
または'YY-MM-DD'
:ここでの-
の区切り文字は厳密ではありません。句読点を使用できます。'2017&08&24'
、'2017-08-24'
はすべて有効な日付形式'2012@12^31'
。唯一の特別な句読点は「。」です。これは、整数部分と小数部分を区切るための小数点として扱われます。日付と時刻はT
または空白で区切ることができます。たとえば、2017-8-24 10:42:00
と2017-8-24T10:42:00
は同じ日時を表します。'YYYYMMDDHHMMSS'
または'YYMMDDHHMMSS'
:たとえば、'20170824104520'
と'170824104520'
は'2017-08-24 10:45:20'
と見なされます。ただし、'170824304520'
などの範囲外の値を指定した場合、その値は有効な日付として扱われません。YYYYMMDD HHMMSS
などのYYYYMMDD HH:MM:DD
た形式はYYYY-MM-DD HHMMSS
に失敗することに注意してください。YYYYMMDDHHMMSS
またはYYMMDDHHMMSS
:これらの形式には一重引用符または二重引用符はなく、数字であることに注意してください。たとえば、20170824104520
は'2017-08-24 10:45:20'
として解釈されます。
DATETIMEまたはTIMESTAMP値の後には、マイクロ秒の精度(6桁)を表すために使用される小数部を続けることができます。小数部分は、常に残りの時間から小数点.
で区切る必要があります。
2桁のみを含む年の値があいまいです。 4桁の年形式を使用することをお勧めします。 TiDBは、次の規則に従って2桁の年の値を解釈します。
- 年の値が
70-99
の範囲にある場合は、1970-1999
に変換されます。 - 年の値が
00-69
の範囲にある場合は、2000-2069
に変換されます。
10未満の月または日の値の場合、 '2017-8-4'
は'2017-08-04'
と同じです。同じことが時間にも当てはまります。たとえば、 '2017-08-24 1:2:3'
は'2017-08-24 01:02:03'
と同じです。
日付または時刻の値が必要な場合、TiDBは値の長さに応じて指定された形式を選択します。
- 6桁:
YYMMDD
。 - 12桁:
YYMMDDHHMMSS
。 - 8桁:
YYYYMMDD
。 - 14桁:
YYYYMMDDHHMMSS
。
TiDBは、時間値に対して次の形式をサポートしています。
'D HH:MM:SS'
、'SS'
'HH:MM:SS'
'D HH:MM'
は'D HH'
D
意味し、有効な値の範囲は'HH:MM'
0-34
。HHMMSS
形式の数値:たとえば、231010
は'23:10:10'
として解釈されます。SS
、およびMMSS
形式のいずれかの数値は、時間と見なすことができHHMMSS
。
Timeタイプの小数点も.
で、小数点の後に最大6桁の精度があります。
詳細については、 MySQLの日付と時刻のリテラルを参照してください。
ブールリテラル
定数TRUE
とFALSE
は、それぞれ1と0に等しく、大文字と小文字は区別されません。
SELECT TRUE, true, tRuE, FALSE, FaLsE, false;
+------+------+------+-------+-------+-------+
| TRUE | true | tRuE | FALSE | FaLsE | false |
+------+------+------+-------+-------+-------+
| 1 | 1 | 1 | 0 | 0 | 0 |
+------+------+------+-------+-------+-------+
1 row in set (0.00 sec)
16進リテラル
16進リテラル値は、 X'val'
または0xval
表記を使用して書き込まれます。ここで、 val
には16進数字が含まれます。先頭の0x
は大文字と小文字が区別され、 0X
と書くことはできません。
法的な16進リテラル:
X'ac12'
X'12AC'
x'ac12'
x'12AC'
0xac12
0x12AC
不正な16進リテラル:
X'1z' (z is not a hexadecimal legal digit)
0X12AC (0X must be written as 0x)
X'val'
表記を使用して記述された16進リテラルには、偶数の桁が含まれている必要があります。 val
の長さが奇数(たとえば、 X'A'
またはX'11A'
)の場合、構文エラーを回避するために、値に先行ゼロを埋め込みます。
mysql> select X'aff';
ERROR 1105 (HY000): line 0 column 13 near ""hex literal: invalid hexadecimal format, must even numbers, but 3 (total length 13)
mysql> select X'0aff';
+---------+
| X'0aff' |
+---------+
| 0x0aff |
+---------+
1 row in set (0.00 sec)
デフォルトでは、16進リテラルは2進文字列です。
文字列または数値を16進形式の文字列に変換するには、次のHEX()
関数を使用します。
mysql> SELECT HEX('TiDB');
+-------------+
| HEX('TiDB') |
+-------------+
| 54694442 |
+-------------+
1 row in set (0.01 sec)
mysql> SELECT X'54694442';
+-------------+
| X'54694442' |
+-------------+
| TiDB |
+-------------+
1 row in set (0.00 sec)
ビット値リテラル
ビット値リテラルは、 b'val'
または0bval
表記を使用して記述されます。 val
は、0と1を使用して書き込まれた2進値です。先頭の0b
は大文字と小文字が区別され、 0B
と書くことはできません。
有効なビット値リテラル:
b'01'
B'01'
0b01
不正なビット値リテラル:
b'2' (2 is not a binary digit; it must be 0 or 1)
0B01 (0B must be written as 0b)
デフォルトでは、ビット値リテラルはバイナリ文字列です。
ビット値はバイナリ値として返されますが、MySQLクライアントではうまく表示されない場合があります。ビット値を印刷可能な形式に変換するには、 BIN()
やHEX()
などの変換関数を使用できます。
CREATE TABLE t (b BIT(8));
INSERT INTO t SET b = b'00010011';
INSERT INTO t SET b = b'1110';
INSERT INTO t SET b = b'100101';
mysql> SELECT b+0, BIN(b), HEX(b) FROM t;
+------+--------+--------+
| b+0 | BIN(b) | HEX(b) |
+------+--------+--------+
| 19 | 10011 | 13 |
| 14 | 1110 | E |
| 37 | 100101 | 25 |
+------+--------+--------+
3 rows in set (0.00 sec)
NULL値
NULL
はデータが空であることを意味します。これは大文字と小文字を区別せず、 \N
(大文字と小文字を区別)と同義です。
ノート:
NULL
は0
と同じではなく、空の文字列''
でもありません。