Bortsett fra tabeller, andre essensielle skjemaobjekter er utsikt, sekvenser, indekser og synonyms.A syn er en logisk eller virtuelle bordet. Synonymer er rett og slett alias navn for database objects.Synonyms også forenkle søket skriving og gir et element av systemsikkerheten ved å skjule det faktiske navnet på en database object.Sequences er spesielle databaseobjekter som støtter automatisk generering av heltallsverdier, og blir ofte brukt til å generere primærnøkkelverdier for tables.Indexes er opprettet på tabellkolonner til rette for rask gjenfinning av informasjon fra tabeller.
Visninger
En database syn er en logisk eller virtuell tabell basert på en spørring. Visninger er spørres akkurat som tabeller.Dette betyr at fra ditt perspektiv som en utvikler eller fra en brukerdatabase system perspektiv, ser ut som en bordet.Bassengområdet definisjon av en visning som et objekt er lagret i en database data ordboken utsikt; imidlertid ingen data itself.A databasen lagrer en visning butikker også henrettelsen plan for å skape en visning-dette betyr at data kan hentes raskt gjennom bruk av et syn, selv om de faktiske data som presenteres av en SELECT spørring av en visning ikke er lagret som en del av en view.Rather, er dataene "samlet" hver gang at et syn er spørres fra databasetabellene som en visning er definert-disse betegnes basistabeller.
Den generelle syntaksen er gitt nedenfor.
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW [ViewName] [(Navn kolonne Alias ...)] AS [Query] [MED [CHECK OPTION] [bare lese] [CONSTRAINT]];
Fra syntaksen, etter
FORCE valget lar en visning som skal opprettes selv om en basistabell at utsikten referansene ikke allerede exist.This alternativet brukes til å lage en visning før selve etableringen av basistabellene og vedlagte data.
NOFORCE alternativet er det motsatte av FORCE og lar et system brukeren opprette en visning hvis de har de nødvendige rettighetene til å lage en visning, og hvis tabellene der utsikten er opprettet allerede eksisterer. Dette er standardvalget.
MED LES eneste alternativet tillater etablering av et syn som er skrive only.You kan ikke bruke DELETE, INSERT eller UPDATE-kommandoer for å endre data for en skrivebeskyttet visning.
WITH CHECK OPTION-leddet tillater oppdatering av rader som kan velges gjennom view.It kan du også angi begrensninger på values.The CONSTRAINT klausulen fungerer sammen med WITH CHECK OPTION-leddet for å muliggjøre en databaseadministrator å tildele et unikt navn til CHECK OPTION.If en databaseadministrator utelater CONSTRAINT klausulen, vil Oracle automatisk tildele begrensningen en systemgenerert navn som ikke vil være svært meningsfylt.
Typer Views
< p> er et enkelt syn opprettet på toppen av en tabell only.It er en enkel SELECT spørring uten funksjoner eller gruppe klausulen, men bare utvalg av kolonner fra bordet uten noen transformation.If en DML er utført på visningen, er det straight reflektert i basistabellen.
En Complex syn er opprettet på flere bord ved hjelp joins.It kan inneholde SQL-funksjoner, Grupper etter functions.But siden utsikten er på flere data og valg av kolonner er heller ikke enkel , betyr det ikke at DML operasjon på det
Illustrasjon
Simple View:.
nedenfor enkel visning velger ansattes navn, avdeling id og lønn for de ansatte med JOBB ID . som DEV
CREATE OR REPLACE VIEW v_emp_devASSELECT FIRST_NAME, department_id, salaryFROM employeesWHERE job_id = 'DEV';
Complex view:
nedenfor eksemplet viser avdelingsnavn, gjennomsnittlig lønn trekkes i avdelingen og . greven av ansatte som arbeider i det
CREATE OR REPLACE VIEW EMP_VUASSELECT department_name, AVG (lønn) avg_sal, COUNT (FIRST_NAMEs) countFROM ansatte E, avdelinger DWHERE E.department_id = D.department_idGROUP ETTER department_name;
BESKRIVER [view name]
beskriver utsikten struktur. Kolonner er oppført i samme rekkefølge som i utsnittsdefinisjonen.
DML operasjoner på a View
DML operasjoner kan lett utøves på enkle views.As nevnt tidligere, innsatsen, oppdatere og slette operasjoner faktisk skje på basistabellen.
Når du utfører en UPDATE, DELETE, eller sett DML utsagn på en visning, er du faktisk manipulere datarader for basen tabell eller tabeller som utsnittet er definert. Det er restriksjoner på bruk av UPDATE, DELETE, og SETT uttalelser med views.First, for å bruke UPDATE, DELETE, eller INSERT uttalelse med en visning, må utsikten være updateable.A visningen oppdateres hvis SELECT-leddet ikke spesifiserer noen samlefunksjon i SELECT listing.Additionally, utsikten kunne ikke ha blitt skapt gjennom bruk av et GROUP BY, DISTINCT eller UNION klausul eller clauses.It er tillatt for aggregerte funksjoner som skal brukes i en SELECT subquery i et FROM-ledd. Dessuten kan visningen ikke har noen avledet kolonner i SELECT-listen. Neste, hvis en visning er opprettet som et resultat av en BLI drift (a delta visning), er oppdateringen og INSERT-setninger kan bare endre eller sette inn rader i en av basistabellene gangen. Du kan ikke endre rader fra to eller flere tabeller med en enkelt datamanipulasjon språk (DML) statement.Finally, en DELETE-setningen kan bare utføre mot en visning hvis en tabell er referert i et FROM-ledd. Det betyr at du ikke kan slette rader fra en tabell som ikke er spesifisert.
WITH CHECK OPTION-leddet
WITH CHECK OPTION er en valgfri klausul som angir graden av kontroll som skal gjøres når sette inn eller oppdatere data gjennom en view.If utsikt er opprettet ved hjelp WITH CHECK OPTION-leddet, hver rad som blir satt inn eller oppdateres i basistabellen gjennom visningen må være i samsvar med utsnittsdefinisjonen. Legg merke til at alternativet ikke kan spesifiseres hvis utsikten er opprettet som skrivebeskyttet.
For eksempel, en visning V_EMP_DEV er opprettet for arbeidstakere som er utviklere (JOB_ID = DEV).
CREATE OR REPLACE VIEW v_emp_devASSELECT FIRST_NAME, department_id, lønn, fra employeesWHERE job_id = 'DEV'WITH CHECK OPTION empvu_dev;
En bruker forsøker å oppdatere lønn for en HR medarbeider gjennom visningen, men møter et unntak. Dens fordi utsikten ble opprettet WITH CHECK OPTION.
UPDATE v_emp_devSET lønn = lønn + 500WHERE JOB_ID = 'HR'; ORA-01402: view WITH CHECK OPTION hvor-klausul brudd
Hvis det hadde vært en enkel visning, UPDATE-setningen ville ikke ha reist noen unntak.
Slippe utsikten
En databaseadministrator (DBA) eller visning eier kan slippe en visning med DROP VIEW statement.If utsikt har definert begrensninger, så må du spesifisere CASCADE CONSTRAINTS klausulen når slippe en view; ellers mislykkes DROP VIEW uttalelse til process.If annen visning eller andre databaser objekt som et synonym eller materialisert visning (begge disse stedene er omtalt senere i dette kapitlet) refererer til en droppet visning, Oracle faller ikke disse databaseobjekter; heller, markerer Oracle dem som invalid.You kan slippe disse ugyldige gjenstander eller omdefinere dem for å få dem til gyldig igjen.
under DROP VIEW kommando faller utsikten EMP_VU fra databasen
. DROP VIEW EMP_VU;
Sekvenser
Oracle gir mulighet til å generere sekvenser av unike tall for denne type bruk, og de kalles sequences.Generally, sekvenser brukes til å generere unike, sekvensielle heltallsverdiene som brukes som primær viktige verdier i databasen tables.A sekvens av tall kan genereres i enten stigende eller synkende order.Note at en rekke gang generert av sekvensen ikke kan rulles tilbake. Fra syntaks, etter CREATE SEQUENCE uttalelsen må oppgi en unik sekvens navn. Dette er den eneste nødvendige ledd i setningen. Hvis du ikke angir noen av de andre klausuler, vil alle sekvensnumre genereres følg Oracle standardinnstillingene. INCREMENT BY klausulen bestemmer hvordan en sekvens trinn som hvert nummer genereres. Standardøkningen er en; men hvis du har en god grunn for en sekvens for å hoppe over tall, kan du angi en annen increment.A positiv numerisk økning genererer stigende sekvensnumre med et intervall lik intervallet du select.A negative numerisk økning genererer synkende sekvensnumre. starten med klausul spesifiserer start numerisk verdi for sekvensen-standard startnummeret er one.Additionally, må du angi en startverdi hvis du allerede har noen rader med data i kolonnen som nå vil butikken sekvens verdier . MAXVALUE klausulen angir maksimumsverdien som en sekvens kan økes. I fravær av en MAXVALUE, er den maksimale tillatte verdien som kan genereres for en sekvens ganske stor, 10 til 27 makt - 1. Standardinnstillingen er NOMAXVALUE MINVALUE klausul angir minimumsverdien for en. sekvens for en minking sekvens (en som genererer tall i synkende rekkefølge). Standard er NOMINVALUE. Syklusen klausul presiserer at sekvens verdier kan gjenbrukes dersom sekvensen når den angitte MAXVALUE. Hvis sekvens sykluser, er tall generert starter igjen på START MED verdi. CACHE klausulen kan forbedre systemytelsen ved at Oracle å generere en bestemt gruppe med sekvensert tall å bli lagret i bufferminnet. Hvis du angir CACHE uten å angi et nummer, er standardstørrelsen cache 20 sekvens numbers.Optionally, kan du angi nocache å forhindre buffer sekvensnumre. ORDER klausul presiserer at sekvensen numrene er tildelt i nøyaktig kronologisk rekkefølge de blir bedt om. Sequence verdier skapes gjennom bruk av to pseudo kolonner heter currval og nextval.A pseudo kolonne oppfører seg som en tabellkolonne, men pseudo kolonner er faktisk ikke lagret i en bordet.Bassengområdet første gang du velger nextval pseudo-kolonnen, er den opprinnelige verdien i sekvensen returned.Subsequent valg av nextval pseudo kolonne føre sekvensen for å øke som angitt i INCREMENT BY klausulen og returnere den nylig genererte sekvensen verdi.Maten currval pseudo kolonne returnerer nåverdien av sekvensen, som er verdien som returneres av den siste referanse til nextval. I en sesjon, NEXTVAL, og ikke den currval må være den første handlingen på sekvensen. Dette er fordi i en økt, når NEXTVAL genererer det første nummeret av økten fra sekvensen, holder Oracle gjeldende verdi i currval currval og NEXTVAL kan bare brukes i Ytre SQL av en utvalgt uttalelse currval og NEXTVAL kan brukes i INSERT uttalelse til. Innbytter en kolonne primær key.It kan brukes både som en subquery klausul og også i VALUES-leddet. currval og NEXTVAL kan brukes til å oppdatere verdiene i tabellene. currval og NEXTVAL kan ikke være i sikte Select-liste, med nøkkelordet DISTINCT, med GROUP BY, HAR, eller ORDER BY klausuler, og DEFAULT uttrykk i en CREATE TABLE eller ALTER TABLE-setningen. Sekvens eieren kan endre en sekvens for å endre attributter som INCREMENT BY verdi, MINVALUE, MAXVALUE, sykle eller cache klausuler bare. . Merk at endringer som er gjort vil bli reflektert i de kommende numrene DROP REKKEFØLGE kommandoen dråper sekvenser som må gjenskapt eller ikke lenger er Indekser er databaseobjekter som brukes til å justere ytelsen SELECT query.There er forskjellige typer indekser inkludert de som brukes til å håndheve primærnøkkel begrensninger, unike indekser, ikke-entydige indekser og sammensatte indekser, blant others.Without indekser, ville spørringer kreve Oracle å skanne alle radene i en tabell for å returnere de nødvendige rader for resultatet table.An indeksen er opprettet på tabellkolonner, som deretter lagrer alle verdiene i kolonnen under indeksen segment.Unlike sekvens, indekser er tabellen specific.They automatisk droppet når bordet er henlagt. Indekser kan opprettes automatisk eller manually.When du angir en primærnøkkel begrensningen eller entydige begrensningen, vil Oracle automatisk opprette en unik indeks for å støtte rask innhenting av data for den oppgitte tabellen. Alternativt Brukeren kan lage indekser manuelt for å optimalisere spør performance.Manually opprettet indekser kan være unike eller ikke unique.Non-entydige indekser kan være B-treet, Bitmap eller funksjonsbasert index.By standard Oracle skaper B-tre indeksene på columns.Here er syntaksen Merk at UNIK og bitmap må angis bare for unike og bitmap indexes.By standard Oracle skaper B-tre indekser for vanlige indekser. En sammensatt indeks (også kalt en sammensatt indeks) er en indeks opprettet på flere kolonner i en tabell. Kolonner i en sammensatt indeks kan dukke opp i hvilken som helst rekkefølge og trenger ikke være tilstøtende kolonner i tabellen. Sammensatte indekser forbedre rad gjenfinning hastighet for spørringer som WHERE-leddet referanser alle eller den ledende delen av søylene i den sammensatte indeksen. En indeks kan inneholde maksimalt 32 kolonner. For eksempel oppretter en brukerindeks IDX_EMP på HIRE_DATE kolonne av ANSATTE bordet.Bassengområdet indeksen bruk vil redusere disk I /O ved traversering indeksert banen scan og finner data som er filtrert på HIRE_DATE kolonne Indekser kan ikke endres, men kan endres for analyse, ombygging eller statistikk beregning purposes.If indeksdefinisjonen må endres, det må bli droppet og recreated.The syntaks av DROP INDEX kommandoen er enkel Et synonym er et alias, som er en form for stenografi brukes til å forenkle oppgaven på å registrere en database object.The konsept er analogt til bruk av kallenavn for venner og acquaintances.Referencing et objekt som eies av en annen bruker krever skjemanavnet som skal innledes med det. Med hjelp av et synonym, reduserer du innsatsen på å registrere objektet sammen med skjemaet name.In denne måten, gir synonym plassering åpenhet fordi synonym navnet skjuler selve objektet navn og sin eier. Det er to kategorier av synonymer, offentlig og private.A offentlig synonym kan brukes for å gi enkel tilgang til et objekt for alle brukere av systemet. Faktisk har den enkelte skape en offentlig synonym ikke eier synonym-stedet, vil det tilhøre PUBLIC brukergruppe som eksisterer innenfor Oracle.Private synonymer, på den annen side, hører til systembrukeren som skaper dem og bor i det brukerens skjema Et system bruker kan gi det privilegium å bruke private synonymer som de eier til andre system users.In for å skaper synonymer, må du ha CREATE synonym privilege.Further, du må ha CREATE PUBLIC synonym privilegium for å skape offentlig synonyms.If et synonym er erklært som offentlig, kan den synonym navn ikke allerede være i bruk som et offentlig synonym. Forsøk på å opprette en offentlig synonym som allerede eksisterer vil føre CREATE PUBLIC synonym kommandoen til å mislykkes, og Oracle vil returnere ORA-00955: Navnet er allerede brukt av et eksisterende objekt feilmelding En uer kan slippe synonym som den eier. Å slippe en offentlig synonym, må du ha DROP PUBLIC synonym privilegium.
Syntax
CREATE SEQUENCE
NEXTVAL og currval
Syntax.
Sequence.NEXTVALSequence.CURRVAL
Peker til bemerkes -
Endre sekvensen
Syntax:
ALTER REKKEFØLGE [sekvens name] INCREMENT BY nMAXVALUE nNOCACHENOCYCLE
Slippe sekvensen
nødvendig. DROP REKKEFØLGE [sekvens navn]
avskriftene
Syntax
CREATE [UNIK] [BITMAP] INDEX indexON tabellen (kolonne [, kolonne] ...);
CREATE INDEX IDX_EMP PÅ ansatte (hire_date);.
Slippe Index
DROP INDEX index_name;.
synonymer
Syntax
CREATE [PUBLIC] synonym [synonym navn] FOR OBJECT;.
Illustrasjon
<. p> Tenk to brukere U1 og U2.U1 har tilgang til ANSATTE bordet. Så for å gjøre det mulig tilgang på ANSATTE bordet til U2 også, kan et synonym opprettes i U2 skjema. Tilgang må gis av U1 til U2
Conn U2 /U2SQL> CREATE synonym EMP_SYN FOR U1.employees;. Conn U1 /U1SQL> GRANT ALL ON EMP_SYN TIL U2, Conn U2 /U2SQL> SELECT * FROM EMP_SYN;
Slippe en Synonym
DROP synonym EMP_SYN;