Oracle gi data Manipulation Language kommandoer for å utøve data operasjoner i database.Data operasjoner kan være fyller databasetabellene med søknaden eller forretningsdata, endre dataene og fjerne data fra databasen, når det kreves. I tillegg til de data operasjoner, er det sett av kommandoer som brukes til å kontrollere disse operations.These kommandoene er gruppert som Transaction Control Language.
Det er tre typer av DML utsagn som er involvert i en logisk SQL transaksjon nemlig inn, oppdatere, slette og Merge.A transaksjonen er logisk samling av DML handlinger innenfor en database økt.
Sett uttalelse
INSERT kommandoen brukes til å lagre data i tabeller. INSERT kommandoen brukes ofte i høyere nivå programmeringsspråk som Visual Basic.NET eller C ++ som en innfelt SQL kommando; Men kan denne kommandoen også bli utført på SQL * PLUS rask kommando i mode.There er to forskjellige former av INSERT kommandoen. Den første formen benyttes hvis en ny rad vil ha en verdi satt inn i hver kolonne i rekken. Den andre formen for INSERT kommandoen brukes til å sette inn rader hvor noen data kolonnen er ukjent eller misligholdt fra en annen forretnings logic.This form av INSERT kommandoen krever at du spesifiserer kolonnenavn for hvilke data som blir lagret.
< h3> Syntax.
nedenfor syntaks kan følges dersom verdiene for alle kolonnene i tabellen er klar og kjent
INSERT INTO tableVALUES (COLUMN1 verdi, COLUMN2 verdi, ...); < p> nedenfor syntaks kan brukes hvis bare noen få kolonner fra tabellen må være befolket med en verdi. Resten av kolonnene kan utlede deres verdier enten som NULL eller fra et annet forretningslogikk
INSERT INTO tabell (COLUMN1 navn, COLUMN2 navn,...) VALUES (COLUMN1 verdi, COLUMN2 verdi...);.
INSERT-setningen nedenfor oppretter en ny medarbeider rekord i ANSATTE tabellen. Legg merke til at det setter verdiene for de primære kolonner ansatt_nr, FIRST_NAMEs, lønn og DEPARTMENT_ID
INSERT INTO ansatte (ansatt_nr, FIRST_NAME, lønn, DEPARTMENT_ID) VALUES (130, 'KEMP ", 3800, 10);.
Ellers kan fullføre ansattes data settes inn i ANSATTE bordet uten kolonnelisten spesifisere bruker under INSERT statement - forutsatt at verdiene er kjent på forhånd og må være i samsvar med datatype og posisjon kolonner i tabellen
INSERT INTO. employeesVALUES (130, 'KEMP', 'GARNER', '[email protected]', '48309290', TO_DATE ('01 -Jan-2012 '),' SALES ', 3800, 0, 110, 10);
Verdier for å settes inn må være kompatibelt med datatypen for kolonnen. Literaler, faste verdier og spesielle verdier som funksjoner, SYSDATE, CURRENT_DATE, SEQ.CURRVAL (NEXTVAL), eller bruker kan brukes som kolonneverdier. Verdiene som er oppgitt må følge de generelle reglene. Strenger og datoverdier må legges innenfor anførselstegn. Dato verdi kan leveres i DD-Man-RR eller D-man-ÅÅÅÅ format, men ÅÅÅÅ er å foretrekke siden det tydelig angir tallet og er ikke avhengig av intern RR beregning tallet logikk.
INSERT-AS- VELG (IAS) uttalelse
Data kan fylles inn i måltabellen fra kildetabellen ved hjelp INSERT..AS..SELECT (IAS) drift. Dens en direkte vei lese operation.Its en enkel måte å lage kopi av data fra en tabell til en annen, eller lage en sikkerhetskopi av bordet som kildetabellen operasjoner er online.
For eksempel kan data være kopiert fra ANSATTE tabellen til EMP_HISTORY bord
INSERT INTO EMP_HISTORYSELECT ansatt_nr, EMPLOYEE_NAME, LØNN, DEPARTMENT_IDFROM ansatte;.
UPDATE statement
UPDATE-kommandoen endrer data som er lagret i en column.It kan oppdatere enkel eller flere rader om gangen, avhengig av resultatsettet filtrert av forhold som er angitt i WHERE-leddet. Legg merke til at Oppdatering kolonner er forskjellig fra forandre kolonnene. Tidligere i dette kapitlet, studerte du ALTER command.The ALTER kommandoen endrer tabellstrukturen, men forlater bordet data unaffected.The UPDATE-kommandoen endringer data i tabellen, ikke tabellstrukturen
Syntax:.
UPDATE tableSET column = verdi [, column = verdi ...] [WHERE betingelse]
Fra syntaks, etter
SET column = uttrykk kan være en kombinasjon av tegn, formler, eller funksjoner som vil oppdatere data den oppgitte kolonnen name.The WHERE klausulen er valgfritt, men hvis det er inkludert i, angir det som rader vil være updated.Only ett bord kan oppdateres på en tid med en oppdatering kommando.
UPDATE uttalelse under oppdaterer lønnen til arbeidstaker JOHN til 5000.
UPDATE employeesSET lønn = 5000WHERE ØVRE (FIRST_NAME) = 'JOHN';
Selv om HVOR predikater er valgfrie, men må være logisk legges slik å modifisere bare ønsket rad i tabellen. UPDATE-setningen under oppdaterer lønningene til alle ansatte i tabellen
UPDATE employeesSET lønn = 5000;.
Flere kolonner kan også oppdateres ved å angi flere kolonner i SET-leddet atskilt med komma. For eksempel, hvis både lønn og jobb rolle har å bli endret til 5000 og SALES henholdsvis for JOHN, ser UPDATE uttalelse som, etter UPDATE employeesSET LØNN = 5000, JOB_ID = 'SALES'WHERE ØVRE (FIRST_NAME) =' JOHN '; en rad oppdatert
En annen måte å oppdatere flere kolonner med samme raden viser bruken av
subquery UPDATE employeesSET (LØNN, JOB_ID) = (SELECT 5000, 'SALES' FRA DUAL) HVOR STORE (Ename).. = 'JOHN'
Slett Vern
DELETE kommandoen er en av de enkleste av SQL-setninger. Det fjerner en eller flere rader fra et bord. Multiple bord slette operasjoner er ikke tillatt i SQL.The syntaksen til DELETE kommandoen er som følger
DELETE FROM table_name [WHERE betingelse];.
DELETE kommandoen sletter alle rader i tabellen som tilfredsstiller betingelsen i den valgfrie WHERE-leddet. Siden WHERE-leddet er valgfritt, kan man enkelt slette alle rader fra en tabell ved å utelate en WHERE klausulen siden WHERE klausulen begrenser omfanget av slettingen.
under DELETE-setningen ville fjerne Edwins detaljer fra EMP tabellen
SLETT employeesWHERE ØVRE (Ename) = 'EDWIN'1 rad slettet
Merk:.. DELETE [TABLE NAVN] og DELETE FROM [TABLE NAME] holder samme betydning.
WHERE betingelse i de betingede slette uttalelser kan gjøre bruk av delspørring som vist nedenfor.
DELETE FROM employeesWHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FRA STEDER HVOR LOCATION_CODE = 'SFO')
TRUNCATE
avkorte er en DDL kommando som brukes til å skylle ut alle poster fra en tabell, men beholder tabellstrukturen. Det betyr ikke støtter WHERE betingelse for å fjerne de valgte postene
Syntax.
Avkorte [bordet navn]
Det er Auto forplikte dvs. det forplikter aktive transaksjonen i økten. Avkorting tabellen ikke faller ikke avhengige indekser, utløser eller tabellbegrensninger. Hvis en tabell A er forelder til en referanse begrensning av en tabell B i databasen, kan bordet A ikke bli avkortet.
Transaksjons
En transaksjon er en logisk arbeidsenhet gjort i databasen . Det kan enten inneholde -
Multiple DML kommandoer slutter med en TCL kommando dvs. iverksetting eller tilbakestilling
En DDL kommando
En DCL kommando
Begynnelsen av en transaksjon er merket med det første DML kommandoen. Det ender med en TCL, DDL eller DCL kommando. En TCL kommando dvs. iverksetting eller tilbakestilling er problemer eksplisitt å avslutte en aktiv transaksjon. I kraft av sin grunnleggende oppførsel, hvis noen av DDL eller DCL kommandoer blir utført i en database økt, begår den pågående aktiv transaksjon i økten. Hvis databaseforekomsten krasjer unormalt, er transaksjonen stoppet.
COMMIT, ROLLBACK og SAVE er transaksjonen kontroll språket. COMMIT gjelder dataene endres permanent i databasen mens ROLLBACK ikke anti-commit drift. SAVE styrer serie av en transaksjon ved å sette markører på forskjellige transaksjonstrinn. Brukeren kan rulle tilbake den aktuelle transaksjonen til ønsket lagringspunkt, som ble satt tidligere
COMMIT Anmeldelser -. Forplikte avslutter det aktive transaksjonen ved å bruke dataene endres permanent i databasetabellene. COMMIT er en TCL kommando som eksplisitt ender transaksjonen. Men, DDL og DCL kommando implisitt begå transaksjonen
SAVEAnmeldelser -. Lagringspunktet brukes til å markere et bestemt punkt i den aktuelle transaksjonen i økten. Siden det er logisk markør i transaksjonen, kan lagringspunkter ikke spørres i data ordbøker
ROLLBACK Anmeldelser -. Rollback kommandoen brukes til å avslutte hele transaksjonen ved å forkaste dataene endres. Dersom transaksjonen inneholder merkede lagringspunkter, ROLLBACK TO SAVE [navn] kan brukes til å tilbakestille transaksjonen opp til den angitte lagringspunktet bare. Som et resultat, vil alle dataene endres opptil den oppgitte lagringspunktet kastes.
demonstrasjon
Tenk ANSATTE tabellen som blir befolket med nyansatte ansatte detaljer i løpet av første kvartal hvert år. Den geistlige ansatte føyer hver ansatt detalj med et lagringspunkt, slik som å fjerne den defekte data når som helst i løpet av data fôring aktivitet. Legg merke til at han holder SAVEPOINT navnene samme som de ansattes navn.
INSERT INTO ansatte (ansatt_nr, FIRST_NAME, hire_date, job_id, lønn, department_id) VALUES (105, 'Allen', TO_DATE ('15 -Jan 2013 ', 'SALES', 10000,10); SAVE Allen; INSERT INTO ansatte (ansatt_nr, FIRST_NAME, hire_date, job_id, lønn, department_id) VALUES (106, 'Kate', TO_DATE ('15 -Jan-2013 ',' PROD ', 10000,20); SAVE Kate; INSERT INTO ansatte (ansatt_nr, FIRST_NAME, hire_date, job_id, lønn, department_id) VALUES (107, 'McMan', TO_DATE ('15 -Jan av 2013 "," admin ", 12000,30); SAVE McMan;
Tenk, data fôring operatør innser at han har feilaktig oppgitt lønnen til "Kate" og "McMan 'Han ruller tilbake den aktive transaksjonen til lagringspunktet Kate og re-entrer de ansattes detaljer for Kate og. . McMan
ROLLBACK TO SAVE Kate; INSERT INTO ansatte (ansatt_nr, FIRST_NAME, hire_date, job_id, lønn, department_id) VALUES (106, 'Kate', TO_DATE ('15 -Jan 2013 ',' PROD ', 12500, 20), SAVE Kate; INSERT INTO ansatte (ansatt_nr, FIRST_NAME, hire_date, job_id, lønn, department_id) VALUES (107, 'McMan', TO_DATE ('15 -Jan-2013 "," admin ", 13200,30); SAVE McMan;
Når han er ferdig med dataregistrering, kan han begå hele transaksjonen ved å utstede COMMIT i gjeldende økt
Les Konsistens
Oracle opprett konsistens blant brukerne i hver. sesjon i form av tilgang til data og lese /skrive handlinger.
Når en DML oppstår på et bord, de opprinnelige dataverdier endres av handlingen er registrert i databasen angre poster. Så lenge transaksjonen ikke er forpliktet til databasen, alle brukere i andre økten som senere spør den modifiserte data ser de opprinnelige dataverdier. Oracle bruker aktuell informasjon i systemet globale området og opplysninger i angre poster å konstruere en skrive konsistent visning av en tabellens data for en spørring. Bare når en transaksjon er begått, endringer av transaksjonen gjøres permanent. Transaksjonen er nøkkelen til Oracles strategi for å gi lese konsistens.
Startpunkt for lese-konsekvent visninger genereres på vegne av leserne
Controls når modifiserte data kan ses av andre transaksjoner av databasen for å lese eller oppdatere Anmeldelser