Comment utiliser l'instruction PL SQL Insert, Update, Delete And Select
how use pl sql insert
Ce tutoriel explique comment utiliser les commandes PL SQL INSERT, UPDATE, DELETE et SELECT avec des exemples de programmation:
Dans cet article, nous continuerons avec Série PL / SQL . Dans le Types de données, constantes et variables PL / SQL tutoriel, nous avons appris en détail les types de données PL SQL, les variables, les constantes et les littéraux à l'aide d'exemples de programmation. Ici, nous allons discuter des instructions PL SQL DML et de leur fonctionnement.
Nous explorerons les commandes PL SQL INSERT, DELETE, UPDATE et SELECT pour manipuler les données dans les tables PL / SQL.
Commençons par comprendre l'implémentation des commandes INSERT, DELETE, UPDATE et SELECT sur les tables. Collectivement, ils sont appelés instructions DML (Data Manipulation Language).
Commande PL SQL INSERT
L'instruction INSERT INTO est utilisée pour insérer des données dans une table. Cela s'appelle un Langage de manipulation des données . Il utilise le nom de la table et les noms et valeurs de colonne comme entrées et effectue l'insertion de valeurs dans la table.
Syntaxe:
INSERT INTO <
> VALUES (<>, <>, …..);
Le nom de la table et les valeurs à insérer sont la partie obligatoire de l'instruction PL SQL INSERT. En option, nous pouvons également mentionner les noms de colonnes où les valeurs doivent être insérées.
Nous avons créé la table EMPLOYEE à l'aide de l'instruction SQL ci-dessous:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Implémentation de code avec PL SQL INSERT:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
La sortie du code ci-dessus doit être:
SELECT * from EMPLOYEE;
INSÉRER DANS SELECT
INSÉRER DANS TOUTES LES COLONNES
INSERT INTO SELECT est utilisé pour insérer des lignes dans une table en agissant sur le résultat de l'instruction SELECT. Il peut être nécessaire d'obtenir une ligne du tableau et de l'insérer dans un autre tableau.
Syntaxe:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
La commande INSERT INTO SELECT nécessite que les types de données de la table source et cible soient identiques. Au cas où nous aurions besoin de copier les lignes entières de la table source dans la table cible, nous pouvons omettre la condition WHERE.
Nous avons créé une autre table appelée MANAGER à l'aide de l'instruction SQL ci-dessous:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Considérons à nouveau la table EMPLOYÉ.
Implémentation de code avec INSERT INTO SELECT:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Sortie du code ci-dessus:
SELECT * from MANAGER;
INSÉRER DES DONNÉES PARTIELLES
Nous pouvons également insérer des données partielles dans une autre table. Créons d'abord le GESTIONNAIRE table de la table EMPLOYEE avec la requête ci-dessous.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Ici, O 1 = 0 fait référence à la première colonne de la table EMPLOYEE qui est CODE.
Ensuite, nous utiliserons l'instruction INSERT INTO SELECT pour dupliquer les données de la table EMPLOYEE vers la table MANAGERDETAIL.
Implémentation de code avec INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Sortie du code ci-dessus:
SELECT * from MANAGERDETAIL;
Dans l'exemple ci-dessus, nous n'avons pas mentionné les noms de colonne dans la commande INSERT, car la sortie de la commande SELECT a les valeurs qui correspondent aux colonnes de la table MANAGERDETAIL. De plus, nous avons inclus une condition avec la clause WHERE.
INSÉRER DES DONNÉES PARTIELLES ET LITTÉRALES
Nous pouvons insérer des données partielles et une valeur littérale dans une table.
Créons d'abord la table MANAGERCONTACT avec la requête ci-dessous:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Maintenant, reprenons l'aide de la table EMPLOYEE et essayons de dupliquer les données de la table EMPLOYEE vers la table MANAGERCONTACT.
Implémentation de code avec INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
La sortie du code ci-dessus:
SELECT * from MANAGERCONTACT;
Dans l'exemple ci-dessus, nous avons obtenu les valeurs de la table EMPLOYEE et avons également inclus 0 littéral dans l'instruction INSERT qui a modifié les valeurs de la colonne AGE à 0 dans la table MANAGERCONTACT.
INSÉRER TOUT
Une instruction INSERT ALL est utilisée pour ajouter plus d'une ligne dans une ou plusieurs tables. Elle est également appelée commande multi-table et est de deux types conditionnelle et inconditionnelle.
# 1) INSÉRER TOUT INCONDITIONNEL
Pour insérer plus d'une ligne dans une table, une instruction INSERT ALL est utilisée.
Syntaxe:
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)
Ici, c1, c2 et c3 sont les noms de colonne et v1, v2 et v3 sont les valeurs à insérer. Dans ce cas, nous devons utiliser une valeur littérale au lieu d'une sous-requête; nous devons utiliser la requête ci-dessous:
SELECT * FROM dual;
Nous avons créé la table SOCCERPLAYERS à l'aide de l'instruction SQL ci-dessous:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Implémentation du code avec 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;
La sortie du code ci-dessus:
SELECT * from SOCCERPLAYERS;
Dans l'exemple ci-dessus, trois lignes ont été insérées à la fois dans une table avec une commande INSERT ALL.
Pour insérer plus d'une ligne dans plusieurs tables, une instruction INSERT ALL est utilisée.
Syntaxe:
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;
Ici, c1, c2 et c3 sont les noms de colonne et v1, v2 et v3 sont les valeurs à insérer. Nom_table1, nom_table2 et nom_table3 sont les noms de table.
# 2) CONDITIONNEL INSÉRER TOUT
Une instruction INSERT ALL peut insérer plus d'une ligne dans des tables en fonction de certaines conditions.
Syntaxe:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
Le mot clé ALL est utilisé pour spécifier que toutes les conditions de la clause WHERE doivent être exécutées. Si une condition est satisfaite, la clause INTO correspondante s'exécuterait.
Si le mot-clé FIRST est utilisé alors pour chaque ligne individuelle obtenue à partir d'une sous-requête, l'Oracle exécute les critères de la clause WHEN de haut en bas. Une fois qu'une condition est satisfaite, la clause INTO correspondante s'exécute et passe à une autre clause WHEN pour cette ligne.
Nous avons créé les tables VEHICLE, CARS, SMALLCARS et LARGECARS à l'aide des instructions SQL ci-dessous:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Insérez les valeurs ci-dessous dans le tableau VEHICLE:
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;
Implémentation de code avec 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;
La sortie du code ci-dessus:
SELECT * from CARS;
SELECT * from SMALLCARS;
SELECT * from LARGECARS;
Dans l'exemple ci-dessus, une ligne a été insérée dans chacune des trois tables en fonction de la valeur CARDID.
Il existe certaines restrictions avec l'instruction INSERT ALL:
Il n'est utilisé que pour insérer des valeurs dans des tableaux. Il ne fonctionne pas avec les vues ou les vues matérialisées.
Il n'est pas capable d'insérer des valeurs dans des tables distantes.
Le nombre de colonnes qu'une commande INSERT INTO peut gérer ne doit pas être supérieur à 999.
Une expression de collection de tables ne peut pas être utilisée dans une commande INSERT multi-tables.
Une sous-requête INSERT multi-table n'est pas capable d'utiliser une séquence.
Commande de mise à jour PL SQL
L'instruction UPDATE est utilisée pour modifier les valeurs d'une table. Il est également appelé un Langage de manipulation des données . Il utilise les noms de la table, de la colonne et des valeurs comme entrées et effectue la modification des valeurs sur la table.
Syntaxe:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
Le mot clé SET est utilisé pour changer la valeur de la colonne avec la nouvelle valeur. Facultativement, le mot clé WHERE est utilisé, s'il est omis, la valeur de la colonne spécifiée dans le tableau complet sera modifiée.
METTRE À JOUR UNE SEULE COLONNE D'UNE RANGÉE
Considérons à nouveau la table EMPLOYÉ.
Implémentation du code avec UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
La sortie du code ci-dessus:
SELECT * from EMPLOYEE;
METTRE À JOUR PLUSIEURS COLONNES D'UNE RANGÉE
Considérons à nouveau la table EMPLOYÉ.
Implémentation du code avec UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
La sortie du code ci-dessus:
SELECT * from EMPLOYEE;
METTRE À JOUR PLUSIEURS RANGÉES
Considérons à nouveau la table EMPLOYÉ.
Implémentation du code avec UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Sortie du code ci-dessus:
SELECT * from EMPLOYEE;
Dans l'exemple ci-dessus, l'âge de tous les employés a augmenté de 1.
Commande de suppression PL SQL
L'instruction DELETE est utilisée pour supprimer un enregistrement entier de la table. Il est également appelé un Langage de manipulation des données.
Syntaxe:
DELETE FROM <
> WHERE <>;
Le mot clé FROM n'est pas obligatoire et une instruction DELETE doit donner le même résultat si FROM est ajouté ou non dans la requête. Facultativement, le mot clé WHERE est utilisé, s'il est omis, le tableau complet sera supprimé.
SUPPRIMER UNE SEULE RANGÉE DE LA TABLE
Considérons à nouveau la table EMPLOYÉ.
Implémentation du code avec DELETE:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Sortie du code ci-dessus:
SELECT * from EMPLOYEE;
SUPPRIMER PLUSIEURS RANGÉES DE LA TABLE
Considérons à nouveau la table MANAGERDETAIL.
Implémentation du code avec DELETE:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Sortie du code ci-dessus:
SELECT * from MANAGERDETAIL;
SUPPRIMER TOUTES LES RANGÉES DE LA TABLE
Considérons à nouveau la table VEHICLE.
Implémentation du code avec DELETE:
BEGIN DELETE FROM VEHICLE; END;
Sortie du code ci-dessus:
SELECT * from VEHICLE;
Commande de sélection SQL PL
L'instruction SELECT est utilisée pour récupérer les données de la base de données. L'instruction SELECT INTO est utilisée pour récupérer les valeurs de la base de données et les stocker dans les variables locales introduites par PL / SQL.
Si nous n'utilisons qu'une instruction SELECT, elle renvoie un seul enregistrement. Dans le cas où une instruction SELECT récupère plusieurs valeurs, TOO_MANY_ROWS l'exception est levée par PL / SQL. Lors de l'utilisation de l'instruction SELECT INTO, nous affectons au moins une valeur à la variable. Cependant, si aucun enregistrement n'est extrait de la base de données, le AUCUNE DONNÉE DISPONIBLE l'exception est levée.
Le nombre de colonnes et leur type doivent être égaux au nombre de variables et à leur type dans le mot clé INTO. Les valeurs sont obtenues à partir de la base de données dans la même séquence que celle définie dans l'instruction SELECT.
Le mot clé WHERE à l'intérieur de l'instruction SELECT est facultatif et nous permet d'obtenir des enregistrements qui répondent à certains critères. Il est important de noter que la requête SELECT avec les commandes DELETE, UPDATE et INSERT n'a pas de clause INTO.
Syntaxe:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
RECHERCHE DE DONNÉES DE TOUTES LES COLONNES D'UN TABLEAU
Considérons à nouveau la table EMPLOYÉ.
Implémentation de code avec SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Sortie du code ci-dessus:
Implémentation de code avec instruction SELECT lançant une exception:
L'exception aucune donnée trouvée est levée car l'instruction SELECT n'a pas réussi à obtenir une ligne correspondant à la condition spécifiée car il n'y a pas d'employé avec CODE 2 dans la base de données.
RECHERCHEZ DES DONNÉES À PARTIR D'UNE COLONNE D'UN TABLEAU
Considérons à nouveau la table EMPLOYÉ.
BEGIN SELECT CODE FROM EMPLOYEE; END;
La sortie du code ci-dessus:
RECHERCHE DE DONNÉES À PARTIR DE PLUSIEURS COLONNES D'UNE TABLE
Considérons à nouveau la table EMPLOYÉ.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Sortie du code ci-dessus:
Dans l'exemple ci-dessus, deux colonnes CODE et NAME ont été ajoutées dans l'instruction SELECT.
Foire aux questions et réponses
Q # 1) Qu'est-ce que INSERT, UPDATE et DELETE dans SQL?
Répondre: INSERT, UPDATE et DELETE sont des commandes SQL qui aident à exploiter et mettre à jour les données. L'instruction INSERT insère des lignes dans une table. L'instruction DELETE supprime les lignes d'une table et l'instruction UPDATE met à jour les valeurs dans les lignes de la table.
Q # 2) Pouvons-nous INSÉRER, METTRE À JOUR et SUPPRIMER en vue dans SQL?
Répondre: Oui, nous pouvons INSÉRER, METTRE À JOUR et SUPPRIMER en vue dans SQL. Si la vue s'est jointe entre les tables, nous ne pouvons effectuer que des actions INSERT et UPDATE, mais pas une opération DELETE. L'instruction DROP est utilisée pour supprimer une vue.
Q # 3) INSERT DDL ou DML?
Répondre: L'INSERT est un langage DML ou de manipulation de données). Les autres instructions DML incluent UPDATE, DELETE et ainsi de suite. L'instruction DDL est capable de créer des tables, un schéma et une base de données.
Q # 4) Pouvons-nous utiliser la requête de suppression JOIN IN?
Répondre: Oui, nous pouvons utiliser l'instruction INNER JOIN dans la commande DELETE pour supprimer des lignes d'une table.
Q # 5) Quelle est la différence entre la commande tronquer et supprimer?
Répondre: TRUNCATE est une instruction DDL tandis que DELETE est DML. La commande TRUNCATE est capable de supprimer la table complète. Cela ne préserve pas l'intégrité de la table. L'instruction DELETE ne peut supprimer que des données particulières de la table. Il peut également incorporer des conditions de suppression.
Q # 6) Que sont DML, DCL et DDL?
Répondre: Les instructions SQL sont des types - DML, DCL et DML.
Le langage de définition de données ou DDL comprend des commandes telles que ALTER, DROP, CREATE, RENAME, TRUNCATE et COMMENT. Le langage de manipulation de données ou DML inclut des commandes telles que INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE et EXPLAIN PLAN.
Le langage de contrôle des données ou DCL comprend des commandes telles que GRANT et REVOKE.
Q # 7) La troncature est-elle plus rapide que la chute?
Répondre: Oui, l'opération TRUNCATE est plus rapide que DROP. La commande TRUNCATE supprime uniquement les données de la table. La commande DROP efface la structure de la table et les données de la table.
Conclusion
Dans ce tutoriel, nous avons discuté en détail de certains concepts de base des commandes PL SQL qui sont essentiels pour développer des connaissances à ce sujet. Nous avons couvert les sujets suivants énumérés ci-dessous: