Jak používat příkaz PL SQL Vložit, aktualizovat, odstranit a vybrat
how use pl sql insert
Tento kurz vysvětluje, jak používat příkazy PL SQL INSERT, UPDATE, DELETE a SELECT s příklady programování:
V tomto článku budeme pokračovat s Série PL / SQL . V Typy dat PL / SQL, konstanty a proměnné tutoriálu jsme se podrobně seznámili s datovými typy PL SQL, proměnnými, konstantami a literály pomocí příkladů programování. Zde probereme příkazy PL SQL DML a jejich fungování.
Prozkoumáme příkazy PL SQL INSERT, DELETE, UPDATE a SELECT pro manipulaci s daty v tabulkách PL / SQL.
Začněme rozumět implementaci příkazů INSERT, DELETE, UPDATE a SELECT na stolech. Souhrnně se tomu říká prohlášení Data Manipulation Language (DML).
Příkaz PL SQL INSERT
Příkaz INSERT INTO se používá k vložení dat do tabulky. Říká se tomu a Jazyk pro manipulaci s daty . Jako vstupy používá název tabulky a názvy sloupců a hodnoty a provádí vkládání hodnot do tabulky.
Syntax:
INSERT INTO <
> VALUES (<>, <>, …..);
Název tabulky a hodnoty, které se mají vložit, jsou povinnou součástí příkazu PL SQL INSERT. Volitelně můžeme také uvést názvy sloupců, kam mají být hodnoty vloženy.
Vytvořili jsme tabulku ZAMĚSTNANCI pomocí níže uvedeného příkazu SQL:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Implementace kódu pomocí PL SQL INSERT:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
Výstup z výše uvedeného kódu by měl být:
SELECT * from EMPLOYEE;
VLOŽTE DO VÝBĚRU
VLOŽTE DO VŠECH SLOUPCŮ
INSERT INTO SELECT se používá k vložení řádků do tabulky působením na výsledek příkazu SELECT. Může být nutné získat řádek z tabulky a vložit jej do jiné tabulky.
Syntax:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
Příkaz INSERT INTO SELECT vyžaduje, aby byly datové typy zdrojové a cílové tabulky stejné. V případě, že požadujeme zkopírování celých řádků zdrojové tabulky do cílové tabulky, můžeme podmínku WHERE vynechat.
S pomocí níže uvedeného příkazu SQL jsme vytvořili další tabulku s názvem MANAGER:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Zvažme znovu tabulku ZAMĚSTNANCI.
Implementace kódu pomocí INSERT INTO SELECT .:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Výstup výše uvedeného kódu:
SELECT * from MANAGER;
VLOŽTE ČÁSTEČNÉ ÚDAJE
Můžeme také vložit dílčí data do jiné tabulky. Nejprve vytvořme MANAGERDETAIL tabulka z tabulky ZAMĚSTNANCI s níže uvedeným dotazem.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Tady, KDE 1 = 0 odkazuje na první sloupec tabulky ZAMĚSTNANEC, kterým je CODE.
Dále použijeme příkaz INSERT INTO SELECT k duplikování dat z tabulky ZAMĚSTNANEC do tabulky MANAGERDETAIL.
Implementace kódu pomocí INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Výstup výše uvedeného kódu:
SELECT * from MANAGERDETAIL;
Ve výše uvedeném příkladu jsme nezmiňovali názvy sloupců v příkazu INSERT, protože výstup příkazu SELECT má hodnoty, které odpovídají sloupcům tabulky MANAGERDETAIL. Do klauzule WHERE jsme také zahrnuli podmínku.
VLOŽTE ČÁSTEČNÉ ÚDAJE A LITERÁL
Můžeme vložit částečná data a doslovnou hodnotu do tabulky.
Nejprve vytvořme tabulku MANAGERCONTACT s níže uvedeným dotazem:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Nyní využijme znovu tabulku ZAMĚSTNANCI a pokusme se duplikovat data z tabulky ZAMĚSTNANCI do tabulky MANAGERCONTACT.
Implementace kódu pomocí INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
Výstup výše uvedeného kódu:
SELECT * from MANAGERCONTACT;
Ve výše uvedeném příkladu jsme získali hodnoty z tabulky ZAMĚSTNANCI a také zahrnovali 0 literál v příkazu INSERT, který upravil hodnoty sloupce VĚK na 0 v tabulce MANAGERCONTACT.
VLOŽTE VŠE
Příkaz INSERT ALL se používá k přidání více než jednoho řádku do jedné tabulky nebo více tabulek. Nazývá se také příkaz pro více tabulek a má dva typy podmíněné a bezpodmínečné.
# 1) PODMÍNKY VLOŽTE VŠE
K vložení více než jednoho řádku do tabulky se používá příkaz INSERT ALL.
Syntax:
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)
Zde jsou názvy sloupců c1, c2 a c3 a v1, v2 a v3 jsou hodnoty, které mají být vloženy. V případě, že místo poddotazu musíme použít doslovnou hodnotu; musíme použít níže uvedený dotaz:
SELECT * FROM dual;
Vytvořili jsme tabulku SOCCERPLAYERS pomocí níže uvedeného příkazu SQL:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Implementace kódu pomocí 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;
Výstup výše uvedeného kódu:
SELECT * from SOCCERPLAYERS;
Ve výše uvedeném příkladu byly do tabulky s příkazem INSERT ALL vloženy tři řádky najednou.
Chcete-li vložit více než jeden řádek do více tabulek, použije se příkaz INSERT ALL.
Syntax:
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;
Zde jsou názvy sloupců c1, c2 a c3 a v1, v2 a v3 jsou hodnoty, které mají být vloženy. Název_tabulky1, název_tabulky2 a název_tabulky3 jsou názvy tabulek.
# 2) PODMÍNĚNÉ VLOŽTE VŠE
Příkaz INSERT ALL může v závislosti na určitých podmínkách vložit do tabulek více než jeden řádek.
Syntax:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
Klíčové slovo ALL se používá k určení, že budou provedeny všechny podmínky v klauzuli WHERE. Pokud je podmínka splněna, spustí se odpovídající klauzule INTO.
Pokud se použije klíčové slovo PRVNÍ, pak pro každý jednotlivý řádek získaný z poddotazu provede Oracle kritéria v klauzuli KDY od shora dolů. Jakmile je podmínka splněna, spustí se odpovídající klauzule INTO a přejde na jinou klauzuli WHEN pro daný řádek.
Vytvořili jsme tabulky VEHICLE, CARS, SMALLCARS a LARGECARS pomocí níže uvedených příkazů SQL:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Vložte následující hodnoty do tabulky VOZIDLA:
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;
Implementace kódu pomocí 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;
Ve výše uvedeném příkladu byl jeden řádek vložen do každé ze tří tabulek na základě hodnoty CARDID.
S příkazem INSERT ALL existují určitá omezení:
Používá se pouze pro vkládání hodnot do tabulek. Nepracuje s pohledy ani s materializovanými pohledy.
Není schopen vkládat hodnoty do vzdálených tabulek.
Počet sloupců, které dokáže zpracovat příkaz INSERT INTO, by neměl být větší než 999.
Výraz příkazu kolekce tabulky nelze použít v příkazu INSERT pro více tabulek.
Poddotaz INSERT pro více tabulek není schopen použít sekvenci.
Příkaz PL SQL Update
Příkaz UPDATE se používá k úpravě hodnot v tabulce. Také se tomu říká a Jazyk pro manipulaci s daty . Jako vstupy používá názvy tabulky, sloupce a hodnot a provádí úpravy hodnot v tabulce.
Syntax:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
Klíčové slovo SET se používá ke změně hodnoty sloupce s novou hodnotou. Volitelně se použije klíčové slovo WHERE, pokud je vynecháno, pak bude hodnota zadaného sloupce v úplné tabulce upravena.
AKTUALIZUJTE JEDINÝ SLOUPEC ŘADY
Zvažme znovu tabulku ZAMĚSTNANCI.
Implementace kódu s UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
Výstup výše uvedeného kódu:
SELECT * from EMPLOYEE;
AKTUALIZUJTE VÍCE Sloupců řady
Zvažme znovu tabulku ZAMĚSTNANCI.
Implementace kódu s UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
Výstup výše uvedeného kódu:
SELECT * from EMPLOYEE;
AKTUALIZACE VÍCE ŘAD
Zvažme znovu tabulku ZAMĚSTNANCI.
Implementace kódu s UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Výstup výše uvedeného kódu:
SELECT * from EMPLOYEE;
Ve výše uvedeném příkladu se VĚK všech zaměstnanců zvýšil o 1.
Příkaz PL SQL Delete
Příkaz DELETE se používá k odebrání celého záznamu z tabulky. Také se tomu říká a Jazyk pro manipulaci s daty.
Syntax:
DELETE FROM <
> WHERE <>;
Klíčové slovo FROM není povinné a příkaz DELETE má přinést stejný výsledek, pokud je v dotazu přidána nebo nepřidána FROM. Volitelně se použije klíčové slovo WHERE, pokud je vynecháno, bude odstraněna celá tabulka.
ODSTRANIT JEDNOU ŘADU Z TABULKY
Zvažme znovu tabulku ZAMĚSTNANCI.
Implementace kódu pomocí DELETE:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Výstup výše uvedeného kódu:
SELECT * from EMPLOYEE;
ODSTRANIT VÍCE ŘÁDKŮ Z TABULKY
Zvažme znovu tabulku MANAGERDETAIL.
Implementace kódu pomocí DELETE:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Výstup výše uvedeného kódu:
SELECT * from MANAGERDETAIL;
VYMAZAT CELÉ ŘÁDKY Z TABULKY
Zvažme znovu tabulku VOZIDLO.
Implementace kódu pomocí DELETE:
BEGIN DELETE FROM VEHICLE; END;
Výstup výše uvedeného kódu:
SELECT * from VEHICLE;
PL SQL Select Command
Příkaz SELECT se používá k načtení dat z databáze. Příkaz SELECT INTO se používá k načtení hodnot z databáze a jejich uložení do lokálních proměnných zavedených PL / SQL.
Pokud použijeme pouze příkaz SELECT, vrátí jeden záznam. V případě, že příkaz SELECT načítá více hodnot, TOO_MANY_ROWS výjimka je vyvolána PL / SQL. Při použití příkazu SELECT INTO přiřadíme proměnné alespoň jednu hodnotu. Pokud se však z databáze nenačte žádný záznam, NENALEZENA ŽÁDNÁ DATA je vyvolána výjimka.
Počet sloupců a jejich typ by se měl rovnat počtu proměnných a jejich typu v klíčovém slově INTO. Hodnoty se získávají z databáze ve stejném pořadí, jak je definováno v příkazu SELECT.
Klíčové slovo WHERE uvnitř příkazu SELECT je volitelné a umožňuje nám získat záznamy, které splňují určitá kritéria. Je důležité si uvědomit, že dotaz SELECT s příkazy DELETE, UPDATE a INSERT nemají klauzuli INTO.
Syntax:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
NAČÍST DATA ZE VŠECH SLOUPCŮ TABULKY
Zvažme znovu tabulku ZAMĚSTNANCI.
Implementace kódu pomocí SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Výstup výše uvedeného kódu:
Implementace kódu s příkazem SELECT vyvolávajícím výjimku:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Výstup výše uvedeného kódu:
Výjimka bez nalezených dat je vyvolána, protože příkazu SELECT se nepodařilo získat řádek odpovídající zadané podmínce, protože v databázi není žádný zaměstnanec s KÓDEM 2.
NAČÍST DATA ZE SLOUPCE TABULKY
Zvažme znovu tabulku ZAMĚSTNANCI.
BEGIN SELECT CODE FROM EMPLOYEE; END;
Výstup výše uvedeného kódu:
NAČÍTÁNÍ ÚDAJŮ Z VÍCENÝCH SLOUPCŮ TABULKY
Zvažme znovu tabulku ZAMĚSTNANCI.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Výstup výše uvedeného kódu:
Ve výše uvedeném příkladu byly do příkazu SELECT přidány dva sloupce CODE a NAME.
Často kladené otázky a odpovědi
Otázka č. 1) Co je INSERT, UPDATE a DELETE v SQL?
Odpovědět: INSERT, UPDATE a DELETE jsou příkazy v SQL, které pomáhají provozovat a aktualizovat data. Příkaz INSERT vloží řádky do tabulky. Příkaz DELETE odstraní řádky z tabulky a příkaz UPDATE aktualizuje hodnoty v řádcích tabulky.
Otázka č. 2) Můžeme INSERT, UPDATE a DELETE v pohledu v SQL?
Odpovědět: Ano, můžeme INSERT, UPDATE a DELETE v pohledu v SQL. Pokud se pohled spojil mezi tabulkami, můžeme provádět pouze akce INSERT a UPDATE, ale nemůžeme provést operaci DELETE. Příkaz DROP se používá k odstranění pohledu.
Otázka č. 3) Je INSERT DDL nebo DML?
Odpovědět: INSERT je jazyk DML nebo Data Manipulation Language). Mezi další příkazy DML patří UPDATE, DELETE atd. Příkaz DDL je schopen vytvářet tabulky, schémata a databáze.
Otázka č. 4) Můžeme použít dotaz JOIN IN delete?
Odpovědět: Ano, k odstranění řádků z tabulky můžeme použít příkaz INNER JOIN v příkazu DELETE.
Otázka č. 5) Jaký je rozdíl mezi příkazem oříznout a odstranit?
Odpovědět: TRUNCATE je příkaz DDL, zatímco DELETE je DML. Příkaz TRUNCATE je schopen odebrat celou tabulku. Nezachovává integritu tabulky. Příkaz DELETE může odstranit pouze konkrétní data v tabulce. Může také zahrnovat podmínky pro odstranění.
Otázka č. 6) Co jsou DML, DCL a DDL?
Odpovědět: Příkazy SQL jsou typů - DML, DCL a DML.
Data Definition Language nebo DDL obsahuje příkazy jako ALTER, DROP, CREATE, RENAME, TRUNCATE a COMMENT. Jazyk pro manipulaci s daty nebo DML obsahuje příkazy jako VLOŽIT, ODSTRANIT, Sloučit, UPDATE, VOLAT, ZAMKNOUT TABULKU a VYSVĚTLENÍ PLÁN.
Jazyk Data Control Language nebo DCL obsahuje příkazy jako GRANT a REVOKE.
Otázka č. 7) Je zkrácení rychlejší než pokles?
Odpovědět: Ano, operace TRUNCATE je rychlejší než DROP. Příkaz TRUNCATE odstraní pouze data z tabulky. Příkaz DROP vymaže strukturu tabulky a data z tabulky.
Závěr
V tomto tutoriálu jsme podrobně diskutovali některé základní pojmy příkazů PL SQL, které jsou nezbytné pro rozvoj znalostí o nich. Pokryli jsme následující témata uvedená níže: