Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle CREATE TABLE-Befehl in PL/SQL mit 10 Beispielen

In diesem Artikel werden wir über CREATE TABLE sprechen Befehl. Um genauer zu sein, werden wir uns darauf konzentrieren, wie man eine Tabelle in Oracle mit einem Primär- und Fremdschlüssel sowie Nicht-Null- und Datumsspalten erstellt, und sich genau ansehen, wie man eine neue Tabelle auf der Grundlage der vorhandenen erstellt , und mehr. Außerdem werden wir die Vergünstigungen und Vorteile der Verwendung von dbForge Studio für Oracle bei der Arbeit mit Tabellen besprechen.

Inhalt

  • Syntax der CREATE TABLE-Anweisung von Oracle
    • CREATE TABLE-Beispiel
  • CREATE TABLE mit PRIMARY KEY-Einschränkung
  • TABELLE ERSTELLEN mit FREMDSCHLÜSSEL
  • CREATE TABLE mit NOT NULL-Spalte
  • CREATE TABLE mit einer Datumsspalte
  • Oracle-Alternative zu SQL CREATE TABLE IF NOT EXISTS
  • Erstellen Sie eine neue Tabelle aus einer anderen Tabelle mit CREATE TABLE AS SELECT
  • CREATE TABLE from SELECT in PL/SQL
  • Erstellen und Einfügen von Daten in eine temporäre Tabelle
  • CREATE TABLE im Handumdrehen mit dbForge für Oracle
  • Schlussfolgerung

Das Erstellen von Tabellen in Oracle ist eine der Möglichkeiten, Daten anzuordnen, daher ist es wichtig, so viel wie möglich über CREATE TABLE zu lernen Befehl. Es gibt verschiedene Möglichkeiten, eine Tabelle in Oracle zu erstellen, und wir werden sie in diesem Handbuch weiter behandeln.

Bitte beachten Sie, dass Sie über das CREATE TABLE-Systemprivileg verfügen müssen, um eine neue Tabelle zu erstellen. Wenn Sie eine Tabelle im Schema eines anderen Benutzers erstellen möchten, müssen Sie über das Systemprivileg CREATE ANY TABLE verfügen. Falls Sie der Eigentümer der Tabelle sind, müssen Sie das Systemprivileg UNLIMITED TABLESPACE oder die Quote für den Tabellenbereich haben, den die Tabelle enthält.

Außerdem müssen Sie über das EXECUTE-Objektprivileg oder das EXECUTE ANY TYPE-Systemprivileg verfügen, um eine Objekttabelle oder eine relationale Tabelle zu erstellen, die eine Objekttypspalte enthält, wenn Sie Zugriff auf alle Typen haben möchten, auf die von der Tabelle verwiesen wird.

Die Beispiele in diesem Artikel beziehen sich auf die Version Oracle 19c, aber die Methoden sind für alle verwendeten Oracle-Versionen gleich (einschließlich Oracle 10g, 11g, 12c usw.).

Oracle CREATE TABLE-Anweisungssyntax

Beginnen wir mit den Grundlagen. Um eine neue Tabelle in einer Oracle-Datenbank zu erstellen, muss CREATE TABLE Aussage verwendet werden kann. Die CREATE TABLE Syntax in Oracle ist wie folgt:

CREATE TABLE schema_name.table_name (
    column_1 data_type column_constraint,
    column_2 data_type column_constraint,
    ...
    table_constraint
 );

Schauen wir uns die bereitgestellte Syntax genauer an:

  1. schema_name.table_name :Namen der Tabelle und des Schemas, zu dem die neue Tabelle gehört.
  2. column_1 und column_2 data_type column_constraints :Platzhalter für die Spaltennamen.
  3. data_type :ZAHL, VARCHAR usw.
  4. column_constraint :NOT NULL, Primärschlüssel, Prüfung usw.
  5. table_constraint :Tabelleneinschränkungen (Primärschlüssel, Fremdschlüssel, Prüfung).

Sie finden das Oracle CREATE TABLE Syntaxbeispiel weiter unten in diesem Artikel.

Hinweis :
Neben dem Erlernen des Erstellens einer Tabelle in Oracle möchten Sie vielleicht auch Ihr Wissen über vertiefen Oracle ALTER TABLE-Anweisung .

CREATE TABLE-Beispiel

Es ist immer besser, aus der Praxis zu lernen. Sehen wir uns daher die CREATE TABLE von Oracle an Beispiel:

Das folgende Beispiel zeigt, wie Sie eine dreispaltige Tabelle mit dem Namen employees erstellen :

CREATE TABLE employees
( employee_id number(10) NOT NULL,
  employee_name varchar2(50) NOT NULL,
  city varchar2(50)
);
  • Spalte 1 heißt employee_id und hat einen Zahlendatentyp (maximal 10 Ziffern lang). Es darf keine Nullwerte enthalten.
  • Spalte 2 heißt Kundenname und hat einen varchar2-Datentyp (maximal 50 Zeichen lang) und kann auch keine Nullwerte enthalten.
  • Spalte 3 heißt Stadt und hat einen varchar2-Datentyp. Im Gegensatz zu den beiden vorherigen kann diese Spalte Nullwerte enthalten.

CREATE TABLE mit PRIMARY KEY-Einschränkung

Sehen wir uns nun an, wie Sie eine Tabelle in Oracle mit einem Primärschlüssel erstellen. Um einen Primärschlüssel für die Tabelle zu definieren, können Sie unsere zuvor erstellte Tabelle Mitarbeiter verwenden , bearbeiten Sie die Oracle SQL CREATE TABLE -Anweisung und definieren Sie die employee_id als Primärschlüssel:

CREATE TABLE employees
( employee_id number(10) NOT NULL,
  employee_name varchar2(50) NOT NULL,
  city varchar2(50),
  CONSTRAINT employees_pk PRIMARY KEY (employee_id)
);

Der PRIMARY KEY -Klausel ermöglicht die Angabe einer Spalte als Primärschlüsselspalte. Sie können die Primärschlüsselsyntax verwenden, um jede eindeutige Zeile in der Tabelle zu identifizieren. Im Gegensatz zu anderen Datenbanken ermöglicht Oracle, dass eine Tabelle nur einen Primärschlüssel enthält, und jedes Feld des Primärschlüssels muss andere Werte als NULL enthalten, damit die Tabelle als gültig betrachtet wird. Im obigen Beispiel definieren wir die employee_id Spalte als Primärschlüsselspalte .

TABELLE mit FREMDSCHLÜSSEL ERSTELLEN

Schauen wir uns die Syntax für Oracle CREATE TABLE an Anweisung FOREIGN Schlüssel. Es kann sowohl auf Spaltenebene als auch auf Tabellenebene definiert werden:

CREATE TABLE table_name
(
col1 datatype [ NULL | NOT NULL ],
col2 datatype [ NULL | NOT NULL ],
...
col_n datatype [ NULL | NOT NULL ]
constraint <name> FOREIGN KEY (col1,col2) REFERENCES table(col1,col2)
)  tablespace <tablepace name>

CREATE TABLE table_name
(
col1 datatype [ NULL | NOT NULL ] constraint <name> primary key
,
col2 datatype [ NULL | NOT NULL ],
...
col_n datatype [ NULL | NOT NULL ]
)  tablespace <tablepace name>;

CREATE TABLE dept
( dept_id number(10) NOT NULL,
dept_name varchar2(50) NOT NULL,
CONSTRAINT dept_pk PRIMARY KEY (dept_id)
);

CREATE TABLE emp
( emp_no number(10) NOT NULL,
emp_name varchar2(50) NOT NULL,
dept_id number(10),
salary number(6),
CONSTRAINT emp_pk PRIMARY KEY (emp_no),
CONSTRAINT dept_fk
FOREIGN KEY (dept_id)
REFERENCES dept(dept_id) );

In dieser Syntax:

  • Spalte 1 ist mit emp_no gekennzeichnet , und es ist als Zahl formatiert, was bedeutet, dass es keine Nullwerte enthalten kann.
  • Spalte 2 trägt den Titel emp_name , die als varchar2(50) erstellt wird und keine Nullwerte enthalten darf.
  • Spalte 3 heißt dept_id und hat einen Zahlendatentyp.
  • Spalte 4 heißt salary und ist ebenfalls als Zahlenspalte formatiert.
  • Primärschlüsseleinschränkung auf Tabellenebene emp_pk ist auf dem Schlüssel definiert (emp_no ).
  • Fremdschlüsseleinschränkungen auf Tabellenebene dept_fk die auf die Abteilungstabelle dept_id verweist .

CREATE TABLE with NOT NULL Spalte

Wenn Sie angeben möchten, dass die Spalte nicht leer sein darf und einen Wert enthalten muss, können Sie sie als NOT NULL definieren. Finden Sie die Syntax für CREATE TABLE Befehl mit der NOT NULL-Spalte in Oracle unten:

CREATE TABLE employees_bdays
(
emp_name VARCHAR(30),
bday DATE
emp_id VARCHAR(15) NOT NULL
);

Wie Sie sehen können, emp_id impliziert die Eingabe eines Werts für jede Datenzeile, da dieser NICHT NULL ist.

CREATE TABLE mit einer Datumsspalte

Wenn Sie eine Tabelle mit der Datumsspalte in Oracle erstellen müssen, könnte die folgende Syntax nützlich sein:

CREATE TABLE employees_bdays (
bday DATE
);

Um ein Datum effizient in die Spalte einzufügen, benötigen Sie das to_date Funktion, die eine Zeichenfolge akzeptiert, die das Datum enthält, sowie eine weitere Zeichenfolge, die sie anweist, wie das empfangene Datum zu interpretieren ist.

to_date('01 December 2021','DD Month YYYY')
to_date('01/12/2021','DD/MM/YYYY')

Oracle-Alternative zu SQL CREATE TABLE IF NOT EXISTS

Diese Benutzer, die an ein sehr hilfreiches SQL CREATE TABLE IF NOT EXISTS gewöhnt sind Befehl, könnte enttäuscht sein, da es in Oracle keine solche Aussage gibt. Wenn Sie dennoch feststellen müssen, ob eine Tabelle bereits existiert, bevor Sie sie in Oracle erstellen, finden Sie unten alternative Lösungen für dieses Problem.

Wenn Sie beim Versuch, eine Tabelle zu erstellen, eine Fehlermeldung erhalten (ORA-00955:Name wird bereits von einem vorhandenen Objekt verwendet), kann dies als Hinweis darauf dienen, dass eine solche Tabelle bereits vorhanden ist.

Erstellen Sie eine neue Tabelle aus einer anderen Tabelle mit CREATE TABLE AS SELECT

Manchmal müssen Sie Daten aus einer Tabelle kopieren und in eine andere einfügen. Es ist ziemlich einfach, eine Tabelle wie eine andere Tabelle in Oracle zu erstellen, außerdem ist es sehr hilfreich. Sie sparen Zeit und Mühe, wenn Sie eine Tabelle mit der gleichen Struktur erstellen möchten. Es vereinfacht auch den Testprozess.

Um zu sehen, wie Sie eine Tabelle aus einer anderen Tabelle in Oracle erstellen, sehen Sie sich das folgende Skript an:

CREATE TABLE table_name AS (
SELECT select_query
);

Es wird auch als CREATE TABLE AS SELECT (CTAS) bezeichnet.

Sie können entweder den table_name eingeben für Ihre neue Tabelle oder verwenden Sie den SELECT Abfrage, um es zu kopieren. Sie können auch SELECT * FROM eingeben alte_Tabelle wenn Sie alle Daten in die neue Tabelle kopieren müssen. Wenn Sie die zu kopierenden Werte einschränken müssen, ist WHERE Klausel wird für Sie hilfreich sein.

TABELLE von SELECT in PL/SQL ERSTELLEN

In Oracle können Sie auch eine Tabelle aus einer anderen erstellen, indem Sie den SELECT eingeben -Anweisung am Ende von CREATE TABLE Erklärung. In diesem Fall werden alle Datensätze der alten Tabelle in die neue kopiert. Die Syntax von Oracle CREATE TABLE aus dem SELECT lautet wie folgt:

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

Wie Sie sehen können, wird die PL/SQL-Tabellenerstellung aus dem SELECT Befehl ist sehr hilfreich. Beachten Sie, dass Sie auch eine temporäre Tabelle aus SELECT erstellen können .

Erstellen und Einfügen von Daten in eine temporäre Tabelle

Temporäre Tabellen werden in Oracle verwendet, um die Daten zu speichern, die zu einer Sitzung oder einer Transaktion gehören.

Die temporäre ORACLE-Tabelle ist ein DDL-Objekt mit allen Einschränkungen.

Wie erstellt man also eine temporäre Tabelle in Oracle? Sie können die Anweisung CREATE GLOBAL TEMPORARY TABLE verwenden, um eine temporäre Tabelle zu erstellen. Um zu definieren, ob die Daten in der Tabelle transaktionsspezifisch (der Standardwert) oder sitzungsspezifisch sind, verwenden Sie die ON COMMIT-Klausel.

Die Syntax für die transaktionsspezifischen Daten lautet wie folgt:

CREATE GLOBAL TEMPORARY TABLE admin_work_area
        (startdate DATE,
         enddate DATE,
         operation CHAR(20))
      ON COMMIT DELETE ROWS;

ERSTELLEN SIE TABELLE im Handumdrehen mit dbForge für Oracle

Zeit war schon immer eine der wertvollsten Ressourcen da draußen. Daher ist es möglicherweise hilfreich, eine geeignete IDE zu verwenden, um Zeit zu sparen. Eine der besten Lösungen ist dbForge Studio für Oracle. Es ist ein universelles Tool, das für die Entwicklung, Verwaltung und Verwaltung von Oracle-Datenbanken von Nutzen sein kann. Dieser effiziente GUI-Client eignet sich hervorragend für DBAs, Datenbankentwickler, Softwareingenieure und Analysten. dbForge Studio for Oracle ermöglicht die Datensynchronisierung zwischen mehreren Oracle-Servern und erleichtert die Automatisierung von Datenbankentwicklungsprozessen.

Wenn Sie die IDE zum ersten Mal öffnen, sehen Sie die Datenbankverbindungseigenschaften Fenster. Um sie manuell zu öffnen, wählen Sie Datenbank und klicken Sie auf Neue Verbindung .

Füllen Sie danach die entsprechenden Felder aus und klicken Sie auf Verbindung testen .

Wenn alles richtig konfiguriert ist, sehen Sie die Meldung Erfolgreich verbunden das sieht ungefähr so ​​aus:

Nachdem Sie sich mit Ihrem Oracle-Server verbunden haben, wählen Sie den Benutzer aus, für den Sie eine neue Tabelle erstellen möchten. Unser letzter Blog-Beitrag zum Erstellen eines neuen Benutzers in Oracle könnte sich bei diesem Schritt als nützlich erweisen.

Der erste Schritt zum Erstellen einer neuen Tabelle ist ein Rechtsklick auf das gewünschte Schema. Zeigen Sie auf Neues Objekt und klicken Sie auf die erste Option:Tabelle .

1. Im Namen Textfeld des Tabelleneditors , geben Sie einen Tabellennamen ein. Im folgenden Beispiel erstellen wir eine Tabelle mit dem Titel employees .

2. Geben Sie im Raster unten die Namen für die zukünftigen Spalten ein, wählen Sie den Datentyp und ob sie NOT NULL sein sollen.

3. Die Spalteneigenschaften wird auf der rechten Seite des Tabellen-Editors angezeigt .

4. Sie werden sehen, dass alle Aktionen, die Sie im Tabelleneditor ausführen , spiegeln sich in der SQL-Abfrage unten im Fenster wider.

Sobald die Eigenschaften der Tabelle konfiguriert sind, klicken Sie auf Änderungen übernehmen und das war's!

Schlussfolgerung

Das Erstellen von Tabellen ist eine der häufigsten Aufgaben bei der Arbeit mit Oracle-Datenbanken, da es hilft, Daten zu organisieren. In unserem Leitfaden haben wir eine detaillierte Anleitung zum Erstellen einer Tabelle in Oracle mit 10 verschiedenen Methoden angeboten. Sie können die Oracle SQL CREATE TABLE-Anweisung verwenden und die Abfrage manuell ausführen oder eine geeignete IDE verwenden, um den Prozess zu automatisieren. In diesem Fall ist dbForge Studio for Oracle die beste Wahl.

Nützliche Links

  • Erstellen Sie eine Datenbank in Oracle
  • Benennen Sie die Tabelle in Oracle um
  • PL/SQL-Formatierer