Hur man använder PL SQL Infoga, uppdatera, ta bort och välj uttalande
how use pl sql insert
Denna handledning förklarar hur man använder kommandona PL SQL INSERT, UPDATE, DELETE och SELECT med programmeringsexempel:
I den här artikeln fortsätter vi med PL / SQL-serien . I PL / SQL datatyper, konstanter och variabler tutorial har vi lärt oss om PL SQL datatyper, variabler, konstanter och bokstäver i detalj med hjälp av programmeringsexempel. Här kommer vi att diskutera PL SQL DML-uttalanden och hur de fungerar.
Vi ska utforska kommandona PL SQL INSERT, DELETE, UPDATE och SELECT för att manipulera data i PL / SQL-tabeller.
Låt oss börja förstå INSTÄLLNINGAR, RADERA, UPPDATERA och VÄLJ kommandotimplementering på tabeller. Sammantaget kallas dessa DML-uttalanden (Data Manipulation Language).
PL SQL INSERT-kommando
INSERT INTO-satsen används för att infoga data i en tabell. Det kallas a Datahanteringsspråk . Den använder tabellnamnet, kolumnnamn och värden som ingångar och utför införandet av värden i tabellen.
Syntax:
INSERT INTO <
> VALUES (<>, <>, …..);
Tabellnamnet och värdena som ska infogas är den obligatoriska delen av PL SQL INSERT-satsen. Valfritt kan vi också nämna kolumnnamnen där värdena ska infogas.
Vi har skapat EMPLOYEE-tabellen med hjälp av SQL-uttalandet nedan:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
Utgången från ovanstående kod ska vara:
SELECT * from EMPLOYEE;
INSÄTTA I VÄLJ
INSÄTTA I ALLA KOLONNER
INSERT INTO SELECT används för att infoga rader i en tabell genom att agera på SELECT-uttalandets resultat. Det kan krävas att få en rad från bordet och infoga i en annan tabell.
Syntax:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
INSERT INTO SELECT-kommandot behöver källans och måltabellens datatyper vara desamma. Om vi behöver kopiera hela raderna i källtabellen till måltabellen kan vi utelämna WHERE-villkoret.
Vi har skapat en annan tabell som heter MANAGER med hjälp av SQL-uttalandet nedan:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Låt oss återigen överväga tabellen ANSTÄLLDA.
Kodimplementering med INSERT INTO SELECT:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Utmatning av ovanstående kod:
SELECT * from MANAGER;
INSÄTT PARTIELLA DATA
Vi kan också infoga partiella data i en annan tabell. Låt oss först skapa MANAGERDETAIL från tabellen ANSTÄLLDA med frågan nedan.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Här, VAR 1 = 0 hänvisar till den första kolumnen i tabellen ANSTÄLLDA som är KOD.
Därefter använder vi INSERT INTO SELECT-satsen för att duplicera data från tabellen ANSTÄLLDA till tabellen MANAGERDETAIL.
Kodimplementering med INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Utmatning av ovanstående kod:
SELECT * from MANAGERDETAIL;
I ovanstående exempel har vi inte nämnt kolumnnamnen i INSERT-kommandot, eftersom utgången från SELECT-kommandot har de värden som matchar med MANAGERDETAIL-tabellkolumnerna. Vi har också inkluderat ett villkor med klausulen VAR.
INSÄTT PARTIELLA DATA OCH LITERAL
Vi kan infoga partiella data och bokstavligt värde i en tabell.
Låt oss först skapa tabellen MANAGERCONTACT med frågan nedan:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Låt oss nu återigen ta hjälp av tabellen EMPLOYEE och försöka duplicera data från EMPLOYEE-tabellen till tabellen MANAGERCONTACT.
Kodimplementering med INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
Utgången från ovanstående kod:
SELECT * from MANAGERCONTACT;
I exemplet ovan har vi erhållit värdena från tabellen ANSTÄLLDA och inkluderat 0 bokstavligen i INSERT-uttalandet som modifierade värdena i kolumnen ÅLDER till 0 i tabellen MANAGERCONTACT.
INSÄTTA ALLA
En INSERT ALL-sats används för att lägga till mer än en rad i en eller flera tabeller. Det kallas också ett kommando med flera tabeller och är av två typer villkorligt och ovillkorligt.
# 1) OVILLKORLIGT INSÄTT ALLA
För att infoga mer än en rad i en tabell används ett INSERT ALL-uttalande.
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)
Här är c1, c2 och c3 kolumnnamnen och v1, v2 och v3 är de värden som ska infogas. Om vi måste använda bokstavligt värde istället för underfråga; vi måste använda frågan nedan:
SELECT * FROM dual;
Vi har skapat SOCCERPLAYERS-tabellen med hjälp av SQL-uttalandet nedan:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Kodimplementering med 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;
I exemplet ovan har tre rader infogats samtidigt i en tabell med ett INSERT ALL-kommando.
För att infoga mer än en rad i flera tabeller används ett INSERT ALL-uttalande.
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;
Här är c1, c2 och c3 kolumnnamnen och v1, v2 och v3 är de värden som ska infogas. Tabellnamn1, tabellnamn2 och tabellnamn3 är tabellnamnen.
# 2) FÖRHÅLLANDE INFÖR ALLA
Ett INSERT ALL-uttalande kan infoga mer än en rad i tabeller beroende på vissa förhållanden.
Syntax:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
Nyckelordet ALL används för att specificera att alla villkor under WHERE-klausulen ska utföras. Om ett villkor är uppfyllt skulle motsvarande INTO-klausul köras.
Om nyckelordet FIRST används sedan för varje enskild rad erhållen från en underfråga, utför Oracle kriterierna i avsnittet NÄR från topp till botten. När ett villkor är uppfyllt skulle motsvarande INTO-sats springa och hoppa till en annan WHEN-sats för den raden.
Vi har skapat tabellerna VEHICLE, CARS, SMALLCARS och LARGECARS med hjälp av SQL-uttalandena nedan:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Infoga värdena nedan i fordonstabellen:
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;
Kodimplementering med 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;
Utgången från ovanstående kod:
SELECT * from CARS;
SELECT * from SMALLCARS;
SELECT * from LARGECARS;
I exemplet ovan har en rad infogats i var och en av de tre tabellerna baserat på CARDID-värdet.
Det finns vissa begränsningar med INSERT ALL-påståendet:
Den används endast för att infoga värden i tabeller. Det fungerar inte med vyer eller materialiserade vyer.
Det går inte att infoga värden i fjärrtabeller.
Antalet kolumner som ett INSERT INTO-kommando kan hantera bör inte vara större än 999.
Ett uttryck för tabellsamling kan inte användas i ett INSERT-kommando med flera tabeller.
En INSERT-underfråga med flera tabeller kan inte använda en sekvens.
PL SQL Update Command
UPDATE-uttalandet används för att ändra värdena i en tabell. Det kallas också a Datahanteringsspråk . Den använder namnen på tabellen, kolumnen och värdena som ingångar och utför modifiering av värden i tabellen.
Syntax:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
SET-nyckelordet används för att ändra kolumnvärdet med det nya värdet. Alternativt används WHERE-nyckelordet, om det utelämnas, ändras värdet på den angivna kolumnen i hela tabellen.
UPPDATERA ENKEL KOLONN AV EN RAD
Låt oss återigen överväga tabellen ANSTÄLLDA.
Kodimplementering med UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
Utgången från ovanstående kod:
SELECT * from EMPLOYEE;
UPPDATERA FLERA KOLONN AV EN RAD
Låt oss återigen överväga tabellen ANSTÄLLDA.
Kodimplementering med UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
Utgången från ovanstående kod:
SELECT * from EMPLOYEE;
UPPDATERA FLERA RADER
Låt oss återigen överväga tabellen ANSTÄLLDA.
Kodimplementering med UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Utmatning av ovanstående kod:
SELECT * from EMPLOYEE;
I exemplet ovan ökade åldern för alla anställda med 1.
PL SQL Radera kommando
DELETE-satsen används för att ta bort en hel post från tabellen. Det kallas också a Datahanteringsspråk.
Syntax:
DELETE FROM <
> WHERE <>;
Nyckelordet FROM är inte obligatoriskt och ett DELETE-uttalande ger samma resultat om FROM läggs till eller inte läggs till i frågan. Alternativt används WHERE-nyckelordet, om det utelämnas, kommer hela tabellen att raderas.
RADERA ENKEL RAD FRÅN TABELLEN
Låt oss återigen överväga tabellen ANSTÄLLDA.
Kodimplementering med DELETE:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Utmatning av ovanstående kod:
SELECT * from EMPLOYEE;
RADERA FLERADE RADER FRÅN TABELLEN
Låt oss återigen överväga tabellen MANAGERDETAIL.
Kodimplementering med DELETE:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Utmatning av ovanstående kod:
SELECT * from MANAGERDETAIL;
RADERA HELA RADER FRÅN TABELLEN
Låt oss återigen överväga fordonstabellen.
Kodimplementering med DELETE:
BEGIN DELETE FROM VEHICLE; END;
Utmatning av ovanstående kod:
SELECT * from VEHICLE;
PL SQL Välj kommando
SELECT-satsen används för att hämta data från databasen. SELECT INTO-satsen används för att hämta värdena från databasen och lagra dem till de lokala variablerna som introduceras av PL / SQL.
Om vi bara använder ett SELECT-uttalande returnerar det en enskild post. Om ett SELECT-uttalande hämtar flera värden, TOO_MANY_ROWS undantag kastas av PL / SQL. När vi använder SELECT INTO-satsen tilldelar vi variabeln minst ett värde. Men om ingen post hämtas från databasen, kommer INGEN INFORMATION HITTAD undantag kastas.
Antalet kolumner och deras typ ska vara lika med antalet variabler och deras typ i INTO-nyckelordet. Värdena erhålls från databasen i samma sekvens som definierats i SELECT-satsen.
WHERE-nyckelordet i SELECT-uttalandet är valfritt och gör det möjligt för oss att få poster som uppfyller vissa kriterier. Det är viktigt att notera att SELECT-frågan med DELETE, UPDATE och INSERT-kommandon inte har någon INTO-sats.
Syntax:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
Hämta data från alla kolumner i en tabell
Låt oss återigen överväga tabellen ANSTÄLLDA.
Kodimplementering med SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Utmatning av ovanstående kod:
Kodimplementering med SELECT-uttalande som ger ett undantag:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Utmatning av ovanstående kod:
Undantaget ingen data hittades kastas eftersom SELECT-uttalandet misslyckades med att få en rad som matchar det angivna villkoret eftersom det inte finns någon anställd med CODE 2 i databasen.
Hämta data från en kolumn av en tabell
Låt oss återigen överväga tabellen ANSTÄLLDA.
BEGIN SELECT CODE FROM EMPLOYEE; END;
Utgången från ovanstående kod:
HÄMTA DATA FRÅN FLERA KOLONNER AV EN TABELL
Låt oss återigen överväga tabellen ANSTÄLLDA.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Utmatning av ovanstående kod:
I exemplet ovan har två kolumner CODE och NAME lagts till i SELECT-uttalandet.
Vanliga frågor och svar
F # 1) Vad är INSERT, UPDATE och DELETE i SQL?
Svar: INSERT, UPDATE och DELETE är kommandon i SQL som hjälper till att hantera och uppdatera data. INSERT-uttalandet infogar rader i en tabell. DELETE-satsen tar bort rader från en tabell och UPDATE-satsen uppdaterar värden i raderna i tabellen.
F # 2) Kan vi INSÄTTA, UPPDATERA och RADERA i vyn i SQL?
Svar: Ja, vi kan INSÄTTA, UPPDATERA och RADERA i vyn i SQL. Om vyn har kopplats mellan tabellerna kan vi bara utföra INSERT- och UPDATE-åtgärder men vi kan inte göra en DELETE-operation. DROP-uttalande används för att radera en vy.
Svar: INSERT är ett DML- eller datamanipulationsspråk). De andra DML-uttalandena inkluderar UPDATE, DELETE och så vidare. DDL-uttalande kan skapa tabeller, schema och databas.
F # 4) Kan vi använda JOIN IN radera fråga?
Svar: Ja, vi kan använda INNER JOIN-satsen i DELETE-kommandot för att radera rader från en tabell.
F # 5) Vad är skillnaden mellan trunkera och radera kommandot?
Svar: TRUNCATE är ett DDL-uttalande medan DELETE är DML. TRUNCATE-kommandot kan ta bort hela tabellen. Det håller inte bordets integritet. DELETE-uttalandet kan bara ta bort viss information i tabellen. Det kan också innehålla villkor för radering.
F # 6) Vad är DML, DCL och DDL?
Svar: SQL-uttalanden är av typerna - DML, DCL och DML.
Datadefinitionsspråket eller DDL innehåller kommandon som ALTER, DROP, CREATE, RENAME, TRUNCATE och COMMENT. Data Manipulation Language eller DML innehåller kommandon som INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE och EXPLAIN PLAN.
Datakontrollspråket eller DCL innehåller kommandon som GRANT och REVOKE.
F # 7) Avkortas snabbare än droppe?
Svar: Ja, TRUNCATE är snabbare än DROP. TRUNCATE-kommandot raderar bara data från tabellen. DROP-kommandot raderar tabellstrukturen och data från tabellen.
Slutsats
I denna handledning har vi i detalj diskuterat några grundläggande begrepp för PL SQL-kommandon som är nödvändiga för att utveckla kunskap om det. Vi har täckt följande ämnen som listas nedan: