sql >> Database >  >> RDS >> Oracle

Oracle CREATE TABLE Commando in PL/SQL met 10 voorbeelden

In dit artikel gaan we het hebben over de CREATE TABLE opdracht. Om preciezer te zijn, zullen we ons concentreren op het maken van een tabel in Oracle met een primaire en externe sleutel, maar ook niet met null- en datumkolommen, en bekijk nauwkeurig hoe u een nieuwe tabel kunt maken op basis van de bestaande , en meer. We zullen ook de voordelen en voordelen bekijken van het gebruik van dbForge Studio voor Oracle bij het werken met tabellen.

Inhoud

  • Oracle CREATE TABLE-instructiesyntaxis
    • CREATE TABLE voorbeeld
  • MAAK TABEL met PRIMARY KEY-beperking
  • MAAK TAFEL MET BUITENLANDSE SLEUTEL
  • MAAK TABEL met NIET NULL-kolom
  • MAAK TABEL met een datumkolom
  • Oracle alternatief voor SQL MAAK TABEL ALS NIET BESTAAT
  • Maak een nieuwe tabel van een andere tabel met CREATE TABLE AS SELECT
  • MAAK TABEL van SELECT in PL/SQL
  • Gegevens maken en invoegen in een tijdelijke tabel
  • MAAK TABEL in een knipoog met dbForge voor Oracle
  • Conclusie

Het maken van tabellen in Oracle is een van de manieren om gegevens te ordenen, dus het is van cruciaal belang om zoveel mogelijk te leren over de CREATE TABLE opdracht. Er zijn verschillende manieren om een ​​tabel te maken in Oracle en we zullen ze verder in deze handleiding behandelen.

Houd er rekening mee dat u het systeemrecht CREATE TABLE moet hebben om een ​​nieuwe tabel te maken. Als u een tabel in het schema van een andere gebruiker wilt maken, moet u het systeemrecht CREATE ANY TABLE hebben. Als u de eigenaar van de tabel bent, moet u het systeemprivilege ONBEPERKTE TABLESPACE hebben of het quotum voor de tabelruimte die de tabel bevat.

Bovendien moet u het EXECUTE-objectrecht of het EXECUTE ELK TYPE systeemprivilege hebben om een ​​objecttabel of een relationele tabel te maken die een objecttypekolom bevat als u toegang wilt hebben tot alle typen waarnaar door de tabel wordt verwezen.

De voorbeelden in dit artikel hebben betrekking op de Oracle 19c-versie, maar de methoden zijn hetzelfde voor alle Oracle-versies die in gebruik zijn (inclusief Oracle 10g, 11g, 12c, enz.).

Oracle CREATE TABLE-instructiesyntaxis

Laten we beginnen met de basis. Om een ​​nieuwe tabel in een Oracle-database aan te maken, gebruikt u de CREATE TABLE verklaring kan worden gebruikt. De CREATE TABLE syntaxis in Oracle is als volgt:

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

Laten we de geleverde syntaxis eens nader bekijken:

  1. schema_name.table_name :namen van de tabel en het schema waartoe de nieuwe tabel behoort.
  2. column_1 en column_2 data_type column_constraints :tijdelijke aanduidingen voor de kolomnamen.
  3. data_type :NUMMER, VARCHAR, enz.
  4. column_constraint :NOT NULL, primaire sleutel, check, etc.
  5. table_constraint :tabelbeperkingen (primaire sleutel, externe sleutel, vinkje).

U vindt de Oracle CREATE TABLE syntaxisvoorbeeld verderop in dit artikel.

Opmerking :
Naast het leren maken van een tabel in Oracle, wil je misschien ook je kennis verdiepen over de Oracle ALTER TABLE-instructie .

CREATE TABLE voorbeeld

Het is altijd beter om te leren uit de praktijk. Laten we daarom eens kijken naar de Oracle CREATE TABLE voorbeeld:

Het volgende voorbeeld laat zien hoe u een tabel met drie kolommen maakt met de naam werknemers :

CREATE TABLE employees
( employee_id number(10) NOT NULL,
  employee_name varchar2(50) NOT NULL,
  city varchar2(50)
);
  • Kolom 1 heet employee_id en heeft een numeriek datatype (maximaal 10 cijfers lang). Het mag geen null-waarden bevatten.
  • Kolom 2 heet customer_name en heeft een varchar2-gegevenstype (maximaal 50 tekens lang) en kan ook geen null-waarden bevatten.
  • Kolom 3 heet stad en heeft een varchar2-gegevenstype. In tegenstelling tot de vorige twee kan deze kolom null-waarden bevatten.

TABEL MAKEN met PRIMARY KEY-beperking

Laten we nu eens kijken hoe we een tabel in Oracle kunnen maken met een primaire sleutel. Om een ​​primaire sleutel voor de tabel te definiëren, kunt u onze eerder gemaakte tabel gebruiken Medewerkers , bewerk de Oracle SQL CREATE TABLE statement, en definieer de employee_id als de primaire sleutel:

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

De PRIMARY KEY clausule staat het specificeren van een kolom toe als de primaire sleutel. U kunt de primaire sleutelsyntaxis gebruiken om elke unieke rij in de tabel te identificeren. In tegenstelling tot andere databases, maakt Oracle het mogelijk dat een tabel slechts één primaire sleutel bevat, en elk veld van de primaire sleutel moet andere waarden dan NULL bevatten om de tabel als geldig te beschouwen. In het bovenstaande voorbeeld definiëren we de employee_id kolom als de Primaire sleutelkolom .

TABEL MAKEN met BUITENLANDSE SLEUTEL

Laten we eens kijken naar de syntaxis voor de Oracle CREATE TABLE verklaring FOREIGN sleutel. Het kan zowel op kolomniveau als op tabelniveau worden gedefinieerd:

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 deze syntaxis:

  • Kolom 1 is gelabeld emp_no , en het is opgemaakt als een getal, wat betekent dat het geen null-waarden kan bevatten.
  • Kolom 2 is getiteld emp_name , die is gebouwd als varchar2(50) en geen null-waarden kan bevatten.
  • Kolom 3 heet dept_id en heeft een numeriek datatype.
  • Kolom 4 heet salary en is ook opgemaakt als een getalkolom.
  • Primaire sleutelbeperking op tabelniveau emp_pk is gedefinieerd op de sleutel (emp_no ).
  • Restricties van externe sleutels op tabelniveau dept_fk welke verwijst naar dept table dept_id .

CREER TAFEL met NIET NULL-kolom

Als u wilt specificeren dat de kolom niet leeg mag zijn en een waarde moet bevatten, kunt u deze definiëren als NOT NULL. Zoek de syntaxis voor de CREATE TABLE commando met de NOT NULL-kolom in Oracle hieronder:

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

Zoals je kunt zien, emp_id impliceert het invoeren van een waarde voor elke rij gegevens aangezien deze NIET NULL is.

MAAK TABEL met een datumkolom

Als u een tabel met de datumkolom in Oracle moet maken, kan de volgende syntaxis van pas komen:

CREATE TABLE employees_bdays (
bday DATE
);

Om efficiënt een datum in de kolom in te voegen, hebt u de to_date . nodig functie die een tekenreeks accepteert die de datum bevat, evenals een andere tekenreeks die aangeeft hoe de ontvangen datum moet worden geïnterpreteerd.

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

Oracle alternatief voor SQL MAAK TABEL ALS NIET BESTAAT

Die gebruikers, die gewend zijn aan een zeer behulpzame SQL CREATE TABLE IF NOT EXISTS commando, zou teleurgesteld kunnen zijn omdat er geen dergelijke verklaring in Oracle is. Maar als u nog steeds moet bepalen of een tabel al bestaat voordat u deze in Oracle maakt, vindt u hieronder alternatieve oplossingen voor dit probleem.

Als u een foutmelding krijgt (ORA-00955:naam is al in gebruik door een bestaand object) terwijl u probeert een tabel te maken, kan dit dienen als een indicatie dat zo'n tabel er al is.

Maak een nieuwe tabel van een andere tabel met CREATE TABLE AS SELECT

Soms moet u gegevens uit de ene tabel kopiëren en in een andere invoegen. Het is vrij eenvoudig om een ​​tabel te maken zoals een andere tabel in Oracle, en het is ook erg handig. U bespaart tijd en moeite als u een tabel met dezelfde structuur wilt maken. Het vereenvoudigt ook het testproces.

Bekijk het onderstaande script om te zien hoe u een tabel kunt maken van een andere tabel in Oracle:

CREATE TABLE table_name AS (
SELECT select_query
);

Het wordt ook wel CREATE TABLE AS SELECT (CTAS) genoemd.

U kunt ofwel de tabelnaam . invoeren voor uw nieuwe tafel of gebruik de SELECT vraag om het te kopiëren. U kunt ook SELECT * FROM . invoeren old_table als u alle gegevens naar de nieuwe tabel moet kopiëren. Als u de te kopiëren waarden wilt beperken, gebruikt u de WHERE clausule zal nuttig voor u zijn.

