1.
Tables
Définition : Structure contenant des lignes et des colonnes.
Création :
CREATE TABLE employes (
id NUMBER PRIMARY KEY,
nom VARCHAR2(50) NOT NULL,
salaire NUMBER CHECK (salaire > 0),
departement_id NUMBER REFERENCES departements(id)
);
Contraintes : PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, CHECK, DEFAULT.
2. Vues (VIEW)
Définition : Table virtuelle basée sur une requête.
Création :
CREATE VIEW vue_employes AS
SELECT nom, salaire FROM employes WHERE salaire > 3000;
Avantages : Sécurité, simplification des requêtes.
3. Séquences
Définition : Générateur automatique de valeurs uniques.
Création :
CREATE SEQUENCE seq_employe START WITH 1 INCREMENT BY 1;
Utilisation :
INSERT INTO employes (id, nom, salaire) VALUES (seq_employe.NEXTVAL, 'Ali', 4000);
4. Index
Définition : Améliore la rapidité des recherches.
Création :
CREATE INDEX idx_nom ON employes(nom);
5. Synonymes
Définition : Alias pour un objet de la base.
Création :
CREATE SYNONYM syn_employe FOR employes;
6. Insertion, Mise à Jour et Suppression
Insertion :
INSERT INTO employes (id, nom, salaire) VALUES (1, 'Ali', 5000);
Mise à jour :
UPDATE employes SET salaire = 6000 WHERE id = 1;
Suppression :
DELETE FROM employes WHERE id = 1;
7. Extraction des Données (SELECT)
Sélection simple :
SELECT * FROM employes;
Avec condition :
SELECT nom FROM employes WHERE salaire > 3000;
Tri des résultats :
SELECT nom FROM employes ORDER BY salaire DESC;
Fonctions d’agrégation :
o COUNT(), SUM(), AVG(), MAX(), MIN()
o Ex :
SELECT AVG(salaire) FROM employes;
8. Sous-interrogations (Subqueries)
Exemple : Trouver l'employé avec le salaire le plus élevé :
SELECT nom FROM employes WHERE salaire = (SELECT MAX(salaire) FROM employes);
9. Opérations ensemblistes
UNION : Fusionner des résultats sans doublons.
SELECT nom FROM employes UNION SELECT nom FROM stagiaires;
UNION ALL : Fusionner avec doublons.
INTERSECT : Résultats communs entre deux requêtes.
MINUS : Différence entre deux requêtes.
10. CASE (Conditions dans SELECT, UPDATE, ORDER BY, GROUP BY)
Exemple avec SELECT :
SELECT nom,
CASE
WHEN salaire > 5000 THEN 'Elevé'
WHEN salaire BETWEEN 3000 AND 5000 THEN 'Moyen'
ELSE 'Bas'
END AS niveau_salaire
FROM employes;
Exemple avec UPDATE :
UPDATE employes
SET prime =
CASE
WHEN salaire > 5000 THEN 1000
ELSE 500
END;
Exemple avec ORDER BY :
SELECT nom FROM employes
ORDER BY CASE WHEN salaire > 5000 THEN 1 ELSE 2 END;
11. Modèle et Structure de Programme en PL/SQL
Bloc Anonyme :
DECLARE
v_salaire NUMBER;
BEGIN
SELECT salaire INTO v_salaire FROM employes WHERE id = 1;
DBMS_OUTPUT.PUT_LINE('Salaire : ' || v_salaire);
END;
Structures de contrôle :
o IF-THEN-ELSE :
o DECLARE
o salaire NUMBER := 4000;
o BEGIN
o IF salaire > 5000 THEN
o DBMS_OUTPUT.PUT_LINE('Salaire élevé');
o ELSIF salaire BETWEEN 3000 AND 5000 THEN
o DBMS_OUTPUT.PUT_LINE('Salaire moyen');
o ELSE
o DBMS_OUTPUT.PUT_LINE('Salaire bas');
o END IF;
END;
o Boucle FOR :
o FOR i IN 1..10 LOOP
o DBMS_OUTPUT.PUT_LINE(i);
END LOOP;