Kako se koristi izjava PL SQL umetanje, ažuriranje, brisanje i odabir
how use pl sql insert
Ovaj vodič objašnjava kako koristiti PL SQL naredbe INSERT, UPDATE, DELETE i SELECT s primjerima programiranja:
U ovom ćemo članku nastaviti s PL / SQL serija . U PL / SQL tipovi podataka, konstante i varijable udžbenik, detaljno smo naučili o PL SQL vrstama podataka, varijablama, konstantama i literalima uz pomoć primjera programiranja. Ovdje ćemo razgovarati o PL SQL DML izjavama i o njihovom radu.
Istražit ćemo naredbe PL SQL INSERT, DELETE, UPDATE i SELECT za manipulaciju podacima u PL / SQL tablicama.
Počnimo razumjeti implementaciju naredbi INSERT, DELETE, UPDATE i SELECT na tablicama. Oni se zajedno nazivaju izrazima za upravljanje podacima (DML).
Naredba PL SQL INSERT
Izraz INSERT INTO koristi se za umetanje podataka u tablicu. Zove se a Jezik za manipulaciju podacima . Kao ulaz koristi naziv tablice i nazive i vrijednosti stupaca te vrši umetanje vrijednosti u tablicu.
Sintaksa:
INSERT INTO <
> VALUES (<>, <>, …..);
Naziv tablice i vrijednosti koje treba umetnuti obvezni su dio izjave PL SQL INSERT. Po želji možemo spomenuti i nazive stupaca u koje se trebaju umetnuti vrijednosti.
Stvorili smo tablicu EMPLOYEE uz pomoć dolje navedenog SQL izraza:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Implementacija koda s PL SQL INSERT:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
Izlaz gornjeg koda trebao bi biti:
SELECT * from EMPLOYEE;
INSERT IN TO SELECT
Umetnite u sve stupce
INSERT INTO SELECT koristi se za umetanje redaka u tablicu djelujući na rezultat izraza SELECT. Možda će biti potrebno dobiti redak iz tablice i umetnuti ga u drugu tablicu.
Sintaksa:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
Naredba INSERT INTO SELECT treba da budu iste vrste podataka izvora i ciljne tablice. U slučaju da trebamo kopirati cijele retke izvorne tablice u ciljnu tablicu, možemo izostaviti uvjet WHERE.
Pomoću dolje navedenog SQL izraza stvorili smo još jednu tablicu pod nazivom MANAGER:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Razmotrimo ponovno tablicu ZAPOSLENI.
Implementacija koda s INSERT INTO SELECT .:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Izlaz gornjeg koda:
SELECT * from MANAGER;
UMETNITE DIJELIM PODATKE
Također možemo umetnuti djelomične podatke u drugu tablicu. Prvo stvorimo DETALJI MENADŽERA tablica iz tablice ZAPOSLENI sa upitom u nastavku.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Ovdje, GDJE 1 = 0 odnosi se na prvi stupac tablice ZAPOSLENI koji je KOD.
Dalje ćemo upotrijebiti izraz INSERT INTO SELECT za kopiranje podataka iz tablice EMPLOYEE u tablicu MANAGERDETAIL.
Implementacija koda s INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Izlaz gornjeg koda:
SELECT * from MANAGERDETAIL;
U gornjem primjeru nismo spomenuli imena stupaca u naredbi INSERT, jer izlaz naredbe SELECT ima vrijednosti koje se podudaraju sa stupcima tablice MANAGERDETAIL. Također, uz klauzulu WHERE uključili smo uvjet.
UMETNITE DIJELIM PODATKE I LITERALNE
U tablicu možemo umetnuti djelomične podatke i doslovnu vrijednost.
Prvo napravimo tablicu MANAGERCONTACT sa upitom u nastavku:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Sada ćemo opet uzeti pomoć tablice ZAPOSLENI i pokušati duplicirati podatke iz tablice ZAPOSLENI u tablicu MANAGERCONTACT.
Implementacija koda s INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
Izlaz gornjeg koda:
SELECT * from MANAGERCONTACT;
U gornjem primjeru dobili smo vrijednosti iz tablice EMPLOYEE i također smo uključili 0 literala u izraz INSERT koji je modificirao vrijednosti stupca AGE na 0 u tablici MANAGERCONTACT.
UMESTI SVE
Izraz INSERT ALL koristi se za dodavanje više redaka u jednu tablicu ili više tablica. Također se naziva naredba s više tablica i dvije je vrste uvjetna i bezuvjetna.
# 1) BEZUVJETNI UMETAK SVE
Za umetanje više od jednog retka u tablicu koristi se izraz INSERT ALL.
Sintaksa:
INSERT ALL INTO <
> (c1, c2, c3) VALUES (v1, v2, v3) INTO <
> (c1, c2, c3) VALUES (v4, v5, v6) INTO <
> (c1, c2, c3) VALUES (v7, v8, v9)
Ovdje su c1, c2 i c3 imena stupaca, a v1, v2 i v3 su vrijednosti koje treba umetnuti. U slučaju, umjesto podupita moramo koristiti doslovnu vrijednost; moramo koristiti upit u nastavku:
SELECT * FROM dual;
Stvorili smo tablicu SOCCERPLAYERS uz pomoć dolje navedenog SQL izraza:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Implementacija koda s INSERT ALL:
BEGIN INSERT ALL INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (4, 'DANIEL', 'USA') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (8, 'DANNY', 'ITALY') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (7, 'FRANK', 'FRANCE') SELECT 1 FROM dual; END;
Izlaz gornjeg koda:
SELECT * from SOCCERPLAYERS;
U gornjem primjeru u tablicu su umetnuta tri reda odjednom naredbom INSERT ALL.
Za umetanje više redaka u više tablica koristi se izraz INSERT ALL.
Sintaksa:
INSERT ALL INTO <> (c1, c2, c3) VALUES (v1, v2, v3) INTO <> (c1, c2, c3) VALUES (v4, v5, v6) INTO <> (c1, c2, c3) VALUES (v7, v8, v9) Subquery;
Ovdje su c1, c2 i c3 imena stupaca, a v1, v2 i v3 su vrijednosti koje treba umetnuti. Ime_tablice1 ,_ime_tabele2 i_ime_tablice3 su imena tablice.
# 2) UVJETNO UMETNI SVE
Izraz INSERT ALL može umetnuti više tablica u tablice, ovisno o nekim uvjetima.
Sintaksa:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
Ključna riječ ALL koristi se za određivanje izvršenja svih uvjeta iz klauzule WHERE. Ako je uvjet zadovoljen, pokrenula bi se odgovarajuća INTO klauzula.
Ako se koristi ključna riječ FIRST, tada za svaki pojedini redak dobiven iz podupita Oracle izvršava kriterije u klauzuli WHEN od vrha do dna. Jednom kada je uvjet zadovoljen, odgovarajuća klauzula INTO pokrenula bi se i preskočila na drugu klauzulu WHEN za taj redak.
Stvorili smo tablice VOZILA, AUTOMOBILA, SMALLCARS-a i LARGECARS-a uz pomoć SQL naredbi danih u nastavku:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
U tablicu VOZILA umetnite dolje navedene vrijednosti:
INSERT INTO VEHICLE VALUES (1, 'AUDI', 'RED'); INSERT INTO VEHICLE VALUES (4, 'BMW', 'WHITE'); INSERT INTO VEHICLE VALUES (7, 'KIA', 'GREEN'); CREATE TABLE CARS ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) ); CREATE TABLE SMALLCARS AS SELECT * FROM CARS; CREATE TABLE LARGECARS AS SELECT * FROM CARS;
Implementacija koda s INSERT ALL.
BEGIN INSERT ALL WHEN CARID = 1 THEN INTO CARS WHEN CARID = 4 THEN INTO SMALLCARS WHEN CARID = 7 THEN INTO LARGECARS SELECT CARID, NAME, COLOR FROM VEHICLE; END;
Izlaz gornjeg koda:
SELECT * from CARS;
SELECT * from SMALLCARS;
SELECT * from LARGECARS;
U gornjem primjeru, jedan redak umetnut je u svaku od tri tablice na temelju vrijednosti CARDID.
Postoje određena ograničenja s izjavom INSERT ALL:
Koristi se samo za umetanje vrijednosti u tablice. Ne radi s pogledima ili materijaliziranim pogledima.
Nije sposoban umetati vrijednosti u udaljene tablice.
Broj stupaca koje naredba INSERT INTO može obraditi ne smije biti veći od 999.
Izraz kolekcije tablica ne može se koristiti u naredbi INSERT za više tablica.
Podupit INSERT s više tablica ne može koristiti slijed.
PL SQL naredba za ažuriranje
Izraz UPDATE koristi se za izmjenu vrijednosti u tablici. Također se naziva a Jezik za manipulaciju podacima . Kao ulaze koristi imena tablice, stupca i vrijednosti i vrši izmjenu vrijednosti na tablici.
Sintaksa:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
Ključna riječ SET koristi se za promjenu vrijednosti stupca novom vrijednošću. Po želji se koristi ključna riječ WHERE, ako je izostavljena, tada će se vrijednost navedenog stupca u cjelovitoj tablici izmijeniti.
AŽURIRAJ JEDNOKOLICU REDA
Razmotrimo ponovno tablicu ZAPOSLENI.
Implementacija koda s UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
Izlaz gornjeg koda:
SELECT * from EMPLOYEE;
AŽURIRAJ VIŠE STOLPACA REDA
Razmotrimo ponovno tablicu ZAPOSLENI.
Implementacija koda s UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
Izlaz gornjeg koda:
SELECT * from EMPLOYEE;
AŽURIRAJ VIŠE REDOVA
Razmotrimo ponovno tablicu ZAPOSLENI.
Implementacija koda s UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Izlaz gornjeg koda:
SELECT * from EMPLOYEE;
U gornjem primjeru STAROST svih zaposlenih povećala se za 1.
PL SQL naredba za brisanje
Izraz DELETE koristi se za uklanjanje cijelog zapisa iz tablice. Također se naziva a Jezik za manipulaciju podacima.
Sintaksa:
DELETE FROM <
> WHERE <>;
Ključna riječ FROM nije obavezna i naredba DELETE će dati isti rezultat ako je FROM dodan ili nije dodan u upit. Po želji se koristi ključna riječ WHERE, ako je izostavljena, tada će se izbrisati cijela tablica.
IZBRIŠI JEDNOLEDNI RED SA STOLA
Razmotrimo ponovno tablicu ZAPOSLENI.
Implementacija koda s DELETE:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Izlaz gornjeg koda:
SELECT * from EMPLOYEE;
Brisanje višestrukih redova sa stola
Razmotrimo ponovno tablicu MANAGERDETAIL.
Implementacija koda s DELETE:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Izlaz gornjeg koda:
SELECT * from MANAGERDETAIL;
Brisanje cjelokupnih redova sa stola
Razmotrimo ponovno tablicu VOZILA.
Implementacija koda s DELETE:
BEGIN DELETE FROM VEHICLE; END;
Izlaz gornjeg koda:
SELECT * from VEHICLE;
PL SQL naredba za odabir
Izraz SELECT koristi se za dohvaćanje podataka iz baze podataka. Izraz SELECT INTO koristi se za dohvaćanje vrijednosti iz baze podataka i njihovo spremanje u lokalne varijable koje uvodi PL / SQL.
Ako koristimo samo SELECT naredbu, ona vraća jedan zapis. U slučaju da SELECT naredba dohvaća više vrijednosti, TOO_MANY_ROWS iznimku baca PL / SQL. Dok koristimo naredbu SELECT INTO, varijabli dodijeljujemo barem jednu vrijednost. Međutim, ako se iz baze podataka ne preuzme nijedan zapis, NE_PODATAK_NAĐEN izuzetak se baca.
Broj stupaca i njihov tip trebao bi biti jednak broju varijabli i njihovom tipu u ključnoj riječi INTO. Vrijednosti se dobivaju iz baze podataka u istom slijedu kao što je definirano u naredbi SELECT.
Ključna riječ WHERE unutar naredbe SELECT nije obavezna i omogućuje nam dobivanje zapisa koji udovoljavaju određenim kriterijima. Važno je napomenuti da upit SELECT s naredbama DELETE, UPDATE i INSERT nema klauzulu INTO.
Sintaksa:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
PREUZIMANJE PODATAKA IZ SVIH STOLPACA STOLA
Razmotrimo ponovno tablicu ZAPOSLENI.
Implementacija koda s SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Izlaz gornjeg koda:
Implementacija koda s SELECT naredbom koja donosi izuzetak:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Izlaz gornjeg koda:
Iznimka bez pronađenih podataka baca se jer izraz SELECT nije uspio dobiti redak koji se podudara s navedenim uvjetom jer u bazi podataka nema zaposlenika s CODE 2.
PREUZMITE PODATKE IZ KOLONE STOLA
Razmotrimo ponovno tablicu ZAPOSLENI.
BEGIN SELECT CODE FROM EMPLOYEE; END;
Izlaz gornjeg koda:
PREUZMITE PODATKE IZ VIŠE STOLPACA STOLA
Razmotrimo ponovno tablicu ZAPOSLENI.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Izlaz gornjeg koda:
U gornjem primjeru u izrazu SELECT dodana su dva stupca CODE i NAME.
Često postavljana pitanja i odgovori
P # 1) Što je INSERT, UPDATE i DELETE u SQL-u?
Odgovor: INSERT, UPDATE i DELETE naredbe su u SQL-u koje pomažu u radu i ažuriranju podataka. Izraz INSERT ubacuje retke u tablicu. Izraz DELETE briše retke iz tablice, a izraz UPDATE ažurira vrijednosti u redovima tablice.
P # 2) Možemo li umetnuti, ažurirati i izbrisati prikaz u SQL-u?
Odgovor: Da, možemo umetnuti, ažurirati i izbrisati u pogledu u SQL-u. Ako se prikaz spojio između tablica, možemo izvršiti samo radnje INSERT i UPDATE, ali ne možemo izvršiti operaciju DELETE. Izjava DROP koristi se za brisanje pogleda.
P # 3) Je li INSERT DDL ili DML?
Odgovor: INSERT je DML ili jezik za manipulaciju podacima). Ostale DML izjave uključuju UPDATE, DELETE i tako dalje. DDL izraz je sposoban stvoriti tablice, shemu i bazu podataka.
P # 4) Možemo li koristiti JOIN IN upit za brisanje?
Odgovor: Da, možemo koristiti naredbu INNER JOIN u naredbi DELETE za brisanje redaka iz tablice.
P # 5) Koja je razlika između naredbe za skraćivanje i brisanje?
Odgovor: TRUNCATE je DDL izjava, dok je DELETE DML. Naredba TRUNCATE može ukloniti kompletnu tablicu. Ne zadržava cjelovitost tablice. Izraz DELETE može izbrisati samo određene podatke iz tablice. Također može sadržavati uvjete za brisanje.
P # 6) Što su DML, DCL i DDL?
Odgovor: SQL izrazi su vrsta - DML, DCL i DML.
Jezik definicije podataka ili DDL uključuje naredbe poput ALTER, DROP, CREATE, RENAME, TRUNCATE i COMMENT. Jezik za manipulaciju podacima ili DML uključuje naredbe poput INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE i EXPLAIN PLAN.
Jezik za kontrolu podataka ili DCL uključuje naredbe poput GRANT i REVOKE.
P # 7) Je li krnje brže od pada?
Odgovor: Da, TRUNCATE rad je brži od DROP-a. Naredba TRUNCATE samo briše podatke iz tablice. Naredba DROP briše strukturu tablice i podatke iz tablice.
Zaključak
U ovom smo tutorijalu detaljno razmotrili neke osnovne koncepte PL SQL naredbi koji su ključni za razvijanje znanja o njemu. Obradili smo sljedeće teme navedene u nastavku: