Bruke DDL Statements


Bruke DDL-setninger til å opprette og administrere Tabeller

Et skjema er samlingen av flere databaseobjekter, som er kjent som schema objects.These gjenstander har direkte tilgang med sine eieren schema.Below bordlister de skjemaobjekter

Table -. til å lagre data

View - til prosjektet data i et ønsket format fra en eller flere tabeller

Sequence - for å generere tallverdier

Index - for å forbedre ytelsen til spørringer på bordene

Synonym - alternativt navn av et objekt

En av de første trinnene i å skape en database er å lage tabeller som vil lagre en organisasjons data.Database utforming innebærer å identifisere systembrukerkrav for ulike organisatoriske systemer som for oppføring, lagerstyring og kundefordringer. Uavhengig av database størrelse og kompleksitet, er hver database består av tabeller

Opprette tabellen

For å opprette en tabell i databasen, må en DBA ha visse opplysninger i hånden -. Navn bordet, kolonnenavn, kolonne datatyper, og kolonnestørrelser. All denne informasjonen kan endres senere ved hjelp DDL kommandoer.

Table Navnekonvensjoner -

Navnet du velger for en tabell må følge disse standardreglene:

Navnet må begynne med en brev AZ eller az

Kan inneholde tall og understrek

Kan være i ØVRE av små bokstaver

< p> Kan være opptil 30 tegn

Kan ikke bruke samme navn av en annen eksisterende objekt i ditt skjema

Må ikke være en SQL reserverte ordet

Etter retningslinjene ovenfor, 'EMP85 "kan være et gyldig bord name.But 85EMP er not.Similarly, kan UPDATE ikke være valgt som en tabell navn siden det en SQL reserverte søkeord.

CREATE TABLE-setningen

CREATE TABLE er en DDL uttalelse som brukes til å lage tabeller i database.The tabellen blir opprettet så snart CREATE TABLE skriptet kjøres og er klar til å holde dataene onwards.The brukeren må ha CREATE TABLE system privilegium å opprette tabellen i sin egen schema.But å opprette en tabell i alle brukerens skjema, må brukeren ha SKAPE EN TABELL skjema.

Her er syntaksen til en grunnleggende CREATE TABLE statement.There kan være mange flere klausuler å eksplisitt gi lagrings spesifikasjoner eller segmentverdier.
CREATE TABLE [skjema.] tabellen ({kolonne datatype [DEFAULT expr] [column_constraint] ... | table_constraint} [{kolonne datatype [DEFAULT expr] [column_constraint] ... | table_constraint}] ...) [AS subquery]

I ovennevnte syntaksen angir STANDARD standardverdien som kan brukes under INSERT-setningen dersom kolonnen blir ignorert. Den kan ikke inneholde referanser til andre tabellkolonner eller pseudo kolonner (currval, NEXTVAL, LEVEL, og ROWNUM) unntatt SYSDATE og bruker, eller dato konstanter som ikke er fullt spesifisert.

Begrensninger er reglene definert eventuelt nivå kolonnen eller tabellnivå (dekket senere i dette kapitlet) .Disse reglene blir sjekket i løpet av noen data handling (Insert, oppdatering) på bordet og heve feil å avbryte handlingen ved brudd.

For eksempel CREATE TABLE-setningen nedenfor oppretter en tabell EMP_TEST. Legg merke til kolonne spesifikasjoner, datatype og presisjon.
CREATE TABLE SCOTT.EMP_TEST (EMPID NUMMER, Ename VARCHAR2 (100), DEPARTMENT_ID NUMMER, LØNN NUMMER, JOB_ID VARCHAR2 (3), HIREDATE DATE, KOMM NUMBER);

En bruker kan henvise tabellene fra andre brukerens skjema med prefikset brukernavnet eller skjema med tabellen name.For eksempel ønsker en bruker GUEST å ​​spørre den ansatte navnet og lønn fra EMP_TEST tabellen som eies av SCOTT. Han kan utstede under spørring -
VELG Ename, LØNN, Fra GUEST.EMP_TEST;

En kolonne kan holde en standardverdi i den tiden av tabellen creation.It bidrar til å begrense NULL verdier komme inn i kolonnen. Standardverdien kan utledes fra enten en bokstavelig, uttrykk eller SQL-funksjon som må returnere en kompatibel datatype til kolonnen. I nedenfor CREATE TABLE-setningen, merk at LOCATION_ID kolonnen har standardverdien 100.
CREATE TABLE SCOTT.DEPARTMENT (DEPARTMENT_ID NUMMER, DNAME VARCHAR2 (100), LOCATION_ID standardnummer 100);
CTAS - Lag tabellen ved hjelp subquery

En tabell kan opprettes fra en eksisterende tabell i databasen med en delspørring option.It kopier tabellen struktur samt data fra tabellen. Data kan også kopieres basert på conditions.The kolonnedatatypedefinisjoner inkludert eksplisitt pålagt IKKE NULL begrensninger kopieres inn i den nye tabellen.

under CTAS script oppretter en ny tabell EMP_BACKUP. Ansattes data fra avdeling 20 blir kopiert inn i den nye tabellen
CREATE TABLE EMP_BACKUPASSELECT * FROM EMP_TESTWHERE department_id = 20;.
Datatyper

Datatyper brukes til å angi grunnleggende oppførsel av en kolonne i table.On en bredere basis, kan kolonnen atferd enten tilhøre tall, tegn eller en dato familien.Det er flere andre undertyper som tilhører disse familiene.

Antall datatype

Antall datatype omfatter både heltall, fast punkt, og flyttall values.Early versjoner av Oracle definert ulike datatyper for hver av disse forskjellige typer tall, men nå er antallet datatype serverer alle disse purposes.Choose ANTALL datatype når en kolonne må lagre numeriske data som kan brukes i matematisk calculations.Occasionally, er antall datatype som brukes til å lagre identifikasjonsnumre hvor disse tallene er generert av DBMS som sekvensielle tall.

NUMMER (p, s), der p er presisjonen opptil 38 sifre og s er omfanget (antall sifre til høyre for desimaltegnet) sikret skala kan variere mellom -84 til 127.

NUMMER (p), er et fast punkt tall med en skala fra null og en nøyaktighet på p.

FLOAT [(p)], der p er binære presisjon som kan variere fra 1 til 126. Hvis p ikke er angitt standardverdien er binær 126 .

Date datatype

For hver DATE datatype, Century, år, måned, dag, time, minutt, sekund er lagret i databasen. Hver databasesystem har en standard datoformat som er definert av initialisering parameter NLS_DATE_FORMAT. Denne parameteren er vanligvis satt til DD-Man-YY.If du ikke angi et tidspunkt, er standard tiden 0:00:00

Tegn datatype

Oracle støtter tre forhåndsdefinerte karakter datatyper, inkludert røye, VARCHAR, VARCHAR2, og LONG.VARCHAR og VARCHAR2 er faktisk synonymt, og Oracle anbefaler å bruke VARCHAR2 stedet for VARCHAR.Use CHAR datatype når kolonnen vil lagre tegn verdier som er løst-length.For eksempel et Social Security nummer (SSN) i USA er tildelt hver borger, og er alltid 9 tegn i størrelse (selv om en SSN er strengt består av sifre, er sifrene behandlet som tegn), og vil bli spesifisert som CHAR (9). Bruk VARCHAR2 datatype til å lagre alfanumeriske data som er variabel-length.For eksempel en kunde navn eller adresse vil variere betydelig i forhold til antall tegn til å være stored.The maksimale størrelsen på en VARCHAR2 kolonnen er 4000 tegn. Anmeldelser
LOB-datatype

Oracle gir flere forskjellige LOB datatyper, inkludert clob (tegnet stort objekt) og BLOB (BLOBen) .Columns av disse datatyper kan lagre ustrukturerte data inkludert tekst, bilde, video, og romlig data.The clob datatype kan lagre opptil åtte terabyte med data karakter ved hjelp av CHAR database karakter apparatet.Rommet BLOB datatype brukes til å lagre ustrukturerte binære større gjenstander som de som er forbundet med bilde- og videodata hvor dataene er rett og slett en strøm av "litt" values.A BLOB datatype kan lagre opptil åtte terabyte med binære data.The NCLOB datatype kan lagre karakter store gjenstander i multibyte nasjonal karakter satt opp til 8 TB til 128TB.The BFILE datatype verdi fungerer som en fil locator eller pekeren til fil på serverens filsystem. Den maksimale filstørrelsen som støttes er 8 TB til 128TB.

Begrensninger

Begrensninger er det sett av regler som er definert i Oracle tabeller for å sikre data integrity.These regler håndheves plassert for hver kolonne eller et sett av kolonner .Når bordet deltar i data handling, er disse reglene validert og heve unntak ved overtredelse. De tilgjengelige begrensningen typene er ikke null, primærnøkkel, Unique, sjekk, og Foreign Key

nedenfor syntaks kan brukes til å innføre begrensninger på kolonnenivå

Syntax:..
Kolonnen [datatype] [begrensningen begrensnings] constraint_type

Alle begrensninger bortsett NOT NULL, kan også defineres på tabellnivå. Kompositt begrensninger kan bare angis på tabellnivå.

NOT NULL Begrensning

En NOT NULL begrensning betyr at en data rad må ha en verdi for kolonnen spesifisert som IKKE NULL.If en kolonne er spesifisert som NOT NULL, vil Oracle RDBMS ikke tillater rader som skal lagres til den ansatte tabellen som bryter denne constraint.It kan bare defineres på kolonnenivå, og ikke på tabellnivå.

Syntax:
KOLONNE [datatype] [NOT NULL]
UNIK begrensning

Noen ganger er det nødvendig å håndheve unikhet en kolonneverdi som ikke er en primærnøkkel kolonnen for. Den unike begrensningen kan brukes til å håndheve denne regelen, og Oracle vil avvise noen rader som bryter den unike constraint.Unique begrensningen sikrer at kolonneverdiene er tydelig, uten duplikater.

Syntax:

Kolonne nivå:
KOLONNE [datatype] [CONSTRAINT ] [UNIK]

Tabell Nivå:
CONSTRAINT [begrensningen navn] (kolonnenavn)

Merk UNIK: Oracle skaper internt entydig indeks for å unngå dobbeltarbeid i values.Indexes kolonne vil bli diskutert senere i PL /SQL
CREATE TABLE TEST (. ..., NAME VARCHAR2 (20) CONSTRAINT TEST_NAME_UK UNIK, ...);.

I tilfelle av kompositt unik nøkkel, det må defineres ved bordet nivå som under
CREATE TABLE TEST (..., NAME VARCHAR2 (20), STD VARCHAR2 (20), CONSTRAINT TEST_NAME_UK UNIK (NAVN, STD));
Primary Key

Hvert bord skal normalt inneholde en kolonne eller et sett med kolonner som unikt identifiserer rader med data som lagres i table.This kolonne eller et sett av kolonner er referert til som den primære key.Most bordene har en enkelt kolonne som den primære key.Primary nøkkelkolonner er begrenset mot nullverdier og like verdier.

Poeng å bli lagt merke til -.

En tabell kan bare ha én primærnøkkel

Flere kolonner kan skamslått under en sammensatt primær nøkkel.

Oracle skaper internt entydig indeks for å unngå dobbeltarbeid i values.Indexes kolonne vil bli diskutert senere i PL /SQL.

Syntax :

Kolonne nivå:
KOLONNE [datatype] [CONSTRAINT PRIMARY KEY]

Tabell nivå:
CONSTRAINT [ ,,,0],. begrensningen navn] PRIMARY KEY [kolonnen (e)]

Følgende eksempel viser hvordan du bruker PRIMARY KEY begrensningen på kolonnenivå
CREATE TABLE TEST (ID NUMMER CONSTRAINT TEST_PK PRIMARY KEY, ...);

Følgende eksempel viser hvordan du definerer sammensatt primærnøkkel ved hjelp PRIMARY KEY begrensning på tabellnivå
CREATE TABLE TEST (..., CONSTRAINT TEST_PK PRIMARY KEY (ID).);
Utenlandsk Key

Når to tabeller dele foreldre barn-forhold basert på bestemt kolonne, blir spleise kolonne i barnet tabellen kjent som Foreign Key.This eiendom av tilsvarende kolonne i den overordnede tabellen er kjent som referanse integrity.Foreign Nøkkelkolonneverdier i barnet tabellen kan enten være null eller må de eksisterende verdiene i morselskapet table.Please oppmerksom på at kun primærnøkkelkolonner referansetabellen er kvalifisert til å håndheve referanseintegritet.

Hvis en fremmednøkkel er definert på kolonnen i barnet tabellen da Oracle ikke tillater den overordnede raden som skal slettes, hvis det inneholder alle barn rows.However, hvis ON DELETE CASCADE alternativet er gitt på tidspunktet for å definere fremmednøkkel, sletter Oracle alle barne rader mens forelder rad blir deleted.Similarly, ON DELETE SET NULL indikerer at når en rad i den overordnede tabellen slettes, blir de utenlandske nøkkelverdier satt til null

Syntax.

Kolonne nivå:
KOLONNE [datatype] [CONSTRAINT] [begrensningen navn] [Referanser] [tabellnavn (kolonnenavn)]

Tabell nivå:
CONSTRAINT [begrensningen navn] [FOREIGN KEY (fremmednøkkelkolonne navn) Referanser] [referansetabellen navn (referert kolonnenavn)]

Følgende eksempel viser hvordan du bruker FOREIGN KEY begrensningen på kolonnenivå.
CREATE TABLE TEST ( ccode varchar2 (5) CONSTRAINT TEST_FK REFERANSER PARENT_TEST (ccode), ...);

Bruk av ON DELETE CASCADE klausul
CREATE TABLE TEST (ccode varchar2 (5) CONSTRAINT TEST_FK REFERANSER PARENT_TEST ( ccode) ON DELETE CASCADE, ...);
Se begrensningen

Noen ganger dataverdiene som er lagret i en bestemt kolonne må falle innenfor noen akseptabel rekkevidde av values.A CHECK begrensning krever at angitt sjekk tilstanden er enten sann eller gal for hver rad er lagret i table.Check begrensning gjør det mulig å innføre en betinget regel på en kolonne, som må valideres før dataene innføres i kolonnen. Forutsetningen må ikke inneholde en sub spørring eller pseudo kolonne currval NEXTVAL, LEVEL, ROWNUM, eller SYSDATE.

Oracle lar en enkelt kolonne for å ha mer enn én CHECK begrensning. Faktisk er det ingen praktisk grense for hvor mange SJEKK begrensninger som kan defineres for en kolonne

Syntax.

Kolonne nivå:
KOLONNE [ ,,,0],datatype] CONSTRAINT [navn] [CHECK (tilstand)]

Tabell nivå:
CONSTRAINT [name] CHECK (tilstand)

Følgende eksempel viser hvordan du bruker CHECK begrensning på kolonnen . nivå
CREATE TABLE TEST (..., GRADE char (1) CONSTRAINT TEST_CHK CHECK (øvre (GRADE) i ('A', 'B', 'C')), ...);

Følgende eksempel viser hvordan du bruker CHECK begrensning på tabellnivå
CREATE TABLE TEST (..., CONSTRAINT TEST_CHK CHECK (stdate <= Sluttdato));.
ALTER TABLE-setningen

En DBA kan gjøre endringer i tabellstrukturen eller kolonnedefinisjoner etter at tabellen er opprettet i database.The DDL kommandoen ALTER TABLE brukes til å utføre en slik actions.Alter kommandoen gir flere verktøy eksklusive for skjema objects.The ALTER TABLE-setningen brukes til å legge , slipp, gi nytt navn, og endre en kolonne i en tabell

under ALTER TABLE-setningen omdøper tabellen EMP å EMP_NEW
ALTER TABLE EMP Endre navn for å EMP_NEW;..

under ALTER TABLE-setningen legger en ny kolonne TESTCOL til EMP_NEW tabellen
ALTER TABLE EMP_NEW ADD (TESTCOL VARCHAR2 (100))

under ALTER TABLE-setningen endrer navn TESTCOL kolonnen til TESTNEW.
ALTER TABLE EMP_NEW RENAME KOLONNE TESTCOL TIL TESTNEW

Den nedenfor ALTER TABLE-setningen slippe kolonnen TESTNEW fra EMP_NEW tabellen
ALTER TABLE EMP_NEW DROP KOLONNE TESTNEW;.

under ALTER TABLE-setningen legger primærnøkkel på ansatt_nr kolonne
ALTER TABLE EMP_NEW ADD PRIMARY KEY (ansatt_nr )

under ALTER TABLE-setningen slippe primærnøkkelen
ALTER TABLE EMP_NEW DROP PRIMARY KEY;.

under ALTER TABLE-setningen bytter bordet modus for å lese bare
ALTER TABLE EMP_NEW LES BARE. < h2> Les Bare Tables

Les bare bord kom som en forbedring i Oracle 11g.It gjør tabellene som skal brukes for lese formål. I tidligere oracle versjoner, tabeller ble gjort beskyttet ved å gi SELECT privilegium til andre brukere, men eieren fortsatt hadde lese- skrive privilege.But nå, hvis en tabell er angitt som skrivebeskyttet, selv eieren ikke har tilgang på datamanipulasjon .

Syntax:
ALTER TALE [TABLE NAVN] Les ONLYALTER TALE [TABLE NAVN] Les Skriv
Illustrasjon
SQL> CREATE TABLE ORATEST (ID-nummer) SQL> INSERT INTO ORATEST VERDIER ( 1), SQL> ALTER TABLE ORATEST LES BARE SQL> INSERT INTO ORATEST VERDIER (2); INSERT INTO ORATEST VERDIER (2) * FEIL på linje 1: ORA-12081: oppdateringsoperasjon ikke tillatt på bordet "TEST" "ORATEST. "SQL> UPDATE ORATEST SET id = 2; UPDATE ORATEST SET id = 2 * FEIL på linje 1: ORA-12081: oppdateringsoperasjon ikke tillatt på bordet" "." TEST ORATEST "SQL> DELETE FROM ORATEST; DELETE FROM ORATEST * ERROR på linje 1: ORA-12081: oppdateringsoperasjon ikke tillatt på bordet "TEST" "ORATEST" SQL> avkorte TABELL ORATEST; avkorte TABELL ORATEST * FEIL på linje 1:. ORA-12081: oppdateringsoperasjon ikke tillatt på bordet "TEST". "ORATEST" SQL> ALTER TABLE ORATEST ADD (beskrivelse VARCHAR2 (50)); ALTER TABLE ORATEST ADD (beskrivelse VARCHAR2 (50)) * FEIL på linje 1:. ORA-12081: oppdateringsoperasjon ikke tillatt på bordet "TEST" "ORATEST "SQL> ALTER TABLE ORATEST LES skriv Tabell altered.SQL> DELETE FROM ORATEST; en rad slettet
DROP TABLE-setningen

DROP TABLE-setningen brukes til å fjerne en tabell fra databasen.. Den falt tabellen og dataene forblir ikke lenger tilgjengelig for selection.Dropped tabell kan gjenopprettes ved hjelp BLIKK verktøyet, hvis tilgjengelig i recyclebin.Dropping en tabell dråper indeksen og utløser knyttet til den.

Syntax:
DROP TABLE [TABLE NAVN] [PURGE]

under uttalelse vil slippe bordet og legg den inn i recyclebin
DROP TABLE emp_new;

under uttalelse. vil slippe bordet og skylle den ut fra recyclebin også DROP TABLE emp_new PURGE.
;