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'] |