Zum Inhalt springen

Information Schema

Die Sichten in information_schema sind SQL-Standard-Sichten, die die Katalogeinträge der Datenbank beschreiben. Diese Sichten können gefiltert werden, um Informationen zu einer bestimmten Spalte oder Tabelle zu erhalten. Die Implementierung von DuckDB basiert auf dem Information Schema von PostgreSQL.

Tabellen

character_sets: Zeichensätze

Spalte Beschreibung Typ Beispiel
character_set_catalog Derzeit nicht implementiert – immer NULL. VARCHAR NULL
character_set_schema Derzeit nicht implementiert – immer NULL. VARCHAR NULL
character_set_name Name des Zeichensatzes, derzeit als Name der Datenbankkodierung implementiert. VARCHAR 'UTF8'
character_repertoire Zeichenrepertoire, zeigt UCS, wenn die Kodierung UTF8 ist, sonst nur den Kodierungsnamen. VARCHAR 'UCS'
form_of_use Zeichenkodierungsform, gleich der Datenbankkodierung. VARCHAR 'UTF8'
default_collate_catalog Name der Datenbank, die die Standardkollation enthält (immer die aktuelle Datenbank). VARCHAR 'my_db'
default_collate_schema Name des Schemas, das die Standardkollation enthält. VARCHAR 'pg_catalog'
default_collate_name Name der Standardkollation. VARCHAR 'ucs_basic'

columns: Spalten

Die Sicht, die die Kataloginformationen zu Spalten beschreibt, ist information_schema.columns. Sie listet die in der Datenbank vorhandenen Spalten und hat folgendes Layout:

Spalte Beschreibung Typ Beispiel
table_catalog Name der Datenbank, die die Tabelle enthält (immer die aktuelle Datenbank). VARCHAR 'my_db'
table_schema Name des Schemas, das die Tabelle enthält. VARCHAR 'main'
table_name Name der Tabelle. VARCHAR 'widgets'
column_name Name der Spalte. VARCHAR 'price'
ordinal_position Ordinalposition der Spalte in der Tabelle (Zählung beginnt bei 1). INTEGER 5
column_default Standardausdruck der Spalte. VARCHAR 1.99
is_nullable YES, wenn die Spalte möglicherweise nullbar ist, NO, wenn sie bekanntermaßen nicht nullbar ist. VARCHAR 'YES'
data_type Datentyp der Spalte. VARCHAR 'DECIMAL(18, 2)'
character_maximum_length Wenn data_type einen Zeichen- oder Bitstring-Typ identifiziert, die deklarierte Maximallänge; NULL für alle anderen Datentypen oder wenn keine Maximallänge deklariert wurde. INTEGER 255
character_octet_length Wenn data_type einen Zeichentyp identifiziert, die maximal mögliche Länge in Oktetten (Bytes) eines Datums; NULL für alle anderen Datentypen. Die maximale Oktettlänge hängt von der deklarierten Zeichenmaximallänge (siehe oben) und der Zeichenkodierung ab. INTEGER 1073741824
numeric_precision Wenn data_type einen numerischen Typ identifiziert, enthält diese Spalte die (deklarierte oder implizite) Genauigkeit des Typs für diese Spalte. Die Genauigkeit gibt die Anzahl signifikanter Stellen an. Für alle anderen Datentypen ist diese Spalte NULL. INTEGER 18
numeric_scale Wenn data_type einen numerischen Typ identifiziert, enthält diese Spalte die (deklarierte oder implizite) Skala des Typs für diese Spalte. Die Skala gibt die Anzahl der Stellen nach dem Dezimalpunkt an. Für alle anderen Datentypen ist diese Spalte NULL. INTEGER 2
datetime_precision Wenn data_type einen Date-, Time-, Timestamp- oder Interval-Typ identifiziert, enthält diese Spalte die (deklarierte oder implizite) Genauigkeit der Sekundenbruchteile des Typs für diese Spalte, d. h. die Anzahl der Dezimalstellen nach dem Dezimalpunkt im Sekundenwert. DuckDB unterstützt derzeit keine Sekundenbruchteile. Für alle anderen Datentypen ist diese Spalte NULL. INTEGER 0

constraint_column_usage: Verwendung von Bedingungsspalten

Diese Sicht beschreibt alle Spalten der aktuellen Datenbank, die von einer Bedingung verwendet werden. Bei einer Check-Bedingung identifiziert diese Sicht die Spalten, die im Check-Ausdruck verwendet werden. Bei einer Not-Null-Bedingung identifiziert sie die Spalte, auf der die Bedingung definiert ist. Bei einer Fremdschlüsselbedingung identifiziert sie die Spalten, auf die der Fremdschlüssel verweist. Bei einer Unique- oder Primärschlüsselbedingung identifiziert sie die eingeschränkten Spalten.

Spalte Beschreibung Typ Beispiel
table_catalog Name der Datenbank, die die Tabelle enthält, die die von einer Bedingung verwendete Spalte enthält (immer die aktuelle Datenbank) VARCHAR 'my_db'
table_schema Name des Schemas, das die Tabelle enthält, die die von einer Bedingung verwendete Spalte enthält VARCHAR 'main'
table_name Name der Tabelle, die die von einer Bedingung verwendete Spalte enthält VARCHAR 'widgets'
column_name Name der Spalte, die von einer Bedingung verwendet wird VARCHAR 'price'
constraint_catalog Name der Datenbank, die die Bedingung enthält (immer die aktuelle Datenbank) VARCHAR 'my_db'
constraint_schema Name des Schemas, das die Bedingung enthält VARCHAR 'main'
constraint_name Name der Bedingung VARCHAR 'exam_id_students_id_fkey'

key_column_usage: Verwendung von Schlüsselspalten

Spalte Beschreibung Typ Beispiel
constraint_catalog Name der Datenbank, die die Bedingung enthält (immer die aktuelle Datenbank). VARCHAR 'my_db'
constraint_schema Name des Schemas, das die Bedingung enthält. VARCHAR 'main'
constraint_name Name der Bedingung. VARCHAR 'exams_exam_id_fkey'
table_catalog Name der Datenbank, die die Tabelle enthält, die die durch diese Bedingung eingeschränkte Spalte enthält (immer die aktuelle Datenbank). VARCHAR 'my_db'
table_schema Name des Schemas, das die Tabelle enthält, die die durch diese Bedingung eingeschränkte Spalte enthält. VARCHAR 'main'
table_name Name der Tabelle, die die durch diese Bedingung eingeschränkte Spalte enthält. VARCHAR 'exams'
column_name Name der durch diese Bedingung eingeschränkten Spalte. VARCHAR 'exam_id'
ordinal_position Ordinalposition der Spalte innerhalb des Bedingungsschlüssels (Zählung beginnt bei 1). INTEGER 1
position_in_unique_constraint Bei einer Fremdschlüsselbedingung die Ordinalposition der referenzierten Spalte innerhalb ihrer Unique-Bedingung (Zählung beginnt bei 1); sonst NULL. INTEGER 1

referential_constraints: Referenzielle Bedingungen

Spalte Beschreibung Typ Beispiel
constraint_catalog Name der Datenbank, die die Bedingung enthält (immer die aktuelle Datenbank). VARCHAR 'my_db'
constraint_schema Name des Schemas, das die Bedingung enthält. VARCHAR main
constraint_name Name der Bedingung. VARCHAR exam_id_students_id_fkey
unique_constraint_catalog Name der Datenbank, die die Unique- oder Primärschlüsselbedingung enthält, auf die die Fremdschlüsselbedingung verweist. VARCHAR 'my_db'
unique_constraint_schema Name des Schemas, das die Unique- oder Primärschlüsselbedingung enthält, auf die die Fremdschlüsselbedingung verweist. VARCHAR 'main'
unique_constraint_name Name der Unique- oder Primärschlüsselbedingung, auf die die Fremdschlüsselbedingung verweist. VARCHAR 'students_id_pkey'
match_option Match-Option der Fremdschlüsselbedingung. Immer NONE. VARCHAR NONE
update_rule Update-Regel der Fremdschlüsselbedingung. Immer NO ACTION. VARCHAR NO ACTION
delete_rule Delete-Regel der Fremdschlüsselbedingung. Immer NO ACTION. VARCHAR NO ACTION

schemata: Datenbank, Katalog und Schema

Die oberste Katalogsicht ist information_schema.schemata. Sie listet die Kataloge und die in der Datenbank vorhandenen Schemata und hat folgendes Layout:

Spalte Beschreibung Typ Beispiel
catalog_name Name der Datenbank, die das Schema enthält. VARCHAR 'my_db'
schema_name Name des Schemas. VARCHAR 'main'
schema_owner Name des Eigentümers des Schemas. Noch nicht implementiert. VARCHAR 'duckdb'
default_character_set_catalog Betrifft ein in DuckDB nicht verfügbares Merkmal. VARCHAR NULL
default_character_set_schema Betrifft ein in DuckDB nicht verfügbares Merkmal. VARCHAR NULL
default_character_set_name Betrifft ein in DuckDB nicht verfügbares Merkmal. VARCHAR NULL
sql_path Betrifft ein in DuckDB nicht verfügbares Merkmal. VARCHAR NULL

tables: Tabellen und Sichten

Die Sicht, die die Kataloginformationen zu Tabellen und Sichten beschreibt, ist information_schema.tables. Sie listet die in der Datenbank vorhandenen Tabellen und hat folgendes Layout:

Spalte Beschreibung Typ Beispiel
table_catalog Der Katalog, zu dem die Tabelle oder Sicht gehört. VARCHAR 'my_db'
table_schema Das Schema, zu dem die Tabelle oder Sicht gehört. VARCHAR 'main'
table_name Der Name der Tabelle oder Sicht. VARCHAR 'widgets'
table_type Der Tabellentyp. Einer von: BASE TABLE, LOCAL TEMPORARY, VIEW. VARCHAR 'BASE TABLE'
self_referencing_column_name Betrifft ein in DuckDB nicht verfügbares Merkmal. VARCHAR NULL
reference_generation Betrifft ein in DuckDB nicht verfügbares Merkmal. VARCHAR NULL
user_defined_type_catalog Ist die Tabelle eine typisierte Tabelle, der Name der Datenbank, die den zugrunde liegenden Datentyp enthält (immer die aktuelle Datenbank), sonst NULL. Derzeit nicht implementiert. VARCHAR NULL
user_defined_type_schema Ist die Tabelle eine typisierte Tabelle, der Name des Schemas, das den zugrunde liegenden Datentyp enthält, sonst NULL. Derzeit nicht implementiert. VARCHAR NULL
user_defined_type_name Ist die Tabelle eine typisierte Tabelle, der Name des zugrunde liegenden Datentyps, sonst NULL. Derzeit nicht implementiert. VARCHAR NULL
is_insertable_into YES, wenn in die Tabelle eingefügt werden kann, NO wenn nicht (Basistabellen sind immer einfügbar, Sichten nicht unbedingt.) VARCHAR 'YES'
is_typed YES, wenn die Tabelle eine typisierte Tabelle ist, NO wenn nicht. VARCHAR 'NO'
commit_action Noch nicht implementiert. VARCHAR 'NO'

table_constraints: Tabellenbedingungen

Spalte Beschreibung Typ Beispiel
constraint_catalog Name der Datenbank, die die Bedingung enthält (immer die aktuelle Datenbank). VARCHAR 'my_db'
constraint_schema Name des Schemas, das die Bedingung enthält. VARCHAR 'main'
constraint_name Name der Bedingung. VARCHAR 'exams_exam_id_fkey'
table_catalog Name der Datenbank, die die Tabelle enthält (immer die aktuelle Datenbank). VARCHAR 'my_db'
table_schema Name des Schemas, das die Tabelle enthält. VARCHAR 'main'
table_name Name der Tabelle. VARCHAR 'exams'
constraint_type Typ der Bedingung: CHECK, FOREIGN KEY, PRIMARY KEY oder UNIQUE. VARCHAR 'FOREIGN KEY'
is_deferrable YES, wenn die Bedingung aufschiebbar ist, NO wenn nicht. VARCHAR 'NO'
initially_deferred YES, wenn die Bedingung aufschiebbar und zunächst aufgeschoben ist, NO wenn nicht. VARCHAR 'NO'
enforced Immer YES. VARCHAR 'YES'
nulls_distinct Ist die Bedingung eine Unique-Bedingung, dann YES, wenn die Bedingung NULLs als verschieden behandelt, oder NO, wenn sie NULLs als nicht verschieden behandelt, sonst NULL für andere Bedingungstypen. VARCHAR 'YES'

Katalogfunktionen

Mehrere Funktionen liefern Details zu den in der Datenbank konfigurierten Katalogen und Schemata.

Funktion Beschreibung Beispiel Ergebnis
current_catalog() Gibt den Namen des derzeit aktiven Katalogs zurück. Standard ist memory. current_catalog() 'memory'
current_schema() Gibt den Namen des derzeit aktiven Schemas zurück. Standard ist main. current_schema() 'main'
current_schemas(boolean) Gibt die Liste der Schemata zurück. Übergeben Sie den Parameter true, um implizite Schemata einzuschließen. current_schemas(true) ['temp', 'main', 'pg_catalog']