Oracle PL/SQL lisää, päivitä, poista ja valitse [esimerkki]

⚡ Älykäs yhteenveto

SQL-lausekkeet sisällä Oracle PL/SQL käsittelee kaikki datan käsittelytehtävät, jolloin lohko voi lisätä, päivittää, poistaa ja valita rivejä suoraan. INSERT-, UPDATE-, DELETE- ja SELECT INTO -komennot siirtävät ja hakevat tietoja tietokannan sisällä.

  • ⚙️ DML-komennot: INSERT, UPDATE, DELETE ja SELECT INTO suorittavat kaikki PL/SQL-lohkon sisällä olevat datan käsittelytehtävät.
  • Tiedon syöttäminen: INSERT INTO lisää rivejä eksplisiittisestä VALUES-taulukosta tai suoraan toisesta taulukosta SELECT-lauseen avulla.
  • 🔄 Tietojen päivitys: UPDATE ja SET-lauseke muuttavat sarakearvoja, kun taas valinnainen WHERE-lauseke rajoittaa muuttuvien rivien määrää.
  • 🗑️ Tietojen poistaminen: DELETE poistaa vastaavat tietueet, ja WHERE-lauseen poisjättäminen tyhjentää koko taulukon.
  • 🎯 Valitse kohteeseen: SELECT INTO -funktion on palautettava täsmälleen yksi rivi, tai Oracle aiheuttaa NO_DATA_FOUND tai TOO_MANY_ROWS.
  • 🤖 AI-apu: Tekoälyavustajat, kuten GitHub Copilot, luonnostelevat DML-lohkoja ja merkitsevät puuttuvan WHERE- tai COMMIT-merkinnän.

Oracle PL/SQL Lisää Päivitä Poista Valitse Kohtaan

DML-tapahtumat PL/SQL:ssä

DML on lyhenne sanoista Data Manipulation Language, joka on kielten ryhmä. SQL komentoja, jotka muuttavat taulukkoon tallennettuja tietoja. Taulukon sisällä PL/SQL-lohkoNämä komennot suorittavat manipulointityön, kun taas PL/SQL tarjoaa ympäröivän logiikan. DML käsittelee alla olevat operaatiot.

  • Tietojen lisäys
  • Tietojen päivitys
  • Tietojen poisto
  • Tietojen valinta

PL/SQL:ssä datan käsittely suoritetaan vain SQL-komentojen avulla.

Tietojen lisäys

PL/SQL:ssä rivit lisätään taulukkoon SQL-komennolla INSERT INTO. Tämä komento ottaa syötteeksi taulukon nimen, kohdesarakkeet ja sarakearvot ja lisää sitten arvon perustaulukkoon.

INSERT-komento voi myös ottaa arvot suoraan toisesta taulukosta SELECT-lauseen avulla sen sijaan, että antaisi arvot kullekin sarakkeelle. SELECT-lauseen avulla voidaan lisätä kerralla niin monta riviä kuin lähdetaulukko sisältää.

Syntaksi:

BEGIN
INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>)
VALUES(<value1>,<value2>,...,<value_n>);
END;

Yllä oleva syntaksi esittää INSERT INTO -komennon. Taulukon nimi ja arvot ovat pakollisia kenttiä, kun taas sarakenimet ovat valinnaisia, kun INSERT-lauseke antaa arvot taulukon jokaiselle sarakkeelle. Avainsana VALUES on pakollinen, kun arvot annetaan erikseen, kuten yllä on esitetty.

Syntaksi:

BEGIN
INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>)
SELECT <column1>,<column2>,...,<column_n> FROM <table_name2>;
END;

Tämä INSERT INTO -funktion toinen muoto ottaa arvot suoraan käyttämällä SELECT-komentoa. Avainsanaa VALUES ei saa olla tässä, koska arvoja ei anneta erikseen.

Tietojen päivitys

Datan päivittäminen tarkoittaa olemassa olevan rivin sarakkeen arvon muuttamista. Tämä tehdään UPDATE-lausekkeella, joka ottaa syötteeksi taulukon nimen, sarakkeen nimen ja uuden arvon ja päivittää tiedot.

Syntaksi:

