Sådan bruges PL SQL Indsæt, opdater, slet og vælg erklæring
how use pl sql insert
Denne vejledning forklarer, hvordan man bruger PL SQL INSERT, UPDATE, DELETE og SELECT kommandoer med programmeringseksempler:
I denne artikel vil vi fortsætte med PL / SQL-serien . I PL / SQL datatyper, konstanter og variabel tutorial, har vi lært om PL SQL datatyper, variabler, konstanter og bogstaver i detaljer ved hjælp af programmeringseksempler. Her vil vi diskutere PL SQL DML-udsagnene, og hvordan de fungerer.
Vi skal undersøge PL SQL INSERT, DELETE, UPDATE og SELECT kommandoerne for at manipulere data i PL / SQL tabeller.
Lad os begynde at forstå INSERT, DELETE, UPDATE og SELECT kommandoer implementering på tabeller. Samlet kaldes disse Data Manipulation Language (DML) udsagn.
PL SQL INSERT Kommando
INSERT INTO-sætning bruges til at indsætte data i en tabel. Det kaldes en Data Manipulation Language . Det bruger tabelnavnet og kolonnenavne og værdier som input og udfører indsættelse af værdier i tabellen.
Syntaks:
INSERT INTO <
> VALUES (<>, <>, …..);
Tabellenavn og værdier, der skal indsættes, er den obligatoriske del af PL SQL INSERT-sætningen. Eventuelt kan vi også nævne kolonnenavnene, hvor værdierne skal indsættes.
Vi har oprettet EMPLOYEE-tabellen ved hjælp af SQL-sætningen nedenfor:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Kodeimplementering med PL SQL INSERT:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
Output af ovenstående kode skal være:
SELECT * from EMPLOYEE;
INDSÆT I VÆLG
INDSÆT I ALLE KOLONNER
INSERT INTO SELECT bruges til at indsætte rækker i en tabel ved at reagere på SELECT-sætningens resultat. Det kan være nødvendigt at få en række fra bordet og indsætte i en anden tabel.
Syntaks:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
INSERT INTO SELECT-kommandoen kræver, at kilde- og måltabellens datatyper er de samme. Hvis vi har brug for at kopiere hele rækkerne i kildetabellen til måltabellen, kan vi udelade WHERE-tilstanden.
Vi har oprettet en anden tabel kaldet MANAGER ved hjælp af SQL-sætningen nedenfor:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Lad os igen overveje tabellen MEDARBEJDERE.
Kodeimplementering med INSERT INTO SELECT .:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Output af ovenstående kode:
SELECT * from MANAGER;
INDSÆT PARTIELLE DATA
Vi kan også indsætte deldata i en anden tabel. Lad os først oprette MANAGERDETAIL tabel fra MEDARBEJDERE-tabellen med nedenstående forespørgsel.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Her, HVOR 1 = 0 henviser til den første kolonne i tabellen MEDARBEJDERE, som er KODE.
Dernæst bruger vi INSERT INTO SELECT-sætningen til at duplikere dataene fra tabellen MEDARBEJDERE til tabellen MANAGERDETAIL.
Kodeimplementering med INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Output af ovenstående kode:
SELECT * from MANAGERDETAIL;
I ovenstående eksempel har vi ikke nævnt kolonnenavnene i INSERT-kommandoen, da output fra SELECT-kommandoen har de værdier, der svarer til MANAGERDETAIL-tabelkolonnerne. Vi har også inkluderet en betingelse med klausulen HVOR.
INDSÆT PARTIELLE DATA OG LITERAL
Vi kan indsætte deldata og bogstavelig værdi i en tabel.
Lad os først oprette tabellen MANAGERCONTACT med nedenstående forespørgsel:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Lad os nu igen tage hjælp fra EMPLOYEE-tabellen og prøve at duplikere dataene fra EMPLOYEE-tabellen til MANAGERCONTACT-tabellen.
Kodeimplementering med INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
Output af ovenstående kode:
SELECT * from MANAGERCONTACT;
I ovenstående eksempel har vi opnået værdierne fra EMPLOYEE-tabellen og også inkluderet 0 liter i INSERT-sætningen, som ændrede værdierne i ALD-kolonnen til 0 i MANAGERCONTACT-tabellen.
INDSÆT ALT
En INSERT ALL-sætning bruges til at tilføje mere end en række til en enkelt tabel eller flere tabeller. Det kaldes også en multi-tabel kommando og er af to typer betinget og ubetinget.
# 1) UBETINGELSESINDSÆT ALLE
For at indsætte mere end en række i en tabel bruges en INSERT ALL-sætning.
Syntaks:
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)
Her er c1, c2 og c3 kolonnenavnene, og v1, v2 og v3 er de værdier, der skal indsættes. I tilfælde af at vi er nødt til at bruge bogstavelig værdi i stedet for underforespørgsel; vi er nødt til at bruge nedenstående forespørgsel:
SELECT * FROM dual;
Vi har oprettet tabellen SOCCERPLAYERS ved hjælp af SQL-sætningen nedenfor:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Kodeimplementering 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;
Output af ovenstående kode:
SELECT * from SOCCERPLAYERS;
I ovenstående eksempel er der indsat tre rækker på én gang i en tabel med en INSERT ALL-kommando.
For at indsætte mere end en række i flere tabeller bruges en INSERT ALL-sætning.
Syntaks:
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;
Her er c1, c2 og c3 kolonnenavnene, og v1, v2 og v3 er de værdier, der skal indsættes. Tabelnavn1, tabelnavn2 og tabelnavn3 er tabelnavnene.
# 2) BETINGELSESINDSÆT ALLE
En INSERT ALL-sætning kan indsætte mere end en række i tabeller afhængigt af nogle betingelser.
Syntaks:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
Nøgleordet ALL bruges til at specificere, at alle betingelserne under WHERE-klausulen skal udføres. Hvis en betingelse er opfyldt, vil den tilsvarende INTO-klausul køre.
Hvis nøgleordet FIRST bruges, så udfører Oracle for hver enkelt række opnået fra en underforespørgsel kriterierne i klausulen NÅR fra top til bund. Når en betingelse er opfyldt, løber den tilsvarende INTO-klausul og hopper til en anden WHEN-klausul for den række.
Vi har oprettet tabellerne VEHICLE, CARS, SMALLCARS og LARGECARS ved hjælp af SQL-sætningerne nedenfor:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Indsæt nedenstående værdier i køretøjstabellen:
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;
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;
Output af ovenstående kode:
SELECT * from CARS;
SELECT * from SMALLCARS;
SELECT * from LARGECARS;
I ovenstående eksempel er der indsat en række i hver af de tre tabeller baseret på CARDID-værdien.
Der er visse begrænsninger med INSERT ALL-sætningen:
Det bruges kun til indsættelse af værdier i tabeller. Det fungerer ikke med synspunkter eller materialiserede synspunkter.
Det er ikke i stand til at indsætte værdier i eksterne tabeller.
Antallet af kolonner, som en INSERT INTO-kommando kan håndtere, bør ikke være større end 999.
Et udtryk for tabelindsamling kan ikke bruges i en INSERT-kommando med flere tabeller.
En INSERT-underforespørgsel med flere tabeller er ikke i stand til at bruge en sekvens.
PL SQL Update Command
UPDATE-sætningen bruges til at ændre værdierne i en tabel. Det kaldes også en Data Manipulation Language . Det bruger navnene på tabellen, kolonnen og værdierne som input og udfører ændringer af værdierne på tabellen.
Syntaks:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
SET-nøgleordet bruges til at ændre kolonneværdien med den nye værdi. Eventuelt bruges WHERE-nøgleordet, hvis det udelades, ændres værdien af den angivne kolonne i den komplette tabel.
OPDATER ENKEL KOLONNE AF EN RÆDE
Lad os igen overveje tabellen MEDARBEJDERE.
Kodeimplementering med UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
Output af ovenstående kode:
SELECT * from EMPLOYEE;
OPDATER FLERE KOLONNER I EN RÆDE
Lad os igen overveje tabellen MEDARBEJDERE.
Kodeimplementering med UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
Output af ovenstående kode:
SELECT * from EMPLOYEE;
OPDATER FLERE RÆKER
Lad os igen overveje tabellen MEDARBEJDERE.
Kodeimplementering med UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Output af ovenstående kode:
SELECT * from EMPLOYEE;
I eksemplet ovenfor steg ALLE medarbejderes ALDER med 1.
PL SQL Slet kommando
DELETE-sætning bruges til at fjerne en hel post fra tabellen. Det kaldes også en Data Manipulation Language.
Syntaks:
DELETE FROM <
> WHERE <>;
Nøgleordet FROM er ikke obligatorisk, og en DELETE-sætning giver det samme resultat, hvis FROM tilføjes eller ikke tilføjes i forespørgslen. Eventuelt bruges WHERE-nøgleordet, hvis den udelades, vil den komplette tabel blive slettet.
SLET ENKEL RÅDE FRA TABEL
Lad os igen overveje tabellen MEDARBEJDERE.
Kodeimplementering med DELETE:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Output af ovenstående kode:
SELECT * from EMPLOYEE;
Slet flere rækker fra bordet
Lad os igen overveje tabellen MANAGERDETAIL.
Kodeimplementering med DELETE:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Output af ovenstående kode:
SELECT * from MANAGERDETAIL;
Slet hele rækker fra bordet
Lad os igen overveje KØRETØJSTABellen.
Kodeimplementering med DELETE:
BEGIN DELETE FROM VEHICLE; END;
Output af ovenstående kode:
SELECT * from VEHICLE;
PL SQL Vælg kommando
SELECT-sætningen bruges til at hente data fra databasen. SELECT INTO-sætningen bruges til at hente værdierne fra databasen og gemme dem til de lokale variabler, der er introduceret af PL / SQL.
Hvis vi kun bruger en SELECT-sætning, returnerer den en enkelt post. Hvis en SELECT-sætning henter flere værdier, TOO_MANY_ROWS undtagelse kastes af PL / SQL. Mens vi bruger SELECT INTO-sætningen, tildeler vi variablen mindst en værdi. Hvis der imidlertid ikke hentes nogen post fra databasen, bliver INGEN DATA FUNDET undtagelse kastes.
Antallet af kolonner og deres type skal være lig med antallet af variabler og deres type i INTO-nøgleordet. Værdierne fås fra databasen i samme rækkefølge som defineret i SELECT-sætningen.
WHERE-nøgleordet inde i SELECT-sætningen er valgfrit og giver os mulighed for at hente poster, der opfylder bestemte kriterier. Det er vigtigt at bemærke, at SELECT-forespørgsel med SLET, UPDATE og INSERT-kommandoer ikke har en INTO-klausul.
Syntaks:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
HENT DATA FRA ALLE KOLONNER PÅ EN TABEL
Lad os igen overveje tabellen MEDARBEJDERE.
Kodeimplementering med SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Output af ovenstående kode:
Kodeimplementering med SELECT-sætning med en undtagelse:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Output af ovenstående kode:
Ingen data fundet undtagelse kastes, da SELECT-sætningen ikke kunne opnå en række, der matcher den angivne tilstand, da der ikke er nogen medarbejder med CODE 2 i databasen.
HENT DATA FRA EN KOLONNE AF EN TABEL
Lad os igen overveje tabellen MEDARBEJDERE.
BEGIN SELECT CODE FROM EMPLOYEE; END;
Output af ovenstående kode:
HENT DATA FRA FLERE KOLONNE AF EN TABEL
Lad os igen overveje tabellen MEDARBEJDERE.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Output af ovenstående kode:
I ovenstående eksempel er to kolonner KODE og NAVN blevet tilføjet i SELECT-sætningen.
Ofte stillede spørgsmål og svar
Q # 1) Hvad er INDSÆT, OPDATER og SLET i SQL?
Svar: INSERT, UPDATE og DELETE er kommandoer i SQL, som hjælper med at betjene og opdatere data. INSERT-sætningen indsætter rækker i en tabel. SLET-sætning sletter rækker fra en tabel, og UPDATE-sætningen opdaterer værdier i rækkerne i tabellen.
Q # 2) Kan vi indsætte, opdatere og slette i visning i SQL?
Svar: Ja, vi kan indsætte, opdatere og slette i SQL-visning. Hvis visningen har sammenføjet mellem tabellerne, kan vi kun udføre INSERT- og UPDATE-handlinger, men kan ikke udføre en DELETE-handling. DROP-sætning bruges til at slette en visning.
Svar: INSERT er et DML eller Data Manipulation Language). De andre DML-udsagn inkluderer UPDATE, DELETE osv. DDL-sætning er i stand til at oprette tabeller, skema og database.
Q # 4) Kan vi bruge JOIN IN slette forespørgsel?
Svar: Ja, vi kan bruge INNER JOIN-sætningen i SLET-kommandoen til at slette rækker fra en tabel.
Q # 5) Hvad er forskellen mellem trunker og slet kommando?
Svar: TRUNCATE er en DDL-sætning, mens DELETE er DML. TRUNCATE-kommandoen er i stand til at fjerne den komplette tabel. Det holder ikke bordets integritet. DELETE-sætningen kan kun slette bestemte data på bordet. Det kan også omfatte betingelser for sletning.
Q # 6) Hvad er DML, DCL og DDL?
Svar: SQL-sætninger er af typerne - DML, DCL og DML.
Datadefinitionssproget eller DDL inkluderer kommandoer som ALTER, DROP, CREATE, RENAME, TRUNCATE og COMMENT. Data Manipulation Language eller DML inkluderer kommandoer som INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE og EXPLAIN PLAN.
Data Control Language eller DCL inkluderer kommandoer som GRANT og REVOKE.
Q # 7) Er afkortet hurtigere end drop?
Svar: Ja, TRUNCATE-operation er hurtigere end DROP. TRUNCATE-kommandoen sletter kun dataene fra tabellen. DROP-kommandoen sletter tabelstrukturen og dataene fra tabellen.
Konklusion
I denne vejledning har vi detaljeret diskuteret nogle grundlæggende begreber i PL SQL-kommandoer, der er vigtige for at udvikle viden om det. Vi har dækket nedenstående emner: