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 von1
bezeichnetSNAPSHOT. Ein Wert von2
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 namensdigits
mit den Werten0
und1
. Die UPDATE Aussagen der einzelnen Benutzer überschneiden sich nicht mit denen des anderen Benutzers. Allerdings sind die Werte0
und1
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 einensource_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. SQLEin 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)