sql >> Databasteknik >  >> RDS >> Oracle

Oracle CREATE TABLE-kommando i PL/SQL med 10 exempel

I den här artikeln kommer vi att prata om CREATE TABLE kommando. För att vara mer exakt kommer vi att fokusera på hur man skapar en tabell i Oracle med en primär och främmande nyckel, samt inte null- och datumkolumner, ta en närmare titt på hur man skapar en ny tabell på basis av den befintliga. , och mer. Vi kommer också att granska fördelarna med att använda dbForge Studio för Oracle när du arbetar med tabeller.

Innehåll

  • Oracle CREATE TABLE-satssyntax
    • CREATE TABLE-exempel
  • SKAPA TABELL med PRIMÄRNYCKEL-begränsning
  • SKAPA TABELL med FOREIGN KEY
  • SKAPA TABELL med INTE NULL-kolumnen
  • SKAPA TABELL med en datumkolumn
  • Oracle-alternativ till SQL SKAPA TABELL OM INTE FINNS
  • Skapa en ny tabell från en annan tabell med CREATE TABLE AS SELECT
  • SKAPA TABELL från SELECT i PL/SQL
  • Hur man skapar och infogar data i en tillfällig tabell
  • SKAPA TABELL i en blinkning med dbForge för Oracle
  • Slutsats

Att skapa tabeller i Oracle är ett av sätten att ordna data, så det är viktigt att lära sig så mycket som möjligt om CREATE TABLE kommando. Det finns flera olika sätt att skapa en tabell i Oracle och vi kommer att täcka dem ytterligare i den här guiden.

Observera att du måste ha systembehörigheten CREATE TABLE för att skapa en ny tabell. Om du vill skapa en tabell i en annan användares schema måste du ha systemprivilegiet CREATE ANY TABLE. Om du är ägare till tabellen måste du ha UNLIMITED TABLESPACE systembehörighet eller kvoten för tabellutrymmet som tabellen innehåller.

Dessutom måste du ha behörigheten EXECUTE objekt eller EXECUTE ANY TYPE systembehörighet för att skapa en objekttabell eller en relationstabell som innehåller en objekttypskolumn om du vill ha tillgång till alla typer som refereras av tabellen.

Exemplen i den här artikeln avser Oracle 19c-versionen, men metoderna är desamma för alla Oracle-versioner som används (inklusive Oracle 10g, 11g, 12c, etc.).

Oracle CREATE TABLE-satssyntax

Låt oss börja med grunderna. För att skapa en ny tabell i en Oracle-databas, CREATE TABLE uttalande kan användas. CREATE TABLE syntaxen i Oracle är följande:

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

Låt oss ta en närmare titt på den angivna syntaxen:

  1. schema_name.table_name :namn på tabellen och schemat som den nya tabellen tillhör.
  2. column_1 och column_2 data_type column_constraints :platshållare för kolumnnamnen.
  3. data_type :NUMBER, VARCHAR, etc.
  4. column_constraint :NOT NULL, primärnyckel, check, etc.
  5. table_constraint :tabellbegränsningar (primärnyckel, främmande nyckel, check).

Du hittar Oracle CREATE TABLE syntaxexempel längre fram i den här artikeln.

Obs :
Förutom att du lär dig hur du skapar en tabell i Oracle kanske du också vill fördjupa dina kunskaper om Oracle ALTER TABLE-sats .

CREATE TABLE-exempel

Det är alltid bättre att lära av praktiken. Låt oss därför titta på Oracles CREATE TABLE exempel:

Följande exempel visar hur man skapar en tabell med tre kolumner med namnet anställda :

CREATE TABLE employees
( employee_id number(10) NOT NULL,
  employee_name varchar2(50) NOT NULL,
  city varchar2(50)
);
  • Kolumn 1 heter employee_id och har en nummerdatatyp (max 10 siffror långa). Den kan inte innehålla nollvärden.
  • Kolumn 2 heter kundnamn och har en varchar2-datatyp (max 50 tecken långa) och kan inte heller innehålla nollvärden.
  • Kolumn 3 heter stad och har en varchar2-datatyp. Till skillnad från de två föregående kan den här kolumnen innehålla nollvärden.

SKAPA TABELL med PRIMARY KEY-begränsning

Låt oss nu se hur man skapar en tabell i Oracle med en primärnyckel. För att definiera en primärnyckel för tabellen kan du använda vår tidigare skapade tabell Anställda , redigera Oracle SQL CREATE TABLE uttalande och definiera employee_id som primärnyckel:

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)
);

PRIMARY KEY sats gör det möjligt att specificera en kolumn som den primära nyckeln. Du kan använda syntaxen för primärnyckeln för att identifiera varje unik rad i tabellen. Till skillnad från andra databaser tillåter Oracle att en tabell endast innehåller en primärnyckel, och varje fält i primärnyckeln måste innehålla andra värden än NULL för att tabellen ska anses giltig. I exemplet ovan definierar vi employee_id kolumnen som Primärnyckelkolumn .

SKAPA TABELL med FOREIGN KEY

Låt oss ta en titt på syntaxen för Oracle CREATE TABLE uttalande FOREIGN nyckel. Det kan både definieras på kolumnnivå eller tabellnivå:

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) );

I denna syntax:

  • Kolumn 1 är märkt med emp_no , och det är formaterat som ett tal, vilket innebär att det inte kan inkludera några nollvärden.
  • Kolumn 2 har titeln emp_name , som är byggd som varchar2(50) och inte kan inkludera några nollvärden.
  • Kolumn 3 heter dept_id och har en nummerdatatyp.
  • Kolumn 4 kallas salary och är också formaterad som en nummerkolumn.
  • Tabellnivå primärnyckelbegränsning emp_pk definieras på nyckeln (emp_no ).
  • Begränsningar för främmande nyckel på tabellnivå dept_fk som refererar till avdelningstabellen dept_id .

SKAPA TABELL med kolumnen INTE NULL

Om du vill ange att kolumnen inte kan vara tom och måste innehålla något värde, kan du definiera den som NOT NULL. Hitta syntaxen för CREATE TABLE kommandot med NOT NULL-kolumnen i Oracle nedan:

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

Som du kan se, emp_id innebär att man anger ett värde för varje rad med data eftersom det INTE är NULL.

SKAPA TABELL med en datumkolumn

Om du behöver skapa en tabell med datumkolumnen i Oracle kan följande syntax vara till nytta:

CREATE TABLE employees_bdays (
bday DATE
);

För att effektivt infoga ett datum i kolumnen behöver du to_date funktion som accepterar en teckensträng som innehåller datumet samt en annan teckensträng som instruerar den om hur man tolkar det mottagna datumet.

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

Oracle-alternativ till SQL SKAPA TABELL OM INTE FINNS

De användare som är vana vid en mycket användbar SQL CREATE TABLE IF NOT EXISTS kommando, kan bli besviken eftersom det inte finns något sådant uttalande i Oracle. Men om du fortfarande behöver avgöra om en tabell redan finns innan du skapar den i Oracle, hittar du alternativa lösningar på detta problem nedan.

Om du får ett felmeddelande (ORA-00955:namn används redan av ett befintligt objekt) när du försöker skapa en tabell, kan det fungera som en indikator på att en sådan tabell redan finns där.

Skapa en ny tabell från en annan tabell med CREATE TABLE AS SELECT

Ibland måste du kopiera data från en tabell och infoga den i en annan. Det är ganska enkelt att skapa en tabell som en annan tabell i Oracle, plus att det är väldigt användbart. Du sparar tid och kraft om du vill skapa en tabell med samma struktur. Det förenklar också testprocessen.

För att se hur man skapar en tabell från en annan tabell i Oracle, titta på skriptet nedan:

CREATE TABLE table_name AS (
SELECT select_query
);

Det kallas också CREATE TABLE AS SELECT (CTAS).

Du kan antingen ange tabellnamn för din nya tabell eller använd SELECT fråga för att kopiera den. Du kan också ange SELECT * FROM gammalt_bord om du behöver kopiera all data till den nya tabellen. Om du behöver begränsa värdena som ska kopieras över, visas WHERE klausul kommer att vara till hjälp för dig.

