CREATE DATABASE - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CREATE DATABASE

Erstellt eine neue Datenbank.

Sie müssen ein Superuser sein oder über die CREATEDB-Berechtigung verfügen, um eine Datenbank zu erstellen. Um eine Datenbank zu erstellen, die einer Zero-ETL-Integration zugeordnet ist, müssen Sie ein Superuser sein oder sowohl über CREATEDB- als auch über CREATEUSER-Rechte verfügen.

CREATE DATABASE kann nicht innerhalb eines Transaktionsblocks (BEGIN ... END). Weitere Informationen Transaktionen finden Sie unter Serialisierbare Isolierung.

Syntax

CREATE DATABASE database_name [ { [ WITH ] [ OWNER [=] db_owner ] [ CONNECTION LIMIT { limit | UNLIMITED } ] [ COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } ] [ ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT } ] } | { [ WITH PERMISSIONS ] FROM DATASHARE datashare_name ] OF [ ACCOUNT account_id ] NAMESPACE namespace_guid } | { FROM { { ARN '<arn>' } { WITH DATA CATALOG SCHEMA '<schema>' | WITH NO DATA CATALOG SCHEMA } } | { INTEGRATION '<integration_id>'} } | { IAM_ROLE {default | 'SESSION' | 'arn:aws:iam::<account-id>:role/<role-name>' } }

Parameter

database_name

Name der neuen Datenbank. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

WITH

Optionales Schlüsselwort.

OWNER

Gibt einen Datenbankbesitzer an.

=

Optionales Zeichen.

db_owner

Benutzername des Datenbankbesitzers.

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 | CASE_INSENSITIVE }

Eine Klausel, die angibt, ob bei der Suche oder dem Vergleich von Zeichenfolgen zwischen Groß- und Kleinschreibung unterschieden wird (CASE_SENSITIVE) oder nicht (CASE_INSENSITIVE). Der Standardwert ist CASE_SENSITIVE.

ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }

Eine Klausel, die die verwendete Isolationsstufe bei Abfragen für eine Datenbank angibt.

  • SERIALIZABLE Isolation — Bietet vollständige Serialisierbarkeit für gleichzeitige Transaktionen. Weitere Informationen finden Sie unter Serialisierbare Isolierung.

  • SNAPSHOT-Isolierung — Bietet eine Isolationsstufe mit Schutz vor Aktualisierungs- und Löschkonflikten. Dies ist die Standardeinstellung für eine Datenbank, die in einem bereitgestellten Cluster oder serverlosen Namespace erstellt wurde.

Sie können wie folgt anzeigen, welches Gleichzeitigkeitsmodell Ihre Datenbank ausführt:

  • Fragen Sie die Katalogansicht STV_DB_ISOLATION_LEVEL ab. Weitere Informationen finden Sie unter STV_DB_ISOLATION_LEVEL.

    SELECT * FROM stv_db_isolation_level;
  • Fragen Sie die Ansicht PG_DATABASE_INFO ab.

    SELECT datname, datconfig FROM pg_database_info;

    Die Isolationsstufe für jede Datenbank wird neben dem Schlüssel concurrency_model angezeigt. Der Wert 1 steht für SNAPSHOT. Der Wert 2 steht für SERIALIZABLE (Serialisierbar).

In Amazon-Redshift-Datenbanken stellen sowohl die SERIALIZABLE-Isolation (serialisierbare Isolation) als auch die SNAPSHOT-Isolation Arten serialisierbarer Isolationsstufen dar. Dies bedeutet, dass ungültige Lesevorgänge, nicht wiederholbare Lesevorgänge und Phantomlesevorgänge gemäß dem SQL-Standard verhindert werden. Beide Isolationsstufen stellen sicher, dass eine Transaktion mit einem Snapshot der Daten arbeitet, wie er zu Beginn der Transaktion existiert, und dass keine andere Transaktion diesen Snapshot ändern kann. Die SNAPSHOT-Isolation bietet jedoch keine vollständige Serialisierbarkeit, da Schreibverzerrungen (Write Skew) bei Einfügungen und Aktualisierungen für verschiedene Tabellenzeilen nicht verhindert werden.

Das folgende Szenario veranschaulicht Aktualisierungen von Schreibverzerrungen (Write Skew) unter Verwendung der SNAPSHOT-Isolationsstufe. Eine Tabelle namens Numbers enthält eine Spalte namens digits mit den Werten 0 und 1. Die UPDATE-Anweisungen der Benutzer überschneiden sich nicht mit den Anweisungen des jeweils anderen Benutzers. Allerdings sind die Werte 0 und 1 vertauscht. Die SQL, die sie ausführen, folgt dieser Zeitleiste und kommt zu diesen Ergebnissen:

Zeit Aktion von Benutzer 1 Aktion von Benutzer 2
1 BEGIN;
2 BEGIN;
3 SELECT * FROM Numbers;
digits
------
0
1
4 SELECT * FROM Numbers;
digits
------
0
1
5 UPDATE Numbers SET digits=0 WHERE digits=1;
6 SELECT * FROM Numbers;
digits
------
0
0
7 COMMIT;
8 Update Numbers SET digits=1 WHERE digits=0;
9 SELECT * FROM Numbers;
digits
------
1
1
10 COMMIT;
11 SELECT * FROM Numbers;
digits
------
1
0
12 SELECT * FROM Numbers;
digits
------
1
0

Wenn dasselbe Szenario mit serialisierbarer Isolation ausgeführt wird, beendet Amazon Redshift Benutzer 2 aufgrund einer serialisierbaren Verletzung und gibt den Fehler 1023 zurück. Weitere Informationen finden Sie unter Beheben von Fehlern für die serialisierbare Isolierung. In diesem Fall kann nur Benutzer 1 einen erfolgreichen Commit ausführen. Nicht alle Workloads setzen eine serialisierbare Isolation voraus. Es genügt dann eine Snapshot-Isolation als Zielisolationsstufe für Ihre Datenbank.

VON ARN '<ARN>'

Der AWS Glue Datenbank-ARN, der zum Erstellen der Datenbank verwendet werden soll.

{DATENKATALOGSCHEMA <schema>'' | OHNE DATENKATALOGSCHEMA}
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.

AUS DER INTEGRATION '<integration_id>'

Gibt an, ob die Datenbank mit einem Zero-ETL-Integrationsbezeichner erstellt werden soll. Sie können die integration_id aus der SVV_INTEGRATION-Systemansicht abrufen. Ein Beispiel finden Sie unter Erstellen Sie Datenbanken, um die Ergebnisse von Zero-ETL-Integrationen zu erhalten. Weitere Informationen zum Erstellen von Datenbanken mit Zero-ETL-Integrationen finden Sie unter Erstellen von Zieldatenbanken in Amazon Redshift im Amazon Redshift Management Guide.

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 default bedeutet, 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 mithilfe von AWS Glue Data Catalog For Datashares finden Sie unter Working with Lake Formation-managed datashares as a consumer.

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:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:123456789012:secret:my-rds-secret-VNenFy" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*" } ] }

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 Befehl CREATE DATABASE, der verwendet wird, um Datenbanken aus einem Datashare für die gemeinsame Nutzung von Daten innerhalb desselben Kontos zu erstellen. AWS

CREATE DATABASE database_name [ [ WITH PERMISSIONS ] FROM DATASHARE datashare_name ] OF [ ACCOUNT account_id ] NAMESPACE namespace_guid

Die folgende Syntax beschreibt den Befehl CREATE DATABASE, der verwendet wird, um Datenbanken aus einem Datashare für die gemeinsame Nutzung von Daten zwischen Konten zu erstellen. AWS

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, auf dem die Verbraucherdatenbank 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 Datenfreigaben 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 Datenfreigaben zu erstellen, geben Sie sowohl ACCOUNT als auch NAMESPACE vom Producer 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.

DATENBANK ERSTELLEN von AWS Glue Data Catalog

Um eine Datenbank mit einem AWS Glue Datenbank-ARN zu erstellen, 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 Sie Datenbanken, um die Ergebnisse von Zero-ETL-Integrationen zu erhalten

Um eine Datenbank mit einer Zero-ETL-Integrationsidentität zu erstellen, geben Sie das integration_id in Ihrem CREATE DATABASE-Befehl an.

CREATE DATABASE destination_db_name FROM INTEGRATION 'integration_id';

Rufen Sie 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 Zero-ETL-Integrationen empfängt.

CREATE DATABASE sampledb FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111';

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.
  • Amazon Redshift unterstützt keine Sortierung für den Datentyp SUPER. Das Erstellen von SUPER-Spalten in groß-/kleinschreibungsneutralen Datenbanken sowie Interaktionen zwischen SUPER-Spalten und groß-/kleinschreibungsneutralen Spalten werden nicht unterstützt.

    Das folgende Beispiel erstellt eine Tabelle mit dem Datentyp SUPER in der groß-/kleinschreibungsneutralen Datenbank:

    CREATE TABLE super_table (a super); ERROR: SUPER column is not supported in case insensitive database.

    Im folgenden Beispiel werden Daten mit einer groß-/kleinschreibungsneutralen Zeichenfolge abgefragt und mit den SUPER-Daten verglichen:

    CREATE TABLE test_super_collation (s super, c varchar(10) COLLATE case_insensitive, i int);
    SELECT s = c FROM test_super_collation; ERROR: Coercing from case insensitive string to SUPER is not supported.

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 der groß-/kleinschreibungsneutralen Spalte gleich sind.

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)