Was ist eine SQL Create Table-Anweisung?
Ein relationales Datenbankschema besteht aus einer zusammenhängenden Menge von Objekten, die Tabellen, Ansichten und Indizes umfassen. Die Datenbank besteht in der Regel aus Nutzer Objekten und Systemobjekten, die dazu dienen, Nutzer zu katalogisieren und die Datenbankinstanz verwalten . Viele Datenbanken, wie die Actian Data Platform, haben ein einziges Schema für alle Anwendungen, während andere, wie DB2, Tablespaces oder DB Spaces haben, um Nutzer zu halten. Die CREATE-Anweisung ist eine Form der DML-Anweisung (Database Manipulation Language), eine Teilmenge der SQL-Sprachspezifikation, die zur Erstellung von Datenbankobjekten verwendet wird.
Die CREATE TABLE-Anweisung wird verwendet, um eine neue Tabelle in einer relationalen Datenbank zu erstellen. Die Syntax hat oft nicht standardisierte Erweiterungen, um Speicherkriterien anzugeben.
SQL-Beispiel zum Erstellen einer Tabelle
Nachfolgend finden Sie ein einfaches SQL-Beispiel zum Erstellen einer Tabelle, die Daten über Abteilungen in einem Unternehmen enthält:
CREATE TABLE ABTEILUNGEN ( Abteilung-ID int, Abteilungs-Name varchar(255), Abteilungs-Kostenstelle int );
Sie können Tabellen mit einer anderen Tabelle als Vorlage erstellen. Die nachstehende Tabelle enthält zum Beispiel nur Zeilen, die sich auf die Abteilungsnummer 10 beziehen:
CREATE TABLE DEPARTMENT-10 AS SELECT * FROM ABTEILUNGEN WHERE Abteilungs-ID = 10;
Actian SQL Beispiele
Die folgenden Angaben sind spezifisch für ActianDatenbanken.
Diese Erklärung hat das folgende Format:
CREATE TABLE [IF NOT EXISTS] [schema.]table_name (spalten_spezifizierung {, spalten_spezifizierung }) [table_constraint {, table_constraint}] [with_clause]
tabellen_name
Legt den Namen der neuen Tabelle fest. Es muss ein gültiger Objektname sein.
spalten_spezifizierung
Definiert die Eigenschaften der Spalte.
table_constraint
Gibt die Beschränkung auf Tabellenebene an, wie in Beschränkungen auf Tabellen- und Spaltenebene beschrieben.
mit_Klausel
Gibt die Optionen der WITH-Klausel durch ein Komma getrennt an. Für weitere Informationen siehe WITH-Klausel.
Säulen-Spezifikation
Die Spaltenspezifikation in einer CREATE TABLE-Anweisung definiert die Eigenschaften einer Spalte in der Tabelle.
Die Spalte_specification hat das folgende Format:
spalten_name datentyp
[[WITH] DEFAULT default_spec | WITH DEFAULT | NOT DEFAULT] [WITH NULL | NOT NULL]
[MASKIERT [AS {BASIC | NULL | 0 | ' ' }]
[GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)]
| GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]]
[[CONSTRAINT constraint_name] column_constraint
{ [CONSTRAINT constraint_name] column_constraint}]
spalten_name
Weist der Spalte einen gültigen Namen zu (siehe Objektbenennungsregeln).
Datentyp
Weist der Spalte einen gültigen Datentyp zu. Wenn CREATE TABLE...AS SELECT angegeben ist, übernimmt die neue Tabelle ihre Spaltennamen und -formate aus den Ergebnissen der SELECT-Klausel des in der AS-Klausel angegebenen Subselects (sofern keine anderen Spaltennamen angegeben sind).
Hinweis: Bei char- und varchar-Spalten erfolgt die Angabe der Spalte in der Anzahl der Bytes (nicht in der Anzahl der Zeichen).
DEFAULT-Klausel
Gibt an, ob die Spalte obligatorisch ist.
MIT NULL | NICHT NULL
Gibt an, ob die Spalte Nullen zulässt:
WITH NULL
(Standard) Gibt an, dass die Spalte Nullen akzeptiert. Wenn der Nutzer keinen Wert angibt, wird Null eingefügt.
NOT NULL
Zeigt an, dass die Spalte keine Nullen akzeptiert.
[MASKIERT [AS {BASIC | NULL | 0 | ' ' }]
Zeigt die Spalte mit dem angegebenen Maskenmerkmal an, es sei denn, der Nutzer hat das UNMASK-Recht. Das Maskenmerkmal legt fest, wie die maskierten Daten angezeigt werden sollen:
BASIC - Füllt die Breite der Spalte mit Sternchen
NULL - NULL
0 - 0
' ' - leer
GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)] | GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]
Zeigt an, dass die Spalte eine IDENTITY-Spalte ist. Die Spalte muss als Integer oder Bigint definiert sein.
[CONSTRAINT constraint_name] column_constraint
Gibt an, welche Prüfungen für den Inhalt der Spalte durchgeführt werden sollen, um geeignete Datenwerte sicherzustellen.
DEFAULT-Klausel
Die WITH|NOT DEFAULT-Klausel in der Spaltenspezifikation gibt an, ob eine Spalte einen Eintrag erfordert.
Diese Klausel hat das folgende Format:
[WITH] DEFAULT default_spec | WITH DEFAULT | NOT DEFAULT
[WITH] DEFAULT default_spec
Gibt an, dass Actian Data Platform den Standardwert einfügt, wenn kein Wert angegeben wird (weil keiner erforderlich ist). Der Standardwert muss mit dem Datentyp der Spalte kompatibel sein.
Für Zeichenspalten sind die Konstanten gültige Standardwerte: Nutzer, CURRENT_USER und SYSTEM_USER.
Für boolesche Spalten sind die Standardwerte FALSE oder TRUE gültig.
MIT DEFAULT
Gibt an, dass, wenn kein Wert angegeben wird, Actian Data Platform 0 für numerische und Geldspalten, eine leere Zeichenkette für Zeichenspalten, das aktuelle Datum für ANSI-Datenspalten und den aktuellen Zeitstempel für Zeitstempelspalten einfügt.
NOT DEFAULT
Zeigt an, dass die Spalte obligatorisch ist (erfordert einen Eintrag).
Es folgt ein Beispiel für die Verwendung der DEFAULT-Klausel:
CREATE TABLE DEPT(dname CHAR(10), ort CHAR(10) DEFAULT 'NY', creation DATE DEFAULT '01/01/20', Budget MONEY DEFAULT 10000);
Eine Identitätsspalte ist eine Integer- oder Bigint-Spalte, deren Werte automatisch aus einer systemdefinierten Sequenz erzeugt werden.
Eine Identitätsspalte ist eine Möglichkeit, automatisch einen eindeutigen numerischen Wert für jede Zeile in einer Tabelle zu erzeugen. Eine Tabelle kann nur eine Spalte haben, die mit dem Attribut identity definiert ist.
Die IDENTITY-Klausel hat das folgende Format:
[GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)]
| GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]]
wo:
GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)]
Gibt an, dass der Spaltenwert durch die entsprechende Sequenz bestimmt wird. Der Nutzer kann in einer INSERT- oder UPDATE-Anweisung keinen expliziten Wert für die Spalte angeben.
INSERT-Anweisungen, die ALWAYS-Identitätsspalten in ihrer Spaltenliste enthalten, müssen DEFAULT als entsprechenden Wert angeben. Um dieses Verhalten außer Kraft zu setzen, verwenden Sie die Klauseln OVERRIDING SYSTEM VALUE und OVERRIDING Nutzer VALUE der INSERT-Anweisung.
Der Datentyp der Sequenz stimmt mit dem Datentyp der Identitätsspalte überein.
GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]
Gibt an, dass der Nutzer optional einen expliziten Wert für die Spalte angeben kann.
seq_name
Legt den Namen der Sequenz fest.
seq_options
Steuern, wie die Sequenz Daten liefert, wenn sie von einer Anwendung angefordert wird. Die Sequenzoptionen können in beliebiger Reihenfolge angegeben werden, wobei keine erforderlich ist.
Jede der folgenden seq_options kann in einer durch Leerzeichen getrennten Liste angegeben werden:
START MIT Nummer
Gibt den Beginn der Sequenz als ganzzahlige Konstante an. Der Standardwert ist 1 für positive Sequenzen (positives Inkrement) und -1 für negative Sequenzen (negatives Inkrement). (Diese Option ist nur mit der CREATE SEQUENCE-Anweisung gültig).
RESTART MIT Nummer
Gibt einen neuen Startwert für die Sequenz an. (Diese Option ist nur mit der ALTER SEQUENCE-Anweisung gültig).
INKREMENT BY Nummer
Gibt den Inkrementwert (positiv oder negativ) an, der aufeinanderfolgende Werte der Sequenz erzeugt.
Voreinstellung: 1
MAXVALUE Zahl
KEIN MAXIMALWERT / NOMAXWERT
Gibt an, dass Sequenzen Werte mit einer Obergrenze erzeugen können, die der des Datentyps entspricht, der für die Sequenz gewählt wurde (z. B. 2**31-1 für Ganzzahlen).
MINVALUE Zahl
Gibt den zulässigen Mindestwert für die Sequenz an.
KEIN MINDESTWERT / NENNWERT
Gibt an, dass Sequenzen Werte mit einer Untergrenze erzeugen können, die der des Datentyps entspricht, der für die Sequenz gewählt wurde (z. B. -2**31 für Ganzzahlen).
CACHE-Nummer
Gibt die Anzahl der Sequenzwerte an, die im Serverspeicher gehalten werden. Wenn der Vorrat an Nummern erschöpft ist, benötigt Actian Data Platform einen Katalogzugriff, um den nächsten Satz zu erwerben.
Voreinstellung: 20
KEIN CACHE / NOCACHE
Gibt an, dass Sequenzwerte nicht vom Server zwischengespeichert werden sollen. Wenn diese Option aktiviert ist, ist für jede Anforderung eines Sequenzwerts ein Katalogzugriff erforderlich. Dies kann die Anwendungsleistung stark beeinträchtigen.
Voreinstellung: CACHE 20 (wenn weder CACHE noch NOCACHE angegeben sind), was einen geringen Katalog-Overhead gewährleistet
ZYKLUS
Legt fest, dass die Sequenz beim Erreichen des Minimalwerts (negatives Inkrement) oder des Maximalwerts (positives Inkrement) wieder beim Anfangswert beginnt.
Voreinstellung: KEIN ZYKLUS
KEIN ZYKLUS / KEIN ZYKLUS
Gibt an, dass die Sequenz nicht durchlaufen wird, wenn der letzte gültige Wert erzeugt wird. Die anfordernde Transaktion erhält eine Fehlermeldung.
Standard: SEQUENTIAL
Die zur verwalten Identitätsspaltenwerten erstellte Sequenz ist über ihren generierten Namen zugänglich. Die erzeugte Sequenz kann jedoch nicht explizit gelöscht werden; stattdessen muss die Identitätsspalte oder -tabelle gelöscht werden, oder es muss die Anweisung ALTER Nutzer ... ALTER COLUMN ... DROP IDENTITY verwendet werden.
Zwänge
Um sicherzustellen, dass der Inhalt der Spalten die Anforderungen Ihrer Datenbank erfüllt, geben Sie Einschränkungen (Constraints) an.
Beschränkungen können für einzelne Spalten oder für die gesamte Tabelle angegeben werden. Weitere Informationen finden Sie unter Beschränkungen auf Tabellen- und Spaltenebene.
Die Arten von Beschränkungen sind:
- Eindeutige Einschränkung - stellt sicher, dass ein Wert nur einmal in einer Spalte erscheint. Eindeutige Beschränkungen werden mit der Option UNIQUE angegeben.
- Referentielle Einschränkung - stellt sicher, dass ein einer Spalte zugewiesener Wert in einer entsprechenden Spalte einer anderen Tabelle erscheint. Referentielle Beschränkungen werden mit der Option REFERENCES angegeben.
- Primärschlüssel-Beschränkung - Deklariert eine oder mehrere Spalten zur Verwendung in referentiellen Beschränkungen in anderen Tabellen. Primärschlüssel müssen eindeutig sein.
Constraints auf Tabellen- und Spaltenebene
Beschränkungen können für Gruppen von Spalten als Teil der Tabellendefinition (Beschränkungen auf Tabellenebene) oder für einzelne Spalten als Teil der Spaltenspezifikation (Beschränkungen auf Spaltenebene) angegeben werden.
Die Einschränkung hat die folgende Syntax:
[CONSTRAINT constraint_name] Einschränkung
einschränkung_name
Legt einen Namen für die Einschränkung fest. Wenn der Name weggelassen wird, weist Actian Data Platform einen Namen zu. Der Name des Constraints wird verwendet, wenn der Constraint mit der ALTER TABLE-Anweisung aufgehoben wird.
Hinweis: Es wird empfohlen, bei der Erstellung einer Einschränkung einen Namen zu definieren; andernfalls müssen die Systemkataloge abgefragt werden, um den systemdefinierten Namen zu ermitteln.
Einschränkung
Ist entweder eine Einschränkung auf Tabellenebene (table_constraint) oder eine Einschränkung auf Spaltenebene (column_constraint).
table_constraint ist eine oder mehrere der folgenden Angaben:
UNIQUE (spalten_name {, spalten_name})
PRIMARY KEY (spalten_name {, spalten_name})
REFERENCES [schema.]table_name [(column_name {, column_name})] [enforce_option] [referential_actions]
column_constraint ist eine oder mehrere der folgenden Angaben:
UNIQUE
PRIMARY KEY
FOREIGN KEY (spalten_name {, spalten_name})
REFERENCES [schema.]table_name[(column_name)] [enforce_option] [referential_actions]
wo:
erzwingen_option
Gibt an, ob Beschränkungen erzwungen werden. Gültige Werte sind:
NICHT ERFOLGT
Erzwingt die Einschränkung nicht, wenn sie definiert wird oder wenn die Tabelle aktualisiert wird. Die Einschränkung wird in den Datenbankkatalogen definiert. NOT ENFORCED-Beschränkungen können verwendet werden, um verbesserte SQL-Anweisungen oder Anfrage zu erstellen.
Für NOT ENFORCED-Beschränkungen werden keine Indizes erstellt.
VERBOTEN
(Standard) Erzwingt die Einschränkung.
Es gibt zusätzliche Optionen, um referenzielle Aktionen und Partitionierung zu spezifizieren, die auf der Website docs.actian.com beschrieben werden.
Zusammenfassung
Actian Zen bietet sowohl eine SQL- als auch eine No-SQL- oder Key-index-basierte API, um Entwicklern eine Auswahl an Zugriffsmethoden zu bieten. Actian Zen ist ein DBMS, das mit geringem Verwaltungsaufwand konzipiert ist. Es ist an der Zeit, Ihre Daten einfach zu machen; besuchen Sie unsere Website, um herauszufinden, wie.