Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Ingénierie Des Bases de Données: Licence en Sciences Informatique

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 28

Institut Supérieur des Sciences Appliquées et de Technologie de Sousse

Ingénierie des Bases de Données

Licence en Sciences Informatique


Imen MOALLA
imen.moalla@hotmail.fr

Année universitaire : 2020-2021


Le Langage SQL
( Structured Query Language)

2
Présentation de SQL

 SQL est un langage déclaratif destiné à la


manipulation de bases de données au sein des
SGBDR qui répandant à la fois aux problématiques
de création des objets de base de données
(modèle), de manipulation des données, de gestion
de la sécurité, et de traitements locaux de données
 Il est utilisé par les principaux SGBDR du marché :
Oracle, SQL Server, MySQL, Access, DB2,…

3
Présentation de SQL

 Langage de définition de données (schéma, LDD)


 Création de table (relation): CREATE TABLE
 Modification de table (relation): ALTER TABLE
 Suppression de table (relation): DROP TABLE
 Vues: CREATE VIEW

 Langage de manipulation de données (schéma,


LMD)
 Insertion de tuples: INSERT
 Mise à jour des tuples : UPDATE
 Suppression de tuples : DELETE

4
Présentation de SQL

 Langage de contrôle de données (LCD)


 Pour gérer les droits sur les objets de la base (création
des utilisateurs et affectation de leurs droits)
 GRANT et REVOKE

 Langage de contrôle de données (TCL)


 Pour la gestion des transactions (validation ou annulation
de modifications de données dans la BD)
 BEGIN et END TRANSACTION
 COMMIT et ROLLBACK

5
Création des tables

 La création d’une table consiste à définir son nom,


les colonnes qui la composent et leurs type
 Syntaxe
Pour créer une table, on fait recours à l’instruction
suivante :
CREATE TABLE nom_table
( Nom_attribut 1 type1,
Nom_attribut 2 type2,
……,
PRIMARY KEY (nom_attribut_clé),
FOREIGN KEY (nom_attribut_clé_étrangère)
REFERENCES nom_table( nom_attribut_clé_étrangère ) );

6
Création des tables
 Type des données
- NUMBER( N ) : Entier à N chiffres
- NUMBER( N , M ) : Réel à N chiffres au total, M après la
virgule.
- DATE : Date complète (date et/ou heure)
- VARCHAR( N ), VARCHAR2( N ) : chaîne de N caractères
(longueur variable).
- CHAR( N ) : Chaîne de N caractères (longueur fixe).

7
Contraintes d'intégrité
Une contrainte d'intégrité est une règle qui définit la
cohérence d'une donnée ou d'un ensemble de données
de la BD

 Contrainte sur une colonne (contrainte-col)


 NULL/NOTNULL : Interdit une colonne de contenir une valeur nulle
 UNIQUE : Interdit deux tuples de la relation aient la même valeur pour
l'attribut.

 PRIMARY KEY: définit l'attribut comme la clé primaire

8
Contraintes d'intégrité
 Contrainte sur une table (contrainte-table)
UNIQUE (liste d'attributs): Interdit que deux tuples de la
relation aient les mêmes valeurs pour l'ensemble des attributs
de la liste.
PRIMARY KEY(liste d'attributs): Définit les attributs de la liste
comme la clé primaire
FOREIGN KEY (liste d'attibuts) REFERENCES nom-table
[(nomes-cols)]: Contrôle l'intégrité référentielle entre les
attributs de la liste et la table et ses colonnes spécifiées

9
Exemple de création de tables
Etudiant (NumEtud, NomEtud, PrenomEtud, #NumClass)
Classe (NumClass, NomClass)
CREATE TABLE CLASSE (
NUMCLASSE NUMBER(5),
NOMCLASSE VARCHAR2(10),
PRIMARY KEY(NUMCLASSE) ) ;

CREATE TABLE ETUDIANT (


NumEtud NUMBER(5) PRIMARY KEY,
NOM VARCHAR2(10),
PRENOM VARCHAR2(10),
NUMCLASSE VARCHAR2(10),
FOREIGN KEY(NUMCLASSE) REFERENCES CLASSE(NUMCLASSE) );

10
Suppression / Modification d’une table
 Suppression des tables
 Syntaxe
Pour supprimer le contenu d’une table ainsi que son schéma, on
utilise l’instruction qui suit :
DROP TABLE nom_table ;
 Remarque : Attention, la suppression d’une table engendre la
perte des données qu’elle contient.
 Exemple
Pour supprimer la table ETUDIANT ainsi que son contenu, on fait
recours à l’instruction :
DROP TABLE ETUDIANT ;

11
Suppression / Modification d’une table
 Modification des tables
Il existe plusieurs modifications que l’on peut effectuer sur une table
donnée:
 Ajout d’attributs
Après avoir créé la base de données, des tâches de maintenance
semblent être parfois nécessaires. D’où l’ajout d’un nouvel attribut:
ALTER TABLE nom_table
ADD (attribut type);
 Exemple
Ajouter le champ Numéro téléphone à la table Etudiant revient à
écrire :
ALTER TABLE Etudiant
ADD (Num_tel varchar(10));

12
Suppression / Modification d’une table
 Modification des attributs
Après avoir créé la base de données, on peut modifier le type
d’un attribut en utilisant l’instruction suivante :
ALTER TABLE nom_table
MODIFY (attribut type);

 Exemple
Modifier le nombre de chiffres du champ Num_tel de la table
Etudiant nécessite le recours à l’instruction :
ALTER TABLE Etudiant
MODIFY (Num_tel varchar(8));

13
Manipulation de données
 Ajout de données
Pour ajouter une ligne (tuple) dans une table, on procède
comme suit :
INSERT INTO nom_table
VALUES ( valeur_attribut1, valeur_attribut2, … ) ;
 Exemple
Etant donné la table Etudiant (NumEtud, nom, prenom, ville). Si
on souhaite insérer les informations d’un nouvel étudiant
disposant des informations suivantes (1234, Ben Salah, Salah,
Djerba), on écrit :
INSERT INTO ETUDIANT
VALUES (1234, BEN SALAH, SALAH, DJERBA) ;

14
Manipulation de données
 Modification de données
Pour modifier la valeur d’un attribut relatif à un ou plusieurs
tuples d’une table, on procède comme suit :
UPDATE nom_table
SET attribut1 = valeur1, attribut2 = valeur2
[WHERE condition];
 Exemple
Modifier la ville de l’étudiant Salah Ben Salah qui habite
maintenant à Tunis, on écrit dans ce cas :
UPDATE ETUDIANT
SET VILLE=TUNIS
WHERE NumEtud=1234;

15
Manipulation de données
Suppression de données
Il s’agit de supprimer un ou plusieurs tuples d’une table.
Pour ce faire, on écrit :
DELETE FROM nom_table
[WHERE condition];

 Exemple
Supprimer l’étudiant de NumEtd 1234 de la table
Etudiant, on écrit :
DELETE FROM ETUDIANT
WHERE NumEtd =1234 ;

16
Interrogation de données
 Généralités
Il s’agit de chercher un ou plusieurs tuples de la base de données.
Syntaxe :
 Ai un nom d’attribut (de colonne)
SELECT A1,…., A2  Rj un nom de relation (de table)
 FROM définit à partir de quelles
FROM R1,……., Rm
tables le résultat est calculé
[WHERE [condition]  WHERE définit les prédicats de
sélection du résultat
Group by <expression>;  Group by regroupe les lignes pour les
valeurs égales dans les colonnes
Having <expression>; mentionnées
 Having sélectionne les groupes de
Order by [ DESC/ASC];] lignes satisfaisant la condition
 Order by précise si le tri se fait de
manière croissante (par défaut) ou
décroissante 17
Interrogation de données
 Projection
Tous les attributs d’une table :
SELECT *
FROM nom_table;
Exemple
Afficher la liste de tous les étudiants
SELECT * FROM ETUDIANT;
Quelques attributs :
SELECT attribut1, attribut2,…
FROM nom_table;
 Exemple
Afficher la liste des noms des étudiants
SELECT NOM
FROM ETUDIANT;
18
Interrogation de données
 Restriction
Les restrictions se traduisent en SQL à l’aide du prédicat « WHERE »
comme suit :
SELECT attribut1, attribut2, FROM nom_table
WHERE conditions;
Une conditions simple est la comparaison entre deux
expressions ou plus au moyen d’un opérateur logique (=, !=, <,
<=, >, >=)
 Exemple 1
Liste des étudiants qui s’appellent Ali
SELECT * FROM ETUDIANT
WHERE PRENOM = ‘ALI’;

19
Interrogation de données
 Exemple 3
Liste des étudiants qui ne s’appellent pas Ali
SELECT * FROM ETUDIANT
WHERE PRENOM != ‘ALI’;
 Exemple 4
Liste des étudiants ayant les NumEtd inférieurs à 100
SELECT * FROM ETUDIANT
WHERE NumEtd < 100;
 Exemple 5
Liste des étudiants ayant les NumEtd compris entre 100 et 200
SELECT * FROM ETUDIANT
WHERE NumEtd BETWEEN 100 AND 200 ;

20
Interrogation de données
 Jointures
 La jointure permet de combiner deux ou plusieurs tables afin d’en
extraire des données.
 La jointure est réalisé à l’aide d’une colonne commune aux tables
qui habituellement est la clé primaire
 Lorsqu’une colonne projetée se retrouve dans les deux tables à
joindre, le nom de la colonne projetée doit être précédé du nom
de la table d’où les données seront extraites
 Lorsqu’une colonne projetée se retrouve dans une seule parmi les
tables à joindre, il n’est pas nécessaire d’indiquer le nom de la
table

21
Interrogation de données
 Exemple de requête de jointure simple:
TableA (idTableA,colonne1,colonne2)
TableB (idTableB, colonne1, colonne2, #idtableA)

SELECT TableA.colonne1, colonne 2


FROM TableA, TableB
WHERE TableA.idTableA= TableB.idTableA

 Les alias de table servent à nommer temporairement les tables


de jointure pour écourter l’instruction SQL et la rendre plus lisible.

SELECT TA.colonne1, colonne2, colonne3


FROM TableA TA, TableB TB
WHERE TA.idTableA= TB.idTableA
22
Interrogation de données
 Exemple de jointure sur la même table :

Lister des couples de films de la même année.


SELECT f1.Title, f2.Title
FROM Film f1, Film f2
WHERE f1.Title <> f2.Title AND f1.Year = f2.Year

23
Interrogation de données
 Exemple de jointure entre deux tables :

Lister les salles de cinéma affichant des films de


2005
SELECT t.TheaterName
FROM Film f, Theater t
WHERE f.Title = t.Title
AND f.Director = t.Director
AND f1.Year = 2005; 24
Interrogation de données
 Exemple de jointure entre deux tables:
STUDENTS [StudNb, Name, Address]
INSCRIPTION [CourseCode, Year, Time, #StudNb]

Lister les noms des étudiants inscrits dans le cours


BD1-2019
SELECT S.Name
FROM Students S, INSCRIPTION I
WHERE (S.StudNb=I.StudNB) and (I.CourseCode = ’BD1-
2019’) ;

25
Fonctions d’aggrégation
 Une fonction d’aggregation calcule une valeur à partir d’une
liste de valeurs dans une colonne.
 SQL permet AUSSI de grouper des tuples d’une relation selon
certains critères, comme la valeur d’une autre colonne.
 Ces opérateurs sont appliqués dans une clause SELECT

 SUM: somme des valeurs des tuples sélectionnées


 AVG: moyenne des valeurs
 MIN: valeur Minimum
 MAX: valeur Maximum
 COUNT: nombre de tuples sélectionnées

26
Fonctions d’aggrégation
 Exemple:

STUDENTS [Number, Name, Address, Age]


INSCRIPTION [#StudNb, #CourseCode, Year, Time]
COURSE [CourseCode, CourseT itle, CreditNb, HoursNb]

Trouver la moyenne d’age des étudiants habitant Blois

SELECT AVG (Age) FROM STUDENTS


WHERE Address = ’Blois’ ;
Combien d’étudiants avons nous?

SELECT count(*)
FROM STUDENTS ;
27
Fonctions d’aggrégation
 Exemple:

STUDENTS [Number, Name, Address, Age]


INSCRIPTION [StudNb, CourseCode, Year, Time]
COURSE [CourseCode, CourseT itle, CreditNb, HoursNb]

 Donner le nom et l'Age de l’étudiant le plus âgé

SELECT S.Name, S.Age


FROM STUDENTS S
WHERE S.Age = (SELECT MAX (S2.age) FROM STUDENTS S2);

28

Vous aimerez peut-être aussi