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:
schema_name.table_name
:navnene på tabellen og skemaet, den nye tabel tilhører.column_1
ogcolumn_2 data_type column_constraints
:pladsholdere for kolonnenavnene.data_type
:NUMBER, VARCHAR osv.column_constraint
:IKKE NULL, primær nøgle, check osv.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 tabeldept_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