BEGIN
UPDATE <table_name>
SET <column1>=<value1>,<column2>=<value2>,<column_n>=<value_n>
WHERE <condition that uniquely identifies the record that needs to be updated>;
END;

Yllä oleva syntaksi näyttää UPDATE-lausekkeen. Avainsana SET käskee PL/SQL-moottoria päivittämään sarakkeen annetulla arvolla. WHERE-lauseke on valinnainen; jos sitä ei anneta, mainitun sarakkeen arvo päivitetään koko taulukkoon.

Tietojen poisto

Tiedon poistaminen tarkoittaa yhden kokonaisen tietueen poistamista tietokantataulukosta. Tähän tarkoitukseen käytetään DELETE-komentoa.

Syntaksi:

BEGIN
DELETE FROM <table_name>
WHERE <condition that uniquely identifies the record that needs to be deleted>;
END;

Yllä oleva syntaksi esittää DELETE-komennon. Avainsana FROM on valinnainen, ja komento toimii samalla tavalla FROM-lausekkeen kanssa tai ilman sitä. WHERE-lauseke on valinnainen; jos sitä ei anneta, koko taulukko tyhjennetään.

Tietojen valinta

Datan projektio eli nouto tarkoittaa tarvittavien tietojen hakemista tietokantataulukosta. Tämä saavutetaan SELECT-komennolla yhdessä INTO-lauseen kanssa. SELECT-komento noutaa arvot tietokannasta, ja INTO-lauseke määrittää nämä arvot PL/SQL-lohkon paikallisiin muuttujiin.

Seuraavat seikat on otettava huomioon käytettäessä SELECT-lauseketta INTO-lausekkeen kanssa:

  • SELECT-lauseen tulisi palauttaa vain yksi tietue INTO-lausetta käytettäessä, koska yksi muuttuja voi sisältää vain yhden arvon. Jos SELECT palauttaa useamman kuin yhden rivin, TOO_MANY_ROWS poikkeus on nostettu.
  • SELECT-lauseke määrittää arvon INTO-lausekkeen muuttujalle, joten se tarvitsee vähintään yhden tietueen arvon täyttämiseksi. Jos se ei löydä yhtään tietuetta, syntyy NO_DATA_FOUND-poikkeus.
  • SELECT-lauseen sarakkeiden lukumäärän ja niiden tietotyyppien tulee vastata INTO-lauseen muuttujien lukumäärää ja niiden tietotyyppiä.
  • Arvot haetaan ja täytetään samassa järjestyksessä kuin lausunnossa mainitaan.
  • WHERE-lauseke on valinnainen ja sen avulla voit asettaa enemmän rajoituksia noudettaville tietueille.
  • SELECT-lauseketta voidaan käyttää muiden DML-lausekkeiden WHERE-ehdossa ehtojen arvojen määrittämiseen.
  • INSERT-, UPDATE- tai DELETE-lausekkeiden sisällä käytetyn SELECT-lauseen ei tulisi sisältää INTO-lausetta, koska se ei täytä mitään muuttujaa näissä tapauksissa.

Syntaksi:

BEGIN
SELECT <column1>,...,<column_n> INTO <variable1>,...,<variable_n>
FROM <table_name>
WHERE <condition to fetch the required records>;
END;

Yllä oleva syntaksi esittää SELECT-INTO-komennon. Avainsana FROM on pakollinen ja määrittää taulukon, josta tiedot haetaan. WHERE-lauseke on valinnainen; jos sitä ei anneta, tiedot haetaan koko taulukosta.

Esimerkki 1: Tässä esimerkissä näemme, miten DML-operaatioita suoritetaan PL/SQL:ssä. Lisäämme alla olevat neljä tietuetta emp-taulukkoon.

EMP_NAME EMP_NO PALKKA MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
YYY 1002 10000 BBB
ZZZ 1003 7500 BBB

Sitten päivitämme palkan 'XXX' arvoon 15 000, poistamme työntekijätietueen 'ZZZ' ja lopuksi projisoimme työntekijän 'XXX' tiedot.

Alla oleva kuvakaappaus näyttää tässä esimerkissä käytetyn koko PL/SQL-lohkon.

Oracle PL/SQL-lohko suorittaa lisäys-, päivitys-, poisto- ja valintakäskyjä emp-taulukossa

DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER;
l_manager VARCHAR2(250);
BEGIN
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('BBB',1000,25000,'AAA');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('ZZZ',1003,7500,'BBB');
COMMIT;
Dbms_output.put_line('Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line('Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT;
Dbms_output.put_line('Values Deleted');
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';
Dbms_output.put_line('Employee Detail');
Dbms_output.put_line('Employee Name:'||l_emp_name);
Dbms_output.put_line('Employee Number:'||l_emp_no);
Dbms_output.put_line('Employee Salary:'||l_salary);
Dbms_output.put_line('Employee Manager Name:'||l_manager);
END;
/

lähtö:

Values Inserted
Values Updated
Values Deleted
Employee Detail
Employee Name:XXX
Employee Number:1001
Employee Salary:15000
Employee Manager Name:BBB

Code Selitys:

  • Code rivi 2–5: Muuttujien deklarointi.
  • Code rivi 7–14: Tietueiden lisääminen emp-taulukkoon.
  • Code rivi 15: Lisäystapahtumien vahvistaminen.
  • Code rivi 17–19: Työntekijän 'XXX' palkkaa päivitetään 15 000:een.
  • Code rivi 20: Päivitystapahtuman vahvistaminen.
  • Code rivi 22: Poistetaan 'ZZZ'-tietue.
  • Code rivi 23: Poistotapahtuman vahvistaminen.
  • Code rivi 25: Valitsemalla tietueen 'XXX' ja täyttämällä muuttujat l_emp_name, l_emp_no, l_salary ja l_manager.
  • Code rivi 26–30: Näyttää noudetut tietuearvot.

UKK

Ei. Staattinen PL/SQL ei voi suorittaa DDL:ää suoraan. Muodosta lauseke merkkijonona ja suorita se komennolla SUORITA HETI, joka käsittelee CREATE-, ALTER- ja DROP-käskyjä suorituksen aikana.

SELECT INTO -funktion on palautettava täsmälleen yksi rivi. Useiden rivien lukemiseksi käytä eksplisiittistä kohdistin FETCH-silmukalla tai BULK COLLECT INTO -kokoelmaan.

DELETE on DML:ää käyttävä operaatio: se poistaa valitut rivit WHERE-lausekkeen avulla ja voidaan peruuttaa. TRUNCATE on DDL:ää käyttävä operaatio: se tyhjentää jokaisen rivin välittömästi, vahvistaa muutokset automaattisesti eikä sitä voi perua.

Kyllä. LISÄÄ-, PÄIVITYS- ja POISTA-muutokset pysyvät istunnossasi, kunnes COMMITPL/SQL ei vahvista muutoksia automaattisesti. Käytä COMMIT-komentoa tallentaaksesi tai ROLLBACK-komentoa hylkäksesi.

MERGE suorittaa ylätunnisteen lisäämisen eli päivittää liitosehtoa vastaavat rivit ja lisää ne, jotka eivät vastaa ehtoa, yhdellä lausekkeella erillisten UPDATE- ja INSERT-komentojen sijaan.

RETURNING INTO tallentaa sarakearvot riveiltä, ​​joihin INSERT-, UPDATE- tai DELETE-toiminto on juuri vaikuttanut, ja tallentaa ne muuttujiin, välttäen ylimääräistä SELECT-käskyä muuttuneiden tietojen lukemiseksi.

Kyllä. GitHub Copilot luonnostelee INSERT-, UPDATE-, DELETE- ja SELECT INTO -lohkot lyhyestä kommentista, ehdottaa sidontamuuttujia ja täydentää sarakeluetteloita, vaikka logiikka kannattaakin ensin tarkistaa.

Tekoälyavustajat skannaavat DML:ää puuttuvien WHERE-lauseiden, puuttuvien COMMIT-lausekkeiden ja vaarallisten ketjutusten varalta ja ehdottavat sitten korjauksia sekä selittävät virheet. Tämä koneoppimiseen perustuva tarkistus havaitsee riskialttiit muutokset ennen kuin ne pääsevät tuotantoon.

Tiivistä tämä viesti seuraavasti: