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.

Um eine Datenbank zu erstellen, müssen Sie ein Superuser sein oder über die entsprechenden CREATEDB Rechte verfügen. Um eine Datenbank zu erstellen, die einer ETL Null-Integration zugeordnet ist, müssen Sie ein Superuser sein oder über beide CREATEDB Rechte verfügen. CREATEUSER

Sie können nicht CREATE DATABASE innerhalb eines Transaktionsblocks laufen (... 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>' [ DATABASE '<source_database>' ] [SET {REFRESH_INTERVAL <interval>} ] } } | { 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.

CONNECTIONLIMIT{Grenze |UNLIMITED}

Die maximale Zahl von Datenbankverbindungen, die Benutzer gleichzeitig geöffnet haben dürfen. Das Limit wird für Superuser nicht durchgesetzt. Verwenden Sie das UNLIMITED Schlüsselwort, um die maximale Anzahl gleichzeitiger Verbindungen zuzulassen. Möglicherweise gilt auch ein Limit für die Zahl der Verbindungen für die einzelnen Benutzer. Weitere Informationen finden Sie unter CREATE USER. Die Standardeinstellung istUNLIMITED. 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 beim Vergleich von Zeichenketten der Wert CASE _ SENSITIVE oder CASE _ lautetINSENSITIVE. Die Standardeinstellung ist CASE _SENSITIVE.

ISOLATION LEVEL { SERIALIZABLE | SNAPSHOT }

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

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

  • SNAPSHOTIsolation — 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 STV _DB_ _ -Katalogansicht abISOLATION. LEVEL Weitere Informationen finden Sie unter STV_DB_ _ ISOLATION LEVEL.

    SELECT * FROM stv_db_isolation_level;
  • Fragen Sie die Ansicht PG_ _ abDATABASE. INFO

    SELECT datname, datconfig FROM pg_database_info;

    Die Isolationsstufe für jede Datenbank wird neben dem Schlüssel concurrency_model angezeigt. Ein Wert von 1 bezeichnetSNAPSHOT. Ein Wert von 2 bezeichnetSERIALIZABLE.

In Amazon Redshift Redshift-Datenbanken sind SERIALIZABLE sowohl als auch SNAPSHOT Isolation Typen serialisierbarer Isolationsstufen. Das heißt, Dirty Reads, nicht wiederholbare Lesevorgänge und Phantomlesevorgänge werden standardmäßig verhindert. SQL 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 Isolierung bietet jedoch keine vollständige Serialisierbarkeit, da sie nicht verhindert, dass Schreibfehler in verschiedenen Tabellenzeilen eingefügt und aktualisiert werden.

Das folgende Szenario veranschaulicht, dass bei Aktualisierungen die Isolationsstufe „schiefe Schreibvorgänge“ verwendet wird. SNAPSHOT Eine Tabelle namens Numbers enthält eine Spalte namens digits mit den Werten 0 und 1. Die UPDATE Aussagen der einzelnen Benutzer überschneiden sich nicht mit denen des anderen Benutzers. Allerdings sind die Werte 0 und 1 vertauscht. Die SQL Ausführung folgt diesem Zeitplan mit den folgenden Ergebnissen:

Zeit Aktion von Benutzer 1 Aktion von Benutzer 2
1 BEGIN;
2 BEGIN;
3 SELECT* FROM Zahlen;
digits
------
0
1
4 SELECT* FROM Zahlen;
digits
------
0
1
5 UPDATEZahlen Ziffern = SET 0 Ziffern = 1; WHERE
6 SELECTFROM* Zahlen;
digits
------
0
0
7 COMMIT;
8 Zahlen aktualisieren SET Ziffern=1 Ziffern=0; WHERE
9 SELECT* FROM Zahlen;
digits
------
1
1
10 COMMIT;
11 SELECT* FROM Zahlen;
digits
------
1
0
12 SELECT* FROM Zahlen;
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.

FROM ARN '<ARN>'

Die AWS Glue DatenbankARN, die zum Erstellen der Datenbank verwendet werden soll.

{DATACATALOGSCHEMA'<schema>' | WITH NEIN DATA CATALOGSCHEMA}
Anmerkung

Dieser Parameter ist nur anwendbar, wenn Ihr CREATE DATABASE Befehl den FROM ARN Parameter auch verwendet.

Gibt an, ob die Datenbank unter Verwendung eines Schemas zur Unterstützung des Zugriffs in  AWS Glue Data Catalog erstellt werden soll.

FROMINTEGRATION'<integration_id>' [DATABASE'<source_database>'] [SET{REFRESH_ INTERVAL<interval>}]

Gibt an, ob die Datenbank mit einem ETL Zero-Integration-Identifier erstellt werden soll. Sie können die INTEGRATION Systemansicht integration_id from SVV _ abrufen. Für Aurora SQL ETL Postgre-Null-Integrationen müssen Sie auch einen source_database Namen angeben, der auch aus SVV _ abgerufen werden kann. INTEGRATION Die SET REFRESH INTERVAL _-Klausel legt das ungefähre Zeitintervall in Sekunden fest, in dem Daten von der ETL Nullquelle zur Zieldatenbank aktualisiert werden. Die Standardeinstellung ist Null (0) Sekunden für ETL Zero-Integrationen, deren Quelltyp Aurora MySQL, Aurora Postgre SQL oder RDS My ist. SQL

Ein Beispiel finden Sie unter Erstellen Sie Datenbanken, um Ergebnisse von ETL Null-Integrationen zu erhalten. Weitere Informationen zum Erstellen von Datenbanken ohne 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>:Rolle/<role-name>' }
Anmerkung

Dieser Parameter ist nur anwendbar, wenn Ihr CREATE DATABASE Befehl den Parameter auch verwendet. FROM ARN

Wenn Sie bei der Ausführung 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 default Schlüsselworts bedeutet, die IAM Rolle zu verwenden, die als Standard festgelegt und dem Cluster zugeordnet 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 Ihr Cluster für die Authentifizierung und Autorisierung verwendet. Die IAM Rolle muss mindestens über die Berechtigung verfügen, einen LIST Vorgang auf dem Amazon S3 S3-Bucket auszuführen, auf den zugegriffen werden soll, und einen GET Vorgang auf den Amazon S3 S3-Objekten, 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 Arbeiten mit von Lake Formation verwalteten Datenfreigaben als Verbraucher.

Im Folgenden wird die Syntax für die Parameterzeichenfolge IAM _ ROLE für eine einzelne Zeichenfolge gezeigt. ARN

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

Sie können Rollen verketten, sodass Ihr Cluster eine andere IAM Rolle übernehmen kann, die möglicherweise zu einem anderen Konto gehört. Es können bis zu 10 Rollen miteinander verkettet werden. Weitere Informationen finden Sie unter Verkettung von IAM Rollen in Amazon Redshift Spectrum.

Fügen Sie dieser IAM Rolle eine IAM Berechtigungsrichtlinie hinzu, die der folgenden ähnelt.

{ "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": "*" } ] }

Die Schritte zum Erstellen einer IAM Rolle zur Verwendung mit Verbundabfragen finden Sie unterErstellen Sie ein Geheimnis und eine IAM Rolle für die Verwendung verbundener Abfragen.

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 CREATE DATABASE mit einer Datenfreigabe

Die folgende Syntax beschreibt den CREATE DATABASE Befehl, 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 CREATE DATABASE Befehl, 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 CREATE DATABASE mit einem Datashare

FROM 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.

NAMESPACEnamespace_guid

Ein Wert, der den Produzenten-Namespace angibt, zu dem das Datashare gehört.

ACCOUNTKonto-ID

Ein Wert, der das Produzenten-Konto angibt, zu dem das Datashare gehört.

Nutzungshinweise CREATE DATABASE für den Datenaustausch

Geben Sie als Datenbank-Superuser die Option CREATE DATABASE an, wenn Sie Datenbanken aus Datenfreigaben innerhalb des AWS Kontos erstellen möchten. NAMESPACE Die ACCOUNT Option ist optional. Wenn Sie CREATE DATABASE Datenbanken aus AWS kontenübergreifenden Datenfreigaben erstellen, geben Sie ACCOUNT sowohl den als auch den Hersteller NAMESPACE 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.

CREATEDATABASEvon AWS Glue Data Catalog

Um eine Datenbank mithilfe einer AWS Glue Datenbank zu erstellenARN, geben Sie das 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 in den ROLE Parameter IAM _ eingeben. Weitere Informationen zu Parametern und zulässigen Werten finden Sie unter Parameter.

Im Folgenden finden Sie Beispiele, die zeigen, wie Sie ARN anhand einer IAM Rolle eine Datenbank 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 mit einer erstellen DATA CATALOGSCHEMA.

CREATE DATABASE sampledb FROM ARN <glue-database-arn> WITH DATA CATALOG SCHEMA <sample_schema> IAM_ROLE default;

Erstellen Sie Datenbanken, um Ergebnisse von ETL Null-Integrationen zu erhalten

Um eine Datenbank mit einer Identität ohne ETL Integration zu erstellen, geben Sie integration_id in Ihrem CREATE DATABASE Befehl den an.

CREATE DATABASE destination_db_name FROM INTEGRATION 'integration_id';

Rufen Sie beispielsweise zuerst die Integrations-IDs von SVV _ abINTEGRATION;

SELECT integration_id FROM SVV_INTEGRATION;

Verwenden Sie dann eine der abgerufenen Integrations-IDs, um die Datenbank zu erstellen, die ETL Nullintegrationen empfängt.

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

Wenn die Quelldatenbank für ETL Nullintegrationen 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. Um beispielsweise das Aktualisierungsintervall für Daten aus einer ETL Nullintegrationsquelle auf 7.200 Sekunden festzulegen, gehen Sie wie folgt vor:

CREATE DATABASE myacct_mysql FROM INTEGRATION 'a1b2c3d4-5678-90ab-cdef-EXAMPLE11111' SET REFRESH_INTERVAL 7200;

Fragen Sie die INTEGRATION Katalogansicht SVV _ nach Informationen über eine ETL Nullintegration ab, z. B. integration_id, target_database, source, refresh_interval und mehr.

SELECT * FROM svv_integration;

CREATEDATABASEGrenzwerte

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 eine Reihe von Regeln, die definieren, wie die Datenbank-Engine die Daten des Zeichentyps vergleicht und sortiert. SQL 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 gibt die Standardsortierung für alle CHAR VARCHAR Spalten in der Datenbank an. Wenn CASE _ angegeben INSENSITIVE ist, verwenden alle CHAR oder VARCHAR -Spalten die Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung. 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. Bei Mustervergleichsoperationen wie LIKE Prädikaten, die dem ähneln, und Funktionen für reguläre Ausdrücke wird die Groß-/Kleinschreibung ebenfalls nicht berücksichtigt.

Die folgenden SQL Operationen unterstützen die entsprechende Sortierungssemantik:

  • Vergleichsoperatoren: =, <>, <, <=, >, >=.

  • LIKEOperator

  • ORDERBY-Klauseln

  • GROUPBY-Klauseln

  • Aggregatfunktionen, die Zeichenkettenvergleiche verwenden, wie MIN und und MAX LISTAGG

  • Fensterfunktionen wie PARTITION BY-Klauseln und ORDER BY-Klauseln

  • Skalarfunktionen größte () und kleinste (), (), _ STRPOS (), REGEXP _ COUNT (), REGEXP _ REPLACE (), REGEXP _ INSTR (), _ () REGEXP SUBSTR

  • Distinct-Klausel

  • UNION, und INTERSECT EXCEPT

  • IN LIST

Für externe Abfragen, einschließlich SQL verbundener Amazon Redshift Spectrum- und Aurora Postgre-Abfragen, entspricht die Sortierung unserer CHAR Spalte der VARCHAR aktuellen 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.

Informationen zu dieser Funktion finden Sie unter. COLLATE COLLATEFunktion

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 nach SUPER Datentypen. Das Erstellen von SUPER Spalten in Datenbanken ohne Berücksichtigung der Groß- und Kleinschreibung sowie Interaktionen zwischen Spalten ohne Berücksichtigung der Groß SUPER - und Kleinschreibung werden nicht unterstützt.

    Im folgenden Beispiel wird eine Tabelle mit dem Datentyp in der Datenbank ohne Berücksichtigung der Groß SUPER - und Kleinschreibung erstellt:

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

    Im folgenden Beispiel werden Daten mit einer Zeichenfolge ohne Berücksichtigung der Groß- und Kleinschreibung abgefragt und mit den Daten verglichen: SUPER

    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, verwenden Sie die COLLATE Funktion, um die Sortierung einer Spalte so zu konvertieren, dass sie der anderen entspricht. Weitere Informationen finden Sie unter COLLATEFunktion.

Beispiele

Erstellen einer Datenbank

Im folgenden Beispiel wird eine Datenbank mit dem Namen erstellt TICKIT und dem Benutzer DWUSER die Eigentümerschaft zugewiesen.

create database tickit with owner dwuser;

Um Details zu Datenbanken anzuzeigen, fragen Sie die INFO Katalogtabelle PG_ DATABASE _ ab.

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 sampledb mit dem Namen SNAPSHOT Isolationsstufe 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;

Connect zu der neuen Datenbank her, die Sie gerade mit Ihrem SQL Client erstellt haben. Wenn Sie den Amazon Redshift Query Editor v2 verwenden, wählen Sie sampledb im Editor aus. Verwenden Sie RSQL bei der Verwendung einen 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 mit der BY-Klausel eine Sortierung ohne Berücksichtigung der GROUP Groß- und Kleinschreibung. 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 T1 Tabelle mit dem DISTINCT Schlüsselwort abgefragt.

SELECT DISTINCT col1 FROM T1; col1 ------ bob Mary john (3 rows)
Abfragen mit der Klausel UNION

Das folgende Beispiel zeigt die Ergebnisse UNION aus den Tabellen T1 undT2.

CREATE TABLE T2 AS SELECT * FROM T1;
SELECT col1 FROM T1 UNION SELECT col1 FROM T2; col1 ------ john bob Mary (3 rows)