SKAPA TABELL från SELECT i PL/SQL

I Oracle kan du också skapa en tabell från en annan genom att ange SELECT uttalande i slutet av CREATE TABLE påstående. I det här fallet kommer alla poster från den gamla tabellen att kopieras till den nya. Syntaxen för Oracle CREATE TABLE från SELECT är följande:

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

Som du kan se skapade PL/SQL-tabeller från SELECT kommandot är mycket användbart. Observera att du också kan skapa en tillfällig tabell från SELECT .

Hur man skapar och infogar data i en tillfällig tabell

Tillfälliga tabeller används i Oracle för att lagra data som hör till en session eller en transaktion.

Den temporära ORACLE-tabellen är ett DDL-objekt med alla begränsningar.

Så hur skapar man en tillfällig tabell i Oracle? Du kan använda CREATE GLOBAL TEMPORARY TABLE-satsen för att skapa en tillfällig tabell. För att definiera om data i tabellen är transaktionsspecifik (standard) eller sessionsspecifik, använd ON COMMIT-satsen.

Syntaxen för transaktionsspecifika data är följande:

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

SKAPA TABELL i en blinkning med dbForge för Oracle

Tid har alltid varit en av de mest värdefulla resurserna som finns. Därför kan det vara bra att använda en lämplig IDE för att spara tid. En av de bästa lösningarna är dbForge Studio för Oracle. Det är ett universellt verktyg som kan vara användbart för att utveckla, administrera och hantera Oracle-databaser. Denna effektiva GUI-klient är perfekt för DBA:er, databasutvecklare, mjukvaruingenjörer och analytiker. dbForge Studio för Oracle möjliggör datasynkronisering mellan flera Oracle-servrar och underlättar automatisering av databasutvecklingsprocesser.

När du öppnar IDE för första gången kommer du att se Databasanslutningsegenskaper fönster. Om du vill öppna den manuellt väljer du Databas och klicka på Ny anslutning .

Efter det fyller du i motsvarande fält och trycker på Testa anslutning .

Om allt är korrekt konfigurerat ser du meddelandet Lyckad ansluten som kommer att se ut så här:

Efter att ha anslutit till din Oracle-server, välj den användare du vill skapa en ny tabell för. Vårt senaste blogginlägg om hur man skapar en ny användare i Oracle kan komma till nytta i det här steget.

Det första steget mot att skapa en ny tabell är att högerklicka på det önskade schemat. Peka på Nytt objekt och klicka på det första alternativet:Tabell .

1. I Namn textrutan i tabellredigeraren , ange ett tabellnamn. I exemplet nedan skapar vi en tabell med titeln anställda .

2. I rutnätet nedan, skriv in namnen för de framtida kolumnerna, välj datatyp och om de ska vara INTE NULL.

3. Kolumnegenskaper kommer att visas på höger sida av Tabellredigeraren .

4. Du kommer att se att alla åtgärder du utför i Table Editor , återspeglas i SQL-frågan längst ned i fönstret.

När egenskaperna för tabellen är konfigurerade klickar du på Använd ändringar och det är det!

Slutsats

Att skapa tabeller är en av de vanligaste uppgifterna när man arbetar med Oracle-databaser eftersom det hjälper till att organisera data. I vår guide har vi erbjudit en detaljerad genomgång av hur man skapar en tabell i Oracle på 10 olika sätt. Du kan använda Oracle SQL CREATE TABLE-satsen och köra frågan manuellt eller använda en lämplig IDE för att automatisera processen. I det här fallet är dbForge Studio för Oracle det bästa valet.

Användbara länkar

  • Skapa en databas i Oracle
  • Byt namn på tabellen i Oracle
  • PL/SQL-formaterare

  1. Mysql-fråga för att dynamiskt konvertera rader till kolumner

  2. PostgreSQL strömmande replikering - en djupdykning

  3. saknas FROM-klausulpost för tabellen Grupo cakephp

  4. SQLalchemy begår inte ändringar vid inställning av roll