sql >> Database teknologi >  >> RDS >> Oracle

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

I denne artikel skal vi tale om CREATE TABLE kommando. For at være mere præcis vil vi fokusere på, hvordan man opretter en tabel i Oracle med en primær og fremmednøgle, samt ikke null- og datokolonner, se nærmere på, hvordan man opretter en ny tabel på basis af den eksisterende. , og mere. Vi vil også gennemgå fordelene og fordelene ved at bruge dbForge Studio til Oracle, når du arbejder med tabeller.

Indhold

  • Oracle CREATE TABLE-sætningssyntaks
    • CREATE TABLE-eksempel
  • OPRET TABEL med PRIMÆR NØGLE-begrænsning
  • OPRET TABEL med UDENLANDSKE NØGLE
  • OPRET TABEL med IKKE NULL-kolonnen
  • OPRET TABEL med en datokolonne
  • Oracle-alternativ til SQL OPRET TABEL, HVIS IKKE FINDER
  • Opret en ny tabel fra en anden tabel ved hjælp af CREATE TABLE AS SELECT
  • OPRET TABEL fra SELECT i PL/SQL
  • Sådan opretter og indsætter du data i en midlertidig tabel
  • OPRET TABEL i et blink ved hjælp af dbForge til Oracle
  • Konklusion

At oprette tabeller i Oracle er en af ​​måderne at arrangere data på, så det er vigtigt at lære så meget som muligt om CREATE TABLE kommando. Der er flere forskellige måder at oprette en tabel på i Oracle, og vi vil dække dem yderligere i denne guide.

Bemærk venligst, at du skal have systemprivilegiet CREATE TABLE for at oprette en ny tabel. Hvis du ønsker at oprette en tabel i en anden brugers skema, skal du have systemprivilegiet CREATE ANY TABLE. Hvis du er ejer af tabellen, skal du have UNLIMITED TABLESPACE-systemprivilegiet eller kvoten for det tablespace, som tabellen indeholder.

Derudover skal du have EXCUTE objektprivilegiet eller EXECUTE ANY TYPE systemprivilegiet for at oprette en objekttabel eller en relationstabel, der indeholder en objekttypekolonne, hvis du vil have adgang til alle de typer, som tabellen refererer til.

Eksemplerne i denne artikel vedrører Oracle 19c-versionen, men metoderne er de samme for alle Oracle-versioner i brug (inklusive Oracle 10g, 11g, 12c osv.).

Oracle CREATE TABLE-sætningssyntaks

Lad os begynde med det grundlæggende. For at oprette en ny tabel i en Oracle-database skal du bruge CREATE TABLE erklæring kan bruges. CREATE TABLE syntaks i Oracle er som følger:

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

Lad os se nærmere på den angivne syntaks:

  1. schema_name.table_name :navnene på tabellen og skemaet, den nye tabel tilhører.
  2. column_1 og column_2 data_type column_constraints :pladsholdere for kolonnenavnene.
  3. data_type :NUMBER, VARCHAR osv.
  4. column_constraint :IKKE NULL, primær nøgle, check osv.
  5. table_constraint :tabel begrænsninger (primær nøgle, fremmed nøgle, check).

Du finder Oracle CREATE TABLE syntakseksempel yderligere i denne artikel.

Bemærk :
Ud over at lære at oprette en tabel i Oracle, vil du måske også gerne uddybe din viden om Oracle ALTER TABLE-erklæring .

CREATE TABLE-eksempel

Det er altid bedre at lære af praksis. Lad os derfor se på Oracle CREATE TABLE eksempel:

Følgende eksempel viser, hvordan man opretter en tabel med tre kolonner med navnet medarbejdere :

CREATE TABLE employees
( employee_id number(10) NOT NULL,
  employee_name varchar2(50) NOT NULL,
  city varchar2(50)
);
  • Kolonne 1 hedder employee_id og har en taldatatype (maksimalt 10 cifre i længden). Den kan ikke indeholde null-værdier.
  • Kolonne 2 hedder kundenavn og har en varchar2-datatype (max. 50 tegn i længden) og kan ikke også indeholde null-værdier.
  • Kolonne 3 hedder by og har en varchar2 datatype. I modsætning til de to foregående kan denne kolonne indeholde nulværdier.

