Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
CREATE DATABASE
Erstellt eine neue Datenbank.
Sie müssen ein Superuser sein oder über die CREATEDB-Berechtigung verfügen, um eine Datenbank zu erstellen. Sie müssen ein Superuser sein oder sowohl über die Berechtigung CREATEDB als auch die Berechtigung CREATEUSER verfügen, um eine Datenbank zu erstellen, die mit einer Null-ETL-Integration verknüpft ist.
CREATE DATABASE kann nicht innerhalb eines Transaktionsblocks (BEGIN ... END). Weitere Informationen Transaktionen finden Sie unter Isolierungsstufen in Amazon Redshift.
Syntax
CREATE DATABASE database_name [ { [ FROM INTEGRATION '<integration_id>'[ DATABASE '<source_database>' ] [ SET ] [ ACCEPTINVCHARS [=] { TRUE | FALSE }] [ QUERY_ALL_STATES [=] { TRUE | FALSE }] [ REFRESH_INTERVAL <interval> ] [ TRUNCATECOLUMNS [=] { TRUE | FALSE } ] [ HISTORY_MODE [=] {TRUE | FALSE} ] ] [ WITH ] [ OWNER [=] db_owner ] [ CONNECTION LIMIT { limit | UNLIMITED } ] [ COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI } ] [ ISOLATION LEVEL { SNAPSHOT | SERIALIZABLE } ] } | { FROM { { ARN '<arn>' } { WITH DATA CATALOG SCHEMA '<schema>' | WITH NO DATA CATALOG SCHEMA } } } | { IAM_ROLE {default | 'SESSION' | 'arn:aws:iam::<account-id>:role/<role-name>' } } | { [ WITH PERMISSIONS ] FROM DATASHARE datashare_name OF [ ACCOUNT account_id ] NAMESPACE namespace_guid } ]
Parameter
- database_name
-
Name der neuen Datenbank. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.
- FROM INTEGRATION '<integration_id>' [ DATABASE '<source_database>' ]
-
Gibt an, ob die Datenbank mit einer ID für eine Null-ETL-Integration erstellt werden soll. Sie können die
integration_idaus der Systemansicht SVV_INTEGRATION abrufen. Bei Null-ETL-Integrationen für Aurora PostgreSQL müssen Sie auch einen Namen fürsource_databaseangeben, der auch aus SVV_INTEGRATION abgerufen werden kann.Ein Beispiel finden Sie unter Erstellen von Datenbanken zum Erhalt von Ergebnissen von Null-ETL-Integrationen. Weitere Informationen zum Erstellen von Datenbanken mit Null-ETL-Integrationen finden Sie unter Erstellen von Zieldatenbanken in Amazon Redshift im Managementleitfaden zu Amazon Redshift.
- SET
-
Optionales Schlüsselwort.
- ACCEPTINVCHARS [=] { TRUE | FALSE }
-
Die ACCEPTINVCHARS-Klausel legt fest, ob Null-ETL-Integrationstabellen mit der Aufnahme fortfahren, wenn ungültige Zeichen für den VARCHAR-Datentyp erkannt werden. Wenn ungültige Zeichen gefunden werden, wird das ungültige Zeichen durch ein standardmäßiges
?-Zeichen ersetzt. - QUERY_ALL_STATES [=] { TRUE | FALSE }
-
Die QUERY_ALL_STATES-Klausel legt fest, ob Null-ETL-Integrationstabellen in allen Status (
Synced,Failed,ResyncRequiredundResyncInitiated) abgefragt werden können. Standardmäßig kann eine Null-ETL-Integrationstabelle nur im StatusSyncedabgefragt werden. - REFRESH_INTERVAL <interval>
-
Die REFRESH_INTERVAL-Klausel legt das ungefähre Zeitintervall in Sekunden für die Aktualisierung von Daten aus der Zero-ETL-Quelle in der Zieldatenbank fest. Der Wert für Null-ETL-Integrationen mit dem Quelltyp Aurora MySQL, Aurora PostgreSQL oder RDS for MySQL kann auf 0–432 000 Sekunden (5 Tage) festgelegt werden. Bei Null-ETL-Integrationen für Amazon DynamoDB kann der Wert auf 900–432.000 Sekunden (15 Minuten bis 5 Tage) festgelegt werden. Die Standardeinstellung für
intervalist null (0) Sekunden für Null-ETL-Integrationen, deren Quelltyp Aurora MySQL, Aurora PostgreSQL oder RDS für MySQL ist. Bei Null-ETL-Integrationen für Amazon DynamoDB beträgt die Standardeinstellung fürinterval900 Sekunden (15 Minuten). - TRUNCATECOLUMNS [=] { TRUE | FALSE }
-
Die TRUNCATECOLUMNS-Klausel legt fest, ob Null-ETL-Integrationstabellen mit der Aufnahme fortfahren, wenn die Werte für die VARCHAR-Spalten- oder SUPER-Spaltenattribute den Grenzwert überschreiten. Wenn
TRUE, werden die Werte gekürzt, sodass sie in die Spalte passen, und die Werte von JSON-Attributen, die den verfügbaren Platz überschreiten, werden gekürzt, damit sie in die SUPER-Spalte passen. - HISTORY_MODE [=] {TRUE | FALSE}
-
Eine Klausel, die angibt, ob Amazon Redshift den Verlaufsmodus für alle neuen Tabellen in der angegebenen Datenbank festlegt. Diese Option gilt nur für Datenbanken, die für die Null-ETL-Integration erstellt wurden.
Die HISTORY_MODE-Klausel kann auf
TRUEoderFALSEgesetzt werden. Der Standardwert istFALSE. Informationen zu HISTORY_MODE finden Sie unter Verlaufsmodus im Managementleitfaden zu Amazon Redshift. - WITH
-
Optionales Schlüsselwort.
- OWNER [=] db_owner
-
Gibt den Benutzernamen des Datenbankbesitzers an.
- CONNECTION LIMIT { Limit | UNLIMITED }
-
Die maximale Zahl von Datenbankverbindungen, die Benutzer gleichzeitig geöffnet haben dürfen. Das Limit wird für Superuser nicht durchgesetzt. Mithilfe des Schlüsselworts UNLIMITED können Sie die maximale Zahl gleichzeitiger Verbindungen festlegen. Möglicherweise gilt auch ein Limit für die Zahl der Verbindungen für die einzelnen Benutzer. Weitere Informationen finden Sie unter CREATE USER. Der Standardwert ist UNLIMITED. Um die aktuellen Verbindungen anzuzeigen, führen Sie eine Abfrage für die Systemansicht STV_SESSIONS aus.
Anmerkung
Wenn sowohl für Benutzer- als auch für Datenbankverbindungen Limits gelten, muss ein ungenutzter Verbindungsplatz verfügbar sein, der sich innerhalb beider Grenzen befindet, wenn ein Benutzer versucht, eine Verbindung herzustellen.
- COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI }
-
Eine Klausel, die angibt, ob beim Suchen oder Vergleichen von Zeichenfolgen zwischen Groß- und Kleinschreibung unterschieden wird oder nicht. Die Standardeinstellung ist die Unterscheidung zwischen Groß- und Kleinschreibung.
COLLATE wird nicht unterstützt, wenn Sie eine Datenbank aus einem Datashare erstellen.
CASE_SENSITIVE und CS sind austauschbar und liefern dieselben Ergebnisse. Ebenso sind CASE_INSENSITIVE und CI austauschbar und führen zu denselben Ergebnissen.
- ISOLATION LEVEL { SNAPSHOT | SERIALIZABLE }
-
Eine Klausel, die die verwendete Isolationsstufe bei Abfragen für eine Datenbank angibt. Weitere Informationen zu Isolationsstufen finden Sie unter Isolierungsstufen in Amazon Redshift.
-
SNAPSHOT-Isolation – bietet eine Isolationsstufe mit Schutz vor Aktualisierungs- und Löschkonflikten. Dies ist der Standardwert für eine Datenbank, die in einem bereitgestellten Cluster oder in einem Serverless-Namespace erstellt wurde.
-
SERIALIZABLE-Isolation (serialisierbare Isolation) – bietet volle Serialisierbarkeit für gleichzeitige Transaktionen.
-
- FROM ARN '<ARN>'
-
Der AWS Glue-Datenbank-ARN, der zum Erstellen der Datenbank verwendet werden soll.
- { WITH DATA CATALOG SCHEMA '<schema>' | WITH NO DATA CATALOG SCHEMA }
-
Anmerkung
Dieser Parameter ist nur anwendbar, wenn Ihr CREATE DATABASE-Befehl auch den FROM ARN-Parameter verwendet.
Gibt an, ob die Datenbank unter Verwendung eines Schemas zur Unterstützung des Zugriffs in AWS Glue Data Catalog erstellt werden soll.
- IAM_ROLE { default | 'SESSION' | 'arn:aws:iam::
<AWS-Konto-id>:role/<role-name>' } -
Anmerkung
Dieser Parameter ist nur anwendbar, wenn Ihr CREATE DATABASE-Befehl auch den FROM ARN-Parameter verwendet.
Wenn Sie beim Ausführen des CREATE DATABASE-Befehls eine IAM-Rolle angeben, die dem Cluster zugeordnet ist, verwendet Amazon Redshift die Anmeldeinformationen der Rolle, wenn Sie Abfragen in der Datenbank ausführen.
Die Angabe des Schlüsselworts
defaultbedeutet, die IAM-Rolle zu verwenden, die als Standard festgelegt und mit dem Cluster verknüpft ist.Verwenden Sie
'SESSION', wenn Sie über eine Verbundidentität eine Verbindung zu Ihrem Amazon-Redshift-Cluster herstellen und über das mit diesem Befehl erstellte externe Schema auf die Tabellen zugreifen. Ein Beispiel zur Verwendung einer Verbundidentität finden Sie unter Verwenden einer Verbundidentität zur Verwaltung des Amazon-Redshift-Zugriffs auf lokale Ressourcen und externe Amazon-Redshift-Spectrum-Tabellen. Darin wird erläutert, wie Sie eine Verbundidentität konfigurieren.Verwenden Sie den Amazon-Ressourcennamen (ARN) für eine IAM-Rolle, die von Ihrem Cluster für Authentifizierung und Autorisierung verwendet wird. Die IAM-Rolle muss mindestens die Berechtigung besitzen, eine LIST-Operation für den Amazon-S3-Bucket auszuführen, auf den zugegriffen werden soll, und eine GET-Operation für die Amazon-S3-Objekte, die der Bucket enthält. Weitere Informationen zur Verwendung von IAM_ROLE beim Erstellen einer Datenbank mit AWS Glue Data Catalog für Datashares finden Sie unter Arbeiten mit von Lake Formation verwalteten Datashares als Konsument.
Nachfolgend ist die Syntax für die IAM_ROLE-Parameterzeichenfolge für einen einzelnen ARN aufgeführt.
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'Sie können Rollen miteinander verketten. Auf diese Weise kann der Cluster eine andere IAM-Rolle annehmen, die möglicherweise zu einem anderen Konto gehört. Es können bis zu 10 Rollen miteinander verkettet werden. Weitere Informationen finden Sie unter Verketten von IAM-Rollen in Amazon Redshift Spectrum.
Fügen Sie dieser IAM-Rolle eine IAM-Berechtigungsrichtlinie ähnlich der folgenden an:
Informationen zu den Schritten für das Erstellen einer IAM-Rolle zur Verwendung mit der Verbundabfrage finden Sie unter Erstellen eines Secrets und einer IAM-Rolle für die Verwendung von Verbundabfragen.
Anmerkung
Fügen Sie keine Leerzeichen in die Liste der verketteten Rollen ein.
Nachfolgend finden Sie die Syntax für die Verkettung von drei Rollen.
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-1-name>,arn:aws:iam::<aws-account-id>:role/<role-2-name>,arn:aws:iam::<aws-account-id>:role/<role-3-name>'
Syntax für die Verwendung von CREATE DATABASE mit einem Datashare
Die folgende Syntax beschreibt den CREATE DATABASE-Befehl, der zum Erstellen von Datenbanken aus einem Datashare verwendet wird, um Daten innerhalb desselben AWS-Kontos freizugeben.
CREATE DATABASE database_name [ [ WITH PERMISSIONS ] FROM DATASHARE datashare_name OF [ ACCOUNT account_id ] NAMESPACE namespace_guid
Die folgende Syntax beschreibt den CREATE DATABASE-Befehl, der zum Erstellen von Datenbanken aus einem Datashare verwendet wird, um Daten unterschiedlicher AWS-Konten freizugeben.
CREATE DATABASE database_name [ [ WITH PERMISSIONS ] FROM DATASHARE datashare_name OF ACCOUNT account_id NAMESPACE namespace_guid
Parameter für die Verwendung von CREATE DATABASE mit einem Datashare
- VOM DATASHARE
-
Ein Schlüsselwort, das angibt, wo sich das Datashare befindet.
- datashare_name
-
Der Name des Datashares,in dem die Consumer-Datenbank erstellt wird.
- WITH PERMISSIONS
-
Gibt an, dass für die aus dem Datashare erstellte Datenbank für den Zugriff auf einzelne Datenbankobjekte Berechtigungen auf Objektebene erforderlich sind. Ohne diese Klausel haben Benutzer oder Rollen, denen die USAGE-Berechtigung für die Datenbank erteilt wurde, automatisch Zugriff auf alle Datenbankobjekte in der Datenbank.
- NAMESPACE namespace_guid
-
Ein Wert, der den Produzenten-Namespace angibt, zu dem das Datashare gehört.
- ACCOUNT account_id
-
Ein Wert, der das Produzenten-Konto angibt, zu dem das Datashare gehört.
Verwendungshinweise für CREATE DATABASE in Verbindung mit Datashares
Wenn Sie als Datenbank-Superuser CREATE DATABASE verwenden, um Datenbanken aus Datashares innerhalb des AWS-Kontos zu erstellen, geben Sie die Option NAMESPACE an. Die Option ACCOUNT ist optional. Wenn Sie CREATE DATABASE verwenden, um Datenbanken aus AWS-kontenübergreifenden Datashares zu erstellen, geben Sie sowohl ACCOUNT als auch NAMESPACE vom Produzenten an.
Sie können nur eine Konsumentendatenbank für ein Datashare in einem Konsumenten-Cluster erstellen. Sie können nicht mehrere Konsumentendatenbanken erstellen, die auf dasselbe Datashare verweisen.
CREATE DATABASE über AWS Glue Data Catalog
Wenn Sie eine Datenbank mit einem Datenbank-ARN von AWS Glue erstellen möchten, geben Sie den ARN in Ihrem CREATE DATABASE-Befehl an.
CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH NO DATA CATALOG SCHEMA;
Optional können Sie auch einen Wert im IAM_ROLE-Parameter eingeben. Weitere Informationen zu Parametern und zulässigen Werten finden Sie unter Parameter.
Die folgenden Beispiele veranschaulichen, wie Sie mithilfe einer IAM-Rolle eine Datenbank aus einem ARN erstellen.
CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH NO DATA CATALOG SCHEMA IAM_ROLE <iam-role-arn>
CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH NO DATA CATALOG SCHEMA IAM_ROLE default;
Sie können eine Datenbank auch mithilfe eines DATA CATALOG SCHEMA erstellen.
CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH DATA CATALOG SCHEMA <sample_schema> IAM_ROLE default;
Erstellen von Datenbanken zum Erhalt von Ergebnissen von Null-ETL-Integrationen
Um eine Datenbank mit einer Null-ETL-Integration zu erstellen, geben Sie die integration_id in Ihrem Befehl CREATE DATABASE an.
CREATE DATABASEdestination_db_nameFROM INTEGRATION 'integration_id';
Sie können beispielsweise zunächst die Integrations-IDs aus SVV_INTEGRATION ab.
SELECT integration_id FROM SVV_INTEGRATION;
Verwenden Sie dann eine der abgerufenen Integrations-IDs, um die Datenbank zu erstellen, die Null-ETL-Integrationen erhält.
CREATE DATABASE sampledb FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111';
Wenn die Quelldatenbank für Null-ETL-Integrationen benötigt wird, geben Sie beispielsweise Folgendes an.
CREATE DATABASE sampledb FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111' DATABASE sourcedb;
Sie können auch ein Aktualisierungsintervall für die Datenbank festlegen. So legen Sie beispielsweise das Aktualisierungsintervall für Daten aus einer Null-ETL-Integrationsquelle auf 7.200 Sekunden fest:
CREATE DATABASE myacct_mysql FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111' SET REFRESH_INTERVAL 7200;
Fragen Sie die Katalogsicht SVV_INTEGRATION nach Informationen zu einer Null-ETL-Integration ab, z. B. integration_id, target_database, source, refresh_interval und mehr.
SELECT * FROM svv_integration;
Im folgenden Beispiel wird eine Datenbank aus einer Integration bei aktiviertem Verlaufsmodus erstellt.
CREATE DATABASE sample_integration_db FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111' SET HISTORY_MODE = true;
Limits für CREATE DATABASE
Amazon Redshift setzt diese Limits für Datenbanken durch:
-
Pro Cluster sind höchstens 60 benutzerdefinierte Datenbanken zulässig.
-
Datenbanknamen dürfen höchstens 127 Bytes enthalten.
-
Ein Datenbankname darf kein reserviertes Wort sein.
Datenbanksortierung
Bei der Sortierung handelt es sich um einen Regelsatz, der definiert, wie das Datenbankmodul die Zeichentypdaten in SQL vergleicht und sortiert. Die Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung ist die am häufigsten verwendete Methode. Amazon Redshift verwendet eine groß-/kleinschreibungsneutrale Sortierung, um die Migration von anderen Data-Warehouse-Systemen zu erleichtern. Amazon Redshift unterstützt nativ die groß-/kleinschreibungsneutrale Sortierung und verwendet weiterhin zentrale Optimierungsmethoden wie Verteilungsschlüssel, Sortierschlüssel oder bereichsbeschränkte Scans.
Die COLLATE-Klausel legt die Standardsortierung für alle CHAR- und VARCHAR-Spalten in der Datenbank fest. Wenn CASE_INSENSITIVE angegeben ist, verwenden alle CHAR- oder VARCHAR-Spalten eine groß-/kleinschreibungsneutrale Sortierung. Weitere Informationen zur Sortierung finden Sie unter Sortierreihenfolgen.
Daten, die in Spalten ohne Berücksichtigung der Groß-/Kleinschreibung eingefügt oder übernommen werden, behalten ihre ursprüngliche Groß-/Kleinschreibung bei. Bei allen vergleichsbasierten Zeichenfolgenoperationen, einschließlich Sortieren und Gruppieren, wird die Groß- und Kleinschreibung nicht berücksichtigt. Mustervergleichsoperationen wie LIKE-Prädikate, „ähnlich wie“ und Funktionen für reguläre Ausdrücke sind ebenfalls unabhängig von der Groß- und Kleinschreibung.
Die folgenden SQL-Operationen unterstützen die geltende Sortiersemantik:
-
Vergleichsoperatoren: =, <>, <, <=, >, >=.
-
LIKE-Operator
-
ORDER BY-Klauseln
-
GROUP BY-Klauseln
-
Aggregatfunktionen, die einen String-Vergleich verwenden, wie MIN und MAX und LISTAGG
-
Fensterfunktionen, wie PARTITION BY-Klauseln und ORDER BY-Klauseln
-
Skalare Funktionen greatest() und least(), STRPOS(), REGEXP_COUNT(), REGEXP_REPLACE(), REGEXP_INSTR(), REGEXP_SUBSTR()
-
Distinct-Klausel
-
UNION, INTERSECT und EXCEPT
-
IN LIST
Bei externen Abfragen, einschließlich Verbundabfragen in Amazon Redshift Spectrum und Aurora PostgreSQL, ist die Sortierung der VARCHAR- oder CHAR-Spalte die gleiche wie die aktuelle Sortierung auf Datenbankebene.
Im folgenden Beispiel wird eine Amazon-Redshift-Spectrum-Tabelle abgefragt:
SELECT ci_varchar FROM spectrum.test_collation WHERE ci_varchar = 'AMAZON'; ci_varchar ---------- amazon Amazon AMAZON AmaZon (4 rows)
Weitere Informationen zur Erstellung von Tabellen mit der Datenbanksortierung finden Sie unter CREATE TABLE.
Weitere Informationen über die COLLATE-Funktionen finden Sie unter Funktion COLLATE.
Einschränkungen bei der Datenbanksortierung
Die folgenden Einschränkungen gelten für die Verwendung der Datenbanksortierung in Amazon Redshift:
-
Bei allen Systemtabellen oder -ansichten, einschließlich PG-Katalogtabellen und Amazon-Redshift-Systemtabellen, wird die Groß- und Kleinschreibung beachtet.
-
Wenn Consumer- und Producer-Datenbank auf Datenbankebene unterschiedliche Sortierungen verwenden, unterstützt Amazon Redshift keine datenbank- und clusterübergreifenden Abfragen.
-
Amazon Redshift unterstützt keine groß-/kleinschreibungsneutrale Sortierung in Abfragen, die ausschließlich für Führungsknoten gelten.
Das folgende Beispiel zeigt eine nicht unterstützte groß-/kleinschreibungsneutrale Abfrage und den Fehler, den Amazon Redshift sendet:
SELECT collate(usename, 'case_insensitive') FROM pg_user; ERROR: Case insensitive collation is not supported in leader node only query. -
Amazon Redshift unterstützt keine Interaktion zwischen Spalten mit und ohne Unterscheidung zwischen Groß-/Kleinschreibung, wie z. B. Vergleichs-, Funktions-, Join- oder Set-Operationen.
Die folgenden Beispiele zeigen Fehler bei der Interaktion von Spalten mit und ohne Unterscheidung zwischen Groß-/Kleinschreibung:
CREATE TABLE test (ci_col varchar(10) COLLATE case_insensitive, cs_col varchar(10) COLLATE case_sensitive, cint int, cbigint bigint);SELECT ci_col = cs_col FROM test; ERROR: Query with different collations is not supported yet.SELECT concat(ci_col, cs_col) FROM test; ERROR: Query with different collations is not supported yet.SELECT ci_col FROM test UNION SELECT cs_col FROM test; ERROR: Query with different collations is not supported yet.SELECT * FROM test a, test b WHERE a.ci_col = b.cs_col; ERROR: Query with different collations is not supported yet.Select Coalesce(ci_col, cs_col) from test; ERROR: Query with different collations is not supported yet.Select case when cint > 0 then ci_col else cs_col end from test; ERROR: Query with different collations is not supported yet.
Damit diese Abfragen funktionieren, können Sie mit der Funktion COLLATE die Sortierung der einen Spalte an die andere anpassen. Weitere Informationen finden Sie unter Funktion COLLATE.
Beispiele
Erstellen einer Datenbank
Im folgenden Beispiel wird eine Datenbank namens TICKIT erstellt und der Benutzer DWUSER ist der Besitzer:
create database tickit with owner dwuser;
Führen Sie eine Abfrage für die Katalogtabelle PG_DATABASE_INFO aus, um Details zu Datenbanken anzuzeigen.
select datname, datdba, datconnlimit from pg_database_info where datdba > 1; datname | datdba | datconnlimit -------------+--------+------------- admin | 100 | UNLIMITED reports | 100 | 100 tickit | 100 | 100
Im folgenden Beispiel wird eine Datenbank namens sampledb mit der Isolationsstufe SNAPSHOT erstellt.
CREATE DATABASE sampledb ISOLATION LEVEL SNAPSHOT;
Im folgenden Beispiel wird die Datenbank sales_db aus dem Datashare salesshare erstellt.
CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Beispiele für die Datenbanksortierung
Erstellen einer groß-/kleinschreibungsneutralen Datenbank
Im folgenden Beispiel wird die Datenbank sampledb und die Tabelle T1 erstellt und anschließend werden Daten in die Tabelle T1 eingefügt.
create database sampledb collate case_insensitive;
Stellen Sie mit Ihrem SQL-Client eine Verbindung mit der neuen Datenbank her, die Sie gerade erstellt haben. Wenn Sie den Amazon Redshift Query Editor v2 verwenden, wählen Sie sampledb im Editor aus. Wenn Sie RSQL nutzen, verwenden Sie einen ähnlichen Befehl wie den folgenden.
\connect sampledb;
CREATE TABLE T1 ( col1 Varchar(20) distkey sortkey );
INSERT INTO T1 VALUES ('bob'), ('john'), ('Mary'), ('JOHN'), ('Bob');
Die Abfrage findet dann Ergebnisse mit dem Inhalt John.
SELECT * FROM T1 WHERE col1 = 'John'; col1 ------ john JOHN (2 row)
Groß-/kleinschreibungsneutrale Sortierung
Das folgende Beispiel zeigt eine groß-/kleinschreibungsneutrale Sortierung mit Tabelle T1. Die Reihenfolge von Bob und bob oder John und john ist nicht deterministisch, da sie in einer Spalte gleich sind, die nicht zwischen Groß- und Kleinschreibung unterscheidet.
SELECT * FROM T1 ORDER BY 1; col1 ------ bob Bob JOHN john Mary (5 rows)
In ähnlicher Weise zeigt das folgende Beispiel eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung mit der GROUP BY-Klausel. Bob und bob sind gleich und gehören zur gleichen Gruppe. Es ist nicht deterministisch, was im Ergebnis auftaucht.
SELECT col1, count(*) FROM T1 GROUP BY 1; col1 | count -----+------ Mary | 1 bob | 2 JOHN | 2 (3 rows)
Abfragen von groß-/kleinschreibungsneutralen Spalten mit einer Fensterfunktion
Im folgenden Beispiel wird eine Fensterfunktion zur Abfrage einer Spalte verwendet, in der die Groß- und Kleinschreibung nicht berücksichtigt wird.
SELECT col1, rank() over (ORDER BY col1) FROM T1; col1 | rank -----+------ bob | 1 Bob | 1 john | 3 JOHN | 3 Mary | 5 (5 rows)
Abfragen mit dem Schlüsselwort DISTINCT
Im folgenden Beispiel wird die Tabelle T1 mit dem Schlüsselwort DISTINCT abgefragt.
SELECT DISTINCT col1 FROM T1; col1 ------ bob Mary john (3 rows)
Abfrage mit der UNION-Klausel
Das folgende Beispiel zeigt die Ergebnisse der UNION der Tabellen T1 und T2.
CREATE TABLE T2 AS SELECT * FROM T1;
SELECT col1 FROM T1 UNION SELECT col1 FROM T2; col1 ------ john bob Mary (3 rows)