MAAK TABEL van SELECT in PL/SQL

In Oracle kunt u ook de ene tabel van de andere maken door de SELECT . in te voeren statement aan het einde van de CREATE TABLE uitspraak. In dit geval worden alle records uit de oude tabel gekopieerd naar de nieuwe. De syntaxis van de Oracle CREATE TABLE uit de SELECT is als volgt:

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

Zoals u kunt zien, is het maken van een PL/SQL-tabel uit de SELECT commando is erg handig. Merk op dat u ook een tijdelijke tabel kunt maken vanuit SELECT .

Gegevens maken en invoegen in een tijdelijke tabel

Tijdelijke tabellen worden in Oracle gebruikt om de gegevens op te slaan die bij één sessie of één transactie horen.

ORACLE tijdelijke tabel is een DDL-object met alle beperkingen.

Dus hoe maak je een tijdelijke tabel in Oracle? U kunt de instructie CREATE GLOBAL TEMPORARY TABLE gebruiken om een ​​tijdelijke tabel te maken. Gebruik de ON COMMIT-clausule om te definiëren of de gegevens in de tabel transactiespecifiek (de standaardinstelling) of sessiespecifiek zijn.

De syntaxis voor de transactiespecifieke gegevens is als volgt:

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

MAAK TABEL in een knipoog met dbForge voor Oracle

Tijd is altijd een van de meest waardevolle bronnen geweest die er zijn. Daarom kan het nuttig zijn om een ​​geschikte IDE te gebruiken om tijd te besparen. Een van de beste oplossingen is dbForge Studio voor Oracle. Het is een universele tool die van pas kan komen bij het ontwikkelen, beheren en beheren van Oracle-databases. Deze efficiënte GUI-client is geweldig voor DBA's, databaseontwikkelaars, software-engineers en analisten. dbForge Studio voor Oracle maakt gegevenssynchronisatie tussen verschillende Oracle-servers mogelijk en vergemakkelijkt de automatisering van database-ontwikkelingsprocessen.

Wanneer u de IDE voor de eerste keer opent, ziet u de Database Connection Properties raam. Om het handmatig te openen, kiest u Database en klik op Nieuwe verbinding .

Vul daarna de overeenkomstige velden in en druk op Verbinding testen .

Als alles correct is geconfigureerd, ziet u het bericht Succesvol verbonden dat ziet er ongeveer zo uit:

Nadat u verbinding heeft gemaakt met uw Oracle-server, kiest u de gebruiker waarvoor u een nieuwe tabel wilt maken. Onze recente blogpost over het maken van een nieuwe gebruiker in Oracle kan bij deze stap van pas komen.

De eerste stap naar het maken van een nieuwe tabel is door met de rechtermuisknop op het gewenste schema te klikken. Wijs naar Nieuw object en klik op de eerste optie:Tabel .

1. In de Naam tekstvak van de Tabeleditor , voer een tabelnaam in. In het onderstaande voorbeeld maken we een tabel met de titel employees .

2. Typ in het onderstaande raster de namen voor de toekomstige kolommen, kies het gegevenstype en of ze NIET NULL moeten zijn.

3. De Kolomeigenschappen wordt weergegeven aan de rechterkant van Tabeleditor .

4. U zult zien dat alle acties die u uitvoert in Tabeleditor , worden weergegeven in de SQL-query onder aan het venster.

Zodra de eigenschappen van de tabel zijn geconfigureerd, klikt u op Wijzigingen toepassen en dat is het!

Conclusie

Het maken van tabellen is een van de meest voorkomende taken bij het werken met Oracle-databases, omdat het helpt bij het organiseren van gegevens. In onze gids hebben we een gedetailleerde uitleg gegeven over het maken van een tabel in Oracle op 10 verschillende manieren. U kunt de Oracle SQL CREATE TABLE-instructie gebruiken en de query handmatig uitvoeren of een geschikte IDE gebruiken om het proces te automatiseren. In dit geval is dbForge Studio voor Oracle de beste keuze.

Nuttige links

  • Een database maken in Oracle
  • Hernoem de tabel in Oracle
  • PL/SQL-formatter

  1. PGError:ERROR:aggregaties niet toegestaan ​​in WHERE-clausule op een AR-query van een object en zijn has_many objecten

  2. Schadelijke, alomtegenwoordige mythes over SQL Server-prestaties

  3. 4 manieren om de taakgeschiedenis van SQL Server op te halen

  4. geen ocijdbc9 in java.library.path