Académique Documents
Professionnel Documents
Culture Documents
A. LOTFI
Historique
Dr E. F. Codd a publié l'article "A Relational Model of Data for Large Shared
Data Banks" en juin 1970 dans la revue de l'Association of Computer Machinery
(ACM), Communications of the ACM.
Le modèle de Codd est maintenant accepté comme modèle définitif pour les
systèmes de gestion de bases de données relationnelles (RDBMS).
Le langage, Structured English Query Language (SEQUEL) a été développé par
IBM Corporation, Inc., pour utiliser le modèle de Codd. SEQUEL est devenu
plus tard SQL (toujours prononcé "suite").
En 1979, Relational Software, Inc. (maintenant Oracle) a introduit la première
implémentation de SQL disponible dans le commerce. Aujourd'hui, SQL est
accepté comme langage RDBMS standard.
Système de Gestion de BDD
Il permet de :
➢ Décrire les données : indépendamment des applications (de manière
intrinsèque)
➢ Manipuler les données : interroger et mettre à jour les données sans
préciser d'algorithme d'accès en adoptant un style déclaratif (dire QUOI
sans dire COMMENT)
➢ Contrôler les données : spécifier l es droits d’accès aux données
(confidentialité) et gérer les transactions
Types de données
Toute opération de mise à jour violant une des contraintes spécifiées sera
rejetée.
Contraintes d’intégrité
❑ Il est indispensable de créer les index appropriés pour accélérer le traitement des
requêtes
❑ Il ne faut cependant pas créer des index sur n'importe quel colonne ou groupe de
colonnes, car les mises à jour seraient ralenties inutilement par la maintenance de ces
index
Langage de définition des données
(DDL)
L’instruction ALTER : modifier la structure de la table
ALTER TABLE tbl_name
[alter_option [, alter_option] ...]
Exemple :
ALTER TABLE produit
ADD COLUMN id_fournisseur INT DEFAULT NULL AFTER designation,
DROP COLUMN ref,
DROP PRIMARY KEY,
CHANGE prix TO prix_vente,
MODIFY designation VARCHAR(255) NOT NULL,
DROP CONSTRAINT min_price
Langage de définition des données
(DDL)
L’instruction DROP : suppression d’un objet du schéma de BDD
DROP TABLE tbl_name
L’instruction TRUNCATE TABLE : initialiser la table. Plus rapide que le DELETE.
Langage de manipulation des données
(DML)
L’instruction INSERT : peupler la table
INSERT INTO tbl_name (liste des colonnes) VALUES (liste des valeurs)
Exemple :
INSERT INTO produit (id_famille,ref,designation,prix)
VALUES (1,'SAMS12NR','Samsung S12 NOIR',98000)
INSERT INTO client (prenom, nom, ville, age)
VALUES
('Rahmani', ‘Amine', ‘Oran', 24),
(‘Ben Zahra', ‘Kamilia', ‘Mostganem', 36),
(‘Ben Salem', ‘Sara', ‘Alger', 27)
INSERT INTO personne (id, nom) VALUES (DEFAULT, ‘Souleiman')
INSERT INTO personne (nom, prenom)
SELECT nom, prenom FROM client
➢ INSERT INTO copy_vehicule
SELECT * FROM vehicule WHERE id > 10;
Langage de manipulation des données
(DML)
L’instruction UPDATE : modifier un enregistrement (tuple)
UPDATE tbl_name SET col1=value1 [, col2=value2, …]
[WHERE condition]
Exemple :
UPDATE produit SET prix = prix * 1.2
WHERE prix > 10000
Langage de manipulation des données
(DML)
L’instruction DELETE : supprimer un enregistrement (tuple)
DELETE FROM tbl_name
[WHERE condition]
Exemple :
DELETE FROM produit
WHERE id = 100;
DELETE FROM ligne_facture
WHERE id_facture = 8
ORDER BY date_heure LIMIT 1;
Langage de manipulation des données
(DML)
L’instruction SELECT : projection/sélection de données
SELECT [*|liste_des_colonnes]
FROM tbl_name
[WHERE condition]
[GROUP BY liste_de_colonnes]
[HAVING condition]
[ORDER BY liste_de_colonnes]
[LIMIT {[décalage,] nb_lignes| nb_lignes OFFSET décalage}]
Exemple :
SELECT * FROM produit
WHERE id > 100;
SELECT lf.* FROM ligne_facture AS lf
WHERE id_facture = 8
ORDER BY date_heure LIMIT 10,10;
GROUP BY/HAVING
La clause GROUP BY permet de partitionner une table en plusieurs groupes
Toutes les lignes d'un même groupe ont la même valeur pour la liste des
attributs de partitionnement spécifiés après GROUP BY
Les fonctions de calcul (aggrégation) opèrent sur chaque groupe de valeurs
❖ COUNT nombre de valeurs
❖ SUM somme des valeurs
❖ AVG moyenne des valeurs
❖ MAX plus grande valeur
❖ MIN plus petite valeur
La clause HAVING permet de spécifier une condition de restriction sur des
groupes. Elle sert à éliminer certains groupes, comme WHERE sert à éliminer
des lignes
UNION, INTERSECT et EXCEPT
Types de jointures
INNER JOIN : la jointure interne retourne les enregistrements
quand la condition est vrai dans les 2 tables.
CROSS JOIN : la jointure croisée retourne le produit cartésien de 2
tables.
LEFT [OUTER] JOIN :la jointure externe retourne tous les
enregistrements de la table de gauche même si la condition n’est
pas vérifié dans l’autre table.
RIGHT [OUTER] JOIN : le jointure externe pour retourne tous les
enregistrements de la table de droite même si la condition n’est
pas vérifié dans l’autre table.
FULL [OUTER] JOIN : la jointure externe pour retourne les résultats
quand la condition est vrai dans au moins une des 2 tables.
SELF JOIN : jointure d’une table avec elle-même comme si c’était
une autre table.
NATURAL JOIN : jointure naturelle entre 2 tables s’il y a au moins
une colonne qui porte le même nom entre les 2 tables SQL
Les Vues
Outre le contrôle de l’accès aux données (privilèges), la confidentialité des
informations est un aspect important qu’un SGBD relationnel doit prendre en
compte.
La confidentialité peut être renforcée par l’utilisation de vues (VIEWs) qui
agissent comme des fenêtres sur la base de données.
Les vues correspondent à ce qu’on appelle « le niveau externe » qui reflète
la partie visible de la base de données pour chaque utilisateur.
Seules les tables contiennent des données et, pourtant, pour l’utilisateur,
une vue apparaît comme une table.
En théorie, les utilisateurs ne devraient accéder aux informations qu’en
questionnant des vues.
Les vues masquent la structure des tables interrogées.
En pratique, la plupart des applications se passent de ce concept en
manipulant directement les tables.
Les Vues
Les Vues
Création d’une vue
Vous devez posséder le privilège CREATE VIEW et les privilèges en SELECT des
tables présentes dans la requête de définition de la vue.
La syntaxe SQL de création d’une vue est la suivante :
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW [nomBase.]nomVue [(listecolonnes)]
AS requêteSELECT
[WITH [CASCADED | LOCAL] CHECK OPTION];