OPRET TABEL med PRIMÆR NØGLE-begrænsning

Lad os nu se, hvordan man opretter en tabel i Oracle med en primær nøgle. For at definere en primær nøgle til tabellen kan du bruge vores tidligere oprettede tabel Medarbejdere , rediger Oracle SQL CREATE TABLE erklæring, og definer medarbejder-id som den primære nøgle:

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 klausul gør det muligt at angive en kolonne som den primære nøgle. Du kan bruge den primære nøglesyntaks til at identificere hver unik række i tabellen. I modsætning til andre databaser gør Oracle det muligt for en tabel kun at inkludere én primær nøgle, og hvert felt i den primære nøgle skal indeholde andre værdier end NULL, for at tabellen kan betragtes som gyldig. I eksemplet ovenfor definerer vi employee_id kolonne som Primær nøglekolonne .

OPRET TABEL med FOREIGN KEY

Lad os se på syntaksen for Oracle CREATE TABLE sætning FOREIGN nøgle. Det kan både defineres på kolonneniveau eller tabelniveau:

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 denne syntaks:

  • Kolonne 1 er mærket emp_no , og det er formateret som et tal, hvilket betyder, at det ikke kan indeholde nogen null-værdier.
  • Kolonne 2 har titlen emp_name , som er bygget som varchar2(50) og ikke kan indeholde nogen nul-værdier.
  • Kolonne 3 hedder dept_id og har en taldatatype.
  • Kolonne 4 kaldes salary og er også formateret som en talkolonne.
  • Tabelniveau primær nøglebegrænsning emp_pk er defineret på nøglen (emp_no ).
  • Tabelniveau udenlandsk nøgle begrænsninger dept_fk som refererer til dept tabel dept_id .

OPRET TABEL med IKKE NULL-kolonnen

Hvis du vil angive, at kolonnen ikke må være tom og skal indeholde en eller anden værdi, kan du definere den som IKKE NULL. Find syntaksen for CREATE TABLE kommando med NOT NULL-kolonnen i Oracle nedenfor:

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

Som du kan se, emp_id indebærer at indtaste en værdi for hver række data, da den IKKE er NULL.

OPRET TABEL med en datokolonne

Hvis du har brug for at oprette en tabel med datokolonnen i Oracle, kan følgende syntaks være nyttig:

CREATE TABLE employees_bdays (
bday DATE
);

For effektivt at indsætte en dato i kolonnen skal du bruge to_date funktion, der accepterer en tegnstreng, der indeholder datoen, samt en anden tegnstreng, der instruerer den om, hvordan den modtagne dato skal fortolkes.

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

Oracle-alternativ til SQL OPRET TABEL, HVIS IKKE FINDER

De brugere, som er vant til en meget nyttig SQL CREATE TABLE IF NOT EXISTS kommando, kan blive skuffet, da der ikke er en sådan erklæring i Oracle. Men hvis du stadig skal afgøre, om en tabel allerede eksisterer, før du opretter den i Oracle, vil du finde alternative løsninger på dette problem nedenfor.

Hvis du modtager en fejl (ORA-00955:navn er allerede i brug af et eksisterende objekt), mens du forsøger at oprette en tabel, kan det tjene som en indikator for, at en sådan tabel allerede er der.

Opret en ny tabel fra en anden tabel ved hjælp af CREATE TABLE AS SELECT

Nogle gange skal du kopiere data fra en tabel og indsætte den i en anden. Det er ret nemt at oprette en tabel som en anden tabel i Oracle, plus det er meget nyttigt. Du sparer tid og kræfter, hvis du vil lave en tabel med samme struktur. Det forenkler også testprocessen.

For at se, hvordan du opretter en tabel fra en anden tabel i Oracle, skal du se nedenstående script:

CREATE TABLE table_name AS (
SELECT select_query
);

Det kaldes også CREATE TABLE AS SELECT (CTAS).

Du kan enten indtaste tabelnavn til din nye tabel eller brug SELECT forespørgsel om at kopiere den. Du kan også indtaste SELECT * FROM gammelt_bord hvis du skal kopiere alle data til den nye tabel. Hvis du har brug for at begrænse de værdier, der skal kopieres på tværs, skal du angive WHERE klausul vil være nyttig for dig.

OPRET TABEL fra SELECT i PL/SQL

I Oracle kan du også oprette en tabel fra en anden ved at indtaste SELECT sætning i slutningen af ​​CREATE TABLE udmelding. I dette tilfælde vil alle posterne fra den gamle tabel blive kopieret til den nye. Syntaksen for Oracle CREATE TABLE fra SELECT er som følger:

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

Som du kan se, oprettes PL/SQL-tabel fra SELECT kommandoen er meget nyttig. Bemærk, at du også kan oprette en midlertidig tabel fra SELECT .

Sådan opretter og indsætter du data i en midlertidig tabel

Midlertidige tabeller bruges i Oracle til at gemme de data, der hører til en session eller en transaktion.

Den midlertidige ORACLE-tabel er et DDL-objekt med alle begrænsningerne.

Så hvordan opretter man en midlertidig tabel i Oracle? Du kan bruge CREATE GLOBAL TEMPORARY TABLE-sætningen til at oprette en midlertidig tabel. For at definere, om dataene i tabellen er transaktionsspecifikke (standard) eller sessionsspecifikke, skal du bruge ON COMMIT-klausulen.

Syntaksen for de transaktionsspecifikke data er som følger:

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

OPRET TABEL i et blink med dbForge til Oracle

Tid har altid været en af ​​de mest værdifulde ressourcer derude. Derfor kan det være nyttigt at bruge en passende IDE i forhold til at spare tid. En af de bedste løsninger er dbForge Studio til Oracle. Det er et universelt værktøj, der kan bruges til at udvikle, administrere og administrere Oracle-databaser. Denne effektive GUI-klient er fantastisk til DBA'er, databaseudviklere, softwareingeniører og analytikere. dbForge Studio til Oracle giver mulighed for datasynkronisering mellem flere Oracle-servere og letter automatisering af databaseudviklingsprocesser.

Når du åbner IDE for første gang, vil du se Egenskaber for databaseforbindelse vindue. For at åbne den manuelt skal du vælge Database og klik på Ny forbindelse .

Derefter skal du udfylde de tilsvarende felter og trykke på Test forbindelse .

Hvis alt er konfigureret korrekt, vil du se meddelelsen Forbundet lykkedes der vil se sådan her ud:

Når du har oprettet forbindelse til din Oracle-server, skal du vælge den bruger, du ønsker at oprette en ny tabel for. Vores seneste blogindlæg om, hvordan du opretter en ny bruger i Oracle, kan være nyttig på dette trin.

Det første skridt mod at oprette en ny tabel er at højreklikke på det påkrævede skema. Peg på Nyt objekt og klik på den første mulighed:Tabel .

1. I Navn tekstboks i Tabeleditoren , indtast et tabelnavn. I eksemplet nedenfor opretter vi en tabel med titlen medarbejdere .

2. Indtast navnene på de fremtidige kolonner i gitteret nedenfor, vælg datatypen, og om de IKKE skal være NULL.

3. Kolonneegenskaber vil blive vist i højre side af Tabeleditor .

4. Du vil se, at alle de handlinger, du udfører, i Tabeleditor , afspejles i SQL-forespørgslen nederst i vinduet.

Når egenskaberne for tabellen er konfigureret, skal du klikke på Anvend ændringer og det er det!

Konklusion

Oprettelse af tabeller er en af ​​de mest almindelige opgaver, når du arbejder med Oracle-databaser, da det hjælper med at organisere data. I vores guide har vi tilbudt en detaljeret gennemgang af, hvordan man opretter en tabel i Oracle på 10 forskellige måder. Du kan bruge Oracle SQL CREATE TABLE-sætningen og udføre forespørgslen manuelt eller bruge en passende IDE til at automatisere processen. I dette tilfælde er dbForge Studio til Oracle det bedste valg.

Nyttige links

  • Opret en database i Oracle
  • Omdøb tabellen i Oracle
  • PL/SQL-formatering

  1. Hvorfor lære Cassandra med Hadoop?

  2. Forskellen i måneder mellem datoer i MySQL

  3. Enkeltrækkefunktioner i Oracle sql

  4. Kommaseparerede værdier til IN-funktion i oracle