INFORMATION_SCHEMA (または information_schema) は、データベースオブジェクトのメタデータに対する、ある程度標準化されたDBMS 非依存のビューを提供するシステムデータベースです。INFORMATION_SCHEMA のビューは、通常のシステムテーブルと比べると一般に機能が限定的ですが、ツールはこれらを利用して、DBMS をまたいで基本的な情報を取得できます。INFORMATION_SCHEMA のビューの構造と内容は、後方互換性を維持しながら発展していくことが想定されています。つまり、新しい機能のみが追加され、既存の機能は変更または削除されません。内部実装の観点では、INFORMATION_SCHEMA のビューは通常、system.columns、system.databases、system.tables などの通常のシステムテーブルに対応付けられています。
SHOW TABLES FROM INFORMATION_SCHEMA;
-- or:
SHOW TABLES FROM information_schema;┌─name────────────────────┐
│ COLLATIONS │
│ COLUMNS │
│ KEY_COLUMN_USAGE │
│ REFERENTIAL_CONSTRAINTS │
│ SCHEMATA │
| STATISTICS |
│ TABLES │
│ VIEWS │
│ columns │
│ key_column_usage │
│ referential_constraints │
│ schemata │
| statistics |
│ tables │
│ views │
└─────────────────────────┘INFORMATION_SCHEMA には、次のビューが含まれます。
他のデータベースとの互換性のため、INFORMATION_SCHEMA.columns のような大文字と小文字を区別しない同等のビューも提供されています。同様に、これらのビュー内のすべてのカラムについても、小文字 (たとえば table_name) と大文字 (TABLE_NAME) の両方のバリアントが提供されています。
COLUMNS
system.columns システムテーブルから読み取られたカラムと、ClickHouse ではサポートされていない、または意味を持たない (常に NULL) ものの、標準上は必要とされるカラムが含まれます。
カラム:
table_catalog(String) — 現在のところ未使用です。table_schema(String) — 現在のところ未使用です。table_name(String) — 現在のところ未使用です。non_unique(Int32) — 現在のところ未使用です。index_schema(String) — 現在のところ未使用です。index_name(Nullable(String)) — 現在のところ未使用です。seq_in_index(UInt32) — 現在のところ未使用です。column_name(Nullable(String)) — 現在のところ未使用です。collation(Nullable(String)) — 現在のところ未使用です。cardinality(Nullable(Int64)) — 現在のところ未使用です。sub_part(Nullable(Int64)) — 現在のところ未使用です。packed(Nullable(String)) — 現在のところ未使用です。nullable(String) — 現在のところ未使用です。index_type(String) — 現在のところ未使用です。comment(String) — 現在のところ未使用です。index_comment(String) — 現在のところ未使用です。is_visible(String) — 現在のところ未使用です。expression(Nullable(String)) — 現在のところ未使用です。
例
SELECT table_catalog,
table_schema,
table_name,
column_name,
ordinal_position,
column_default,
is_nullable,
data_type,
character_maximum_length,
character_octet_length,
numeric_precision,
numeric_precision_radix,
numeric_scale,
datetime_precision,
character_set_catalog,
character_set_schema,
character_set_name,
collation_catalog,
collation_schema,
collation_name,
domain_catalog,
domain_schema,
domain_name,
column_comment,
column_type
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (table_schema = currentDatabase() OR table_schema = '')
AND table_name NOT LIKE '%inner%'
LIMIT 1
FORMAT Vertical;Row 1:
──────
table_catalog: default
table_schema: default
table_name: describe_example
column_name: id
ordinal_position: 1
column_default:
is_nullable: 0
data_type: UInt64
character_maximum_length: ᴺᵁᴸᴸ
character_octet_length: ᴺᵁᴸᴸ
numeric_precision: 64
numeric_precision_radix: 2
numeric_scale: 0
datetime_precision: ᴺᵁᴸᴸ
character_set_catalog: ᴺᵁᴸᴸ
character_set_schema: ᴺᵁᴸᴸ
character_set_name: ᴺᵁᴸᴸ
collation_catalog: ᴺᵁᴸᴸ
collation_schema: ᴺᵁᴸᴸ
collation_name: ᴺᵁᴸᴸ
domain_catalog: ᴺᵁᴸᴸ
domain_schema: ᴺᵁᴸᴸ
domain_name: ᴺᵁᴸᴸSCHEMATA
system.databases システムテーブルから読み取られるカラムと、ClickHouse ではサポートされていない、または意味をなさない (常に NULL) ものの、標準上必要なカラムが含まれます。
カラム:
catalog_name(String) — データベース名。schema_name(String) — データベース名。schema_owner(String) — スキーマ所有者の名前。常に'default'。default_character_set_catalog(Nullable(String)) —NULL。未サポートです。default_character_set_schema(Nullable(String)) —NULL。未サポートです。default_character_set_name(Nullable(String)) —NULL。未サポートです。sql_path(Nullable(String)) —NULL。未サポートです。
例
SELECT catalog_name,
schema_name,
schema_owner,
default_character_set_catalog,
default_character_set_schema,
default_character_set_name,
sql_path
FROM information_schema.schemata
WHERE schema_name ILIKE 'information_schema'
LIMIT 1
FORMAT Vertical;Row 1:
──────
catalog_name: INFORMATION_SCHEMA
schema_name: INFORMATION_SCHEMA
schema_owner: default
default_character_set_catalog: ᴺᵁᴸᴸ
default_character_set_schema: ᴺᵁᴸᴸ
default_character_set_name: ᴺᵁᴸᴸ
sql_path: ᴺᵁᴸᴸTABLES
system.tables システムテーブルから読み取られるカラムが含まれます。
カラム:
table_catalog(String) — テーブルが存在するデータベースの名前。table_schema(String) — テーブルが存在するデータベースの名前。table_name(String) — テーブル名。table_type(String) — テーブルの種類。設定可能な値:BASE TABLEVIEWFOREIGN TABLELOCAL TEMPORARYSYSTEM VIEW
table_rows(Nullable(UInt64)) — 行の総数。判定できない場合は NULL。data_length(Nullable(UInt64)) — ディスク上のデータのサイズ。判定できない場合は NULL。index_length(Nullable(UInt64)) — 主キー、セカンダリ索引、およびすべてのマークの合計サイズ。table_collation(Nullable(String)) — テーブルのデフォルトの照合順序。常にutf8mb4_0900_ai_ciです。table_comment(Nullable(String)) — テーブル作成時に使用されるコメント。
例
SELECT table_catalog,
table_schema,
table_name,
table_type,
table_collation,
table_comment
FROM INFORMATION_SCHEMA.TABLES
WHERE (table_schema = currentDatabase() OR table_schema = '')
AND table_name NOT LIKE '%inner%'
LIMIT 1
FORMAT Vertical;Row 1:
──────
table_catalog: default
table_schema: default
table_name: describe_example
table_type: BASE TABLE
table_collation: utf8mb4_0900_ai_ci
table_comment: VIEWS
テーブルエンジン View を使用している場合、system.tables システムテーブルから読み取られるカラムが含まれます。
カラム:
table_catalog(String) — テーブルが存在するデータベースの名前。table_schema(String) — テーブルが存在するデータベースの名前。table_name(String) — テーブル名。view_definition(String) — ビューのSELECTクエリ。check_option(String) —NONE、チェックは行われません。is_updatable(Enum8) —NO、ビューは更新されません。is_insertable_into(Enum8) — 作成されたビューがマテリアライズドかどうかを示します。設定可能な値:NO— 作成されたビューはマテリアライズドではありません。YES— 作成されたビューはマテリアライズドです。
is_trigger_updatable(Enum8) —NO、トリガーは更新されません。is_trigger_deletable(Enum8) —NO、トリガーは削除されません。is_trigger_insertable_into(Enum8) —NO、トリガーにはデータは挿入されません。
例
CREATE VIEW v (n Nullable(Int32), f Float64) AS SELECT n, f FROM t;
CREATE MATERIALIZED VIEW mv ENGINE = Null AS SELECT * FROM system.one;
SELECT table_catalog,
table_schema,
table_name,
view_definition,
check_option,
is_updatable,
is_insertable_into,
is_trigger_updatable,
is_trigger_deletable,
is_trigger_insertable_into
FROM information_schema.views
WHERE table_schema = currentDatabase()
LIMIT 1
FORMAT Vertical;Row 1:
──────
table_catalog: default
table_schema: default
table_name: mv
view_definition: SELECT * FROM system.one
check_option: NONE
is_updatable: NO
is_insertable_into: YES
is_trigger_updatable: NO
is_trigger_deletable: NO
is_trigger_insertable_into: NOKEY_COLUMN_USAGE
制約が適用されている system.tables システムテーブルのカラムが含まれます。
カラム:
constraint_catalog(String) — 現在は未使用です。常にdefです。constraint_schema(String) — 制約が属するスキーマ (データベース) の名前です。constraint_name(Nullable(String)) — 制約の名前です。table_catalog(String) — 現在は未使用です。常にdefです。table_schema(String) — テーブルが属するスキーマ (データベース) の名前です。table_name(String) — 制約が設定されているテーブルの名前です。column_name(Nullable(String)) — 制約が設定されているカラムの名前です。ordinal_position(UInt32) — 現在は未使用です。常に1です。position_in_unique_constraint(Nullable(UInt32)) — 現在は未使用です。常にNULLです。referenced_table_schema(Nullable(String)) — 現在は未使用です。常に NULL です。referenced_table_name(Nullable(String)) — 現在は未使用です。常に NULL です。referenced_column_name(Nullable(String)) — 現在は未使用です。常に NULL です。
例
CREATE TABLE test (i UInt32, s String) ENGINE MergeTree ORDER BY i;
SELECT constraint_catalog,
constraint_schema,
constraint_name,
table_catalog,
table_schema,
table_name,
column_name,
ordinal_position,
position_in_unique_constraint,
referenced_table_schema,
referenced_table_name,
referenced_column_name
FROM information_schema.key_column_usage
WHERE table_name = 'test'
FORMAT Vertical;Row 1:
──────
constraint_catalog: def
constraint_schema: default
constraint_name: PRIMARY
table_catalog: def
table_schema: default
table_name: test
column_name: i
ordinal_position: 1
position_in_unique_constraint: ᴺᵁᴸᴸ
referenced_table_schema: ᴺᵁᴸᴸ
referenced_table_name: ᴺᵁᴸᴸ
referenced_column_name: ᴺᵁᴸᴸREFERENTIAL_CONSTRAINTS
外部キーに関する情報が含まれます。現在は空の結果 (行は返されません) を返しますが、これは Tableau Online のようなサードパーティ製ツールとの互換性を確保するのに最低限十分です。
カラム:
constraint_catalog(String) — 現在は使用されていません。constraint_schema(String) — 現在は使用されていません。constraint_name(Nullable(String)) — 現在は使用されていません。unique_constraint_catalog(String) — 現在は使用されていません。unique_constraint_schema(String) — 現在は使用されていません。unique_constraint_name(Nullable(String)) — 現在は使用されていません。match_option(String) — 現在は使用されていません。update_rule(String) — 現在は使用されていません。delete_rule(String) — 現在は使用されていません。table_name(String) — 現在は使用されていません。referenced_table_name(String) — 現在は使用されていません。
STATISTICS
テーブルの索引に関する情報を提供します。現在は空の結果 (行は返されません) を返しますが、これは Tableau Online のようなサードパーティ製ツールとの互換性を確保するには十分です。
COLLATIONS
使用可能な照合順序に関する情報を提供します。system.collations の照合順序に加え、MySQL 互換性のための 2 行が含まれます。utf8mb4_0900_ai_ci は、MySQL プロトコルがハンドシェイク時、SCHEMATA.DEFAULT_COLLATION_NAME、および TABLES.TABLE_COLLATION で通知する照合順序です。binary は、MySQL プロトコルが結果セットのメタデータ内の数値カラムやその他の非文字列カラムに設定する疑似照合順序です。これにより、通知された照合順序に従ってこのビューを参照する MySQL 対応クライアントは、これらの照合順序を見つけられます。
カラム:
collation_name(String) — 照合順序の名前。character_set_name(Nullable(String)) — 関連付けられた文字セット (utf8mb4_0900_ai_ciではutf8mb4、binaryではbinary、それ以外はNULL) 。MySQL 互換性のために提供されます。id(Nullable(UInt64)) — MySQL の照合順序 ID (utf8mb4_0900_ai_ciでは255、binaryでは63、それ以外はNULL) 。MySQL 互換性のために提供されます。is_default(Nullable(String)) — 照合順序がその文字セットのデフォルトかどうか (両方の MySQL 互換性行ではYes、それ以外はNULL) 。MySQL 互換性のために提供されます。is_compiled(Nullable(String)) — 照合順序がサーバーにコンパイルされているかどうか (両方の MySQL 互換性行ではYes、それ以外はNULL) 。MySQL 互換性のために提供されます。sortlen(Nullable(UInt64)) — 最小ソート長 (utf8mb4_0900_ai_ciでは0、binaryでは1、それ以外はNULL) 。MySQL 互換性のために提供されます。pad_attribute(Nullable(String)) — パディング属性 (NO PADまたはPAD SPACE) 。両方の MySQL 互換性行ではNO PAD、それ以外はNULLです。MySQL 互換性のために提供されます。