Vous êtes sur la page 1sur 15

Capocchi Laurent

capocchi@univ-corse.fr
http://lcapocchi.free.fr
Sommaire
 SQL
 Concepts

 Opérations relationnelles avec SQL

SQL  Gestion des tables de vues


 Gestion des données
 Exercices

Bases de données
Multimédia
IUT LPTAIS

1 2
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Concepts Concepts
 Concepts du langage SQL  Concepts du langage SQL
 SQL est un sous-produit issu des travaux du groupe System-R.  La norme SQL prévoit trois niveaux de conformité:
 C'estune réalisation pratique des concepts de l'approche  Le niveau d'entrée,
relationnelle chez IBM.
 Le niveau intermédiaire,
 C'est
une évolution du langage SEQUEL, lui même dérivé du
 Le niveau complet.
langage de recherche SQUARE.
 LesSGBD respectent en générale le premier niveau et adopte
 SQL est normalisé ISO depuis 1987.
certains éléments des autres niveaux.
 SQL2 adopté en 1992.
 La
normalisation du langage garantit la portabilité générale des
 SQL3 normalisé en 1999 prend en compte l'approche objet. applications d'un SGBD à un autre.
 La quasi-totalité des SGBD disposent d'une interface SQL.

3 4
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Concepts Concepts
 Concepts du langage SQL  Concepts du langage SQL
 SQL manipule l'objet fondamental de l'approche relationnelle:  Lelangage de programmation qui intègre SQL est appelé
la relation représentée par une table langage hôte.
 SQL est dit « non procédural », (on ne décrit pas la manière  Desdifférences peuvent apparaître entre une requête SQL
d'effectuer les opérations pas à pas). exprimée interactivement et la version intégrée dans le langage
de programmation.
 Le SGBD choisit la méthode utilisée pour y parvenir.
 Il
existe une extension « procédurale » de SQL qui ajoute les
 SQL ne dispose pas d'instruction de structuration (boucles). fonctions, procédures et méthodes à SQL.
 Pour effectuer ce type d'opérations, on utilise un langage de Programme en
programmation « classique » comme le C, php, Java... langage hôte
+ SQL
 Les instructions SQL sont intégrées dans un langage
via une interface spécifique. Bibliothèque
fonctions SQL
 Les résultats d'un requête sont stockés
dans une structure de données. SGBD

5 6
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Opérations relationnelles avec SQL Opérations relationnelles avec SQL


 Exemple de la « casse »  Projection (SELECT)

voiture  Elleconsiste à sélectionner la (les) colonne(s) que l'on veut voir


personne figurer dans la table « résultat ».
NumVoit Marque Type Couleur
NumAch Nom Age Ville Sexe 1 Peugeot 404 Rouge
1 Nestor 96 Paris M 2 Citroen SM Noire
2 Irma 20 Lille F SELECT Nom, Ville Nom Ville
3 Opel GT Blanche
3 Henri 45 Paris M 4 Peugeot 403 Blanche
Nestor Paris
FROM personne;
4 Josette 34 Lyon F 5 Renault Alpine A310 Rose Irma Lille
5 Jacques 50 Bordeaux M 6 Renault Floride Bleue Henri Paris
Josette Lyon
Jacques Bordeaux
vente
DateVente Prix NumVoit NumArch
03/12/85 10000 1 1
30/03/96 70000 2 4
14/06/98 30000 4 1
02/04/00 45000 5 2

7 8
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Opérations relationnelles avec SQL Opérations relationnelles avec SQL
 Projection (SELECT)  Projection (SELECT)
NumAch Nom Age Ville Sexe
1 Nestor 96 Paris M  Valeurs distinctes d'une colonne: afin d'éliminer les doublons
SELECT *
FROM personne; 2 Irma 20 Lille F éventuels des valeurs d'une colonne de la table « résultat », on
3 Henri 45 Paris M fait précéder le nom de la colonne par le mot clé DISTINCT.
4 Josette 34 Lyon F
5 Jacques 50 Bordeaux M
SELECT DISTINCT Marque
 Lescolonnes de la table « résultat » peuvent être renommées FROM voiture;
par le mot clé AS.
Voiture
SELECT Ville AS City
NumVoit Marque Type Couleur Marque
FROM personne; City 1 Peugeot 404 Rouge
Paris Peugeot
2 Citroen SM Noire
Lille 3 Opel GT Blanche Citroen
Paris 4 Peugeot 403 Blanche Opel
Lyon 5 Renault Alpine A310 Rose Renault
Bordeaux 6 Renault Floride Bleue

9 10
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Opérations relationnelles avec SQL Opérations relationnelles avec SQL


 Projection (SELECT)  Projection (SELECT)
 Utilisation d'expression pour créer une colonne: Les valeurs des  SQL dispose de nombreuse autres fonctions intégrées parfois
colonnes (lignes) de la table « résultat » peuvent être dépendantes du SGBD utilisé, qui permettent par exemple le
constituées par des expressions construites avec les opérateurs traitement des colonnes de type caractères, date...
+, -, *, /, %
NomMaj
SELECT UPPER(Nom) AS NomMaj NESTOR
FROM personne; IRMA
SELECT Prix, DateVente, (Prix/6.5596) AS Prix_Euros
HENRI
FROM vente; JOSSETTE
JACQUES
Vente
DateVente Prix NumVoit NumArch
03/12/85 10000 1 1
30/03/96 70000 2 4
14/06/98 30000 4 1 Mois
02/04/00 45000 5 2 Prix DateVente Prix_Euros SELECT MONTH(DateVente) AS Mois 12
10000 03/12/85 1524.483200 FROM vente; 3
70000 30/03/96 10671.382401 6
30000 14/06/98 4573.449601 4
45000 02/04/00 6860.174401
11 12
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Opérations relationnelles avec SQL Opérations relationnelles avec SQL
 Projection (SELECT)  Sélection ou Restriction (WHERE)
 Utilisation de fonctions statistiques sur toutes les valeurs.  Consiste à indiquer un ou plusieurs critères pour choisir les
lignes à inclure dans la table « résultat ».
 SQL ne permet pas de réaliser des boucles !
 Ces critères utilisent le contenu des valeurs des colonnes.
 Les colonnes de la table « résultat » peuvent être constituées
de résultats de fonctions statistiques intégrées à SQL:  Le critère de sélection est indiqué à la suite du mot clé WHERE.
COUNT Comptage du nombre d'éléments (lignes) de la table  Il
MAX Maximum des éléments d'une colonne
est constitué d'expressions de conditions composées à l'aide
MIN Minimum des éléments d'une colonne d'opérateurs de comparaison et combinées à l'aide de
AVG Moyenne des éléments d'une colonne connecteurs logiques.
SUM Somme des éléments d'une colonne
 Opérateurs de comparaison SQL:
SELECT AVG(Prix) AS Prix_Moyen Prix_Moyen
FROM vente; 38750.0000 <> Différent Valeur <valeur> AND <valeur> Appartient à un intervalle
< Inférieur IN <liste de valeurs> Appartient à un ensemble de valeurs
SELECT COUNT(*) AS Nombre_Personne > Supérieur IS NULL Teste si la colonne n'est pas renseignée
FROM personne; Nombre_Personne <= Inférieur ou égale LIKE Compare des chaînes de caractères
5 >= Supérieur ou égale
13 14
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Opérations relationnelles avec SQL Opérations relationnelles avec SQL


 Sélection ou Restriction (WHERE)  Sélection ou Restriction (WHERE)

SELECT * SELECT *
FROM vente FROM voiture
WHERE Prix > 50000; WHERE Couleur=''Blanche'' OR Marque=''Peugeot'';
DateVente Prix NumVoit NumArch
30/03/96 70000 2 4

SELECT * NumVoit Marque Type Couleur


1 Peugeot 404 Rouge
FROM voiture 3 Opel GT Blanche
WHERE Couleur IN (''Blanc'',''Rouge''); SELECT * 4 Peugeot 403 Blanche
FROM personne
NumVoit Marque Type Couleur WHERE NOT (Ville='Paris');
1 Peugeot 404 Rouge
SELECT *
FROM personne
WHERE Age BETWEEN 40 AND 60; NumAch Nom Age Ville Sexe
2 Irma 20 Lille F
NumAch Nom Age Ville Sexe 4 Josette 34 Lyon F
3 Henri 45 Paris M 5 Jacques 50 Bordeaux M
5 Jacques 50 Bordeaux M
15 16
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Opérations relationnelles avec SQL Opérations relationnelles avec SQL
 Agrégats ou Groupage (GROUP BY)  Agrégats ou Groupage (GROUP BY)
 Lesopérations d'agrégation ou de groupage regroupent les lignes SELECT Ville, AVG(Age) AS Moyenne_Age
d'une table par valeurs contenues dans une colonne. FROM personne
 Pour réaliser cette opération avec SQL, on utilise le mot clé GROUP BY Ville; Ville Moyenne_Age
GROUP BY suivi du nom de la colonne sur laquelle s'effectue Bordeaux 50
l'agrégat. Lille 20
Marque Lyon 34
SELECT Marque Peugeot Paris 70.5
FROM voiture Citroen
Opel
GROUP BY Marque;
Renault

SELECT Marque, COUNT(*) AS Compte Marque Compte


FROM voiture Peugeot 2
GROUP BY Marque; Citroen 1
Opel 1
Renault 2

17 18
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Opérations relationnelles avec SQL Opérations relationnelles avec SQL


 Agrégats ou Groupage (GROUP BY)  Agrégats ou Groupage (GROUP BY)
 Restriction sur le résultat.  Restriction sur le résultat.
 Le résultat de l'opération de groupage peut être filtré !  Supposons que l'on veuille éliminer les voitures rouges de notre
calcul:
 Si
on reprend l'exemple qui a permis de calculer le nombre de
voitures par marques. SELECT Marque, COUNT(*) AS Compte
 Onsuppose que l'on élimine du résultat les marques dont on FROM voiture
possède moins de deux voitures en considérant que ces WHERE NOT (Couleur='Rouge')
GROUP BY Marque; Marque Compte
marques ne sont pas représentatives du parc: Peugeot 1
Citroen 1
SELECT Marque, COUNT(*) AS Compte Opel 1
FROM voiture Renault 2
GROUP BY Marque Marque Compte
HAVING Compte > 1; Peugeot 2
Renault 2

19 20
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Opérations relationnelles avec SQL Opérations relationnelles avec SQL
 Requêtes sur plusieurs tables  Requêtes sur plusieurs tables
 Lorsque l'on utilise plusieurs tables dans une requête SQL, il peut  Cettenotation peut devenir vite fastidieuse si le nombre de
exister une ambiguïté dans les expressions sur les noms de tables est élevé et si leurs noms sont longs.
colonnes.
 Utiliser un alias est plus commode !
 Deux tables peuvent avoir une colonne de nom identique.
 On prefixera le nom de la colonne par le nom de la table. SELECT vo.Marque, vo.Couleur
FROM voiture AS vo;
SELECT voiture.Marque, voiture.Couleur
Marque Couleur
FROM voiture;
Peugeot Rouge
Marque Couleur Citroen Noire
Peugeot Rouge Opel Blanche
Citroen Noire Peugeot Blanche
Opel Blanche Renault Rose
Peugeot Blanche Renault Bleue
Renault Rose
Renault Bleue
21 22
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Opérations relationnelles avec SQL Opérations relationnelles avec SQL


 Requêtes sur plusieurs tables  Requêtes sur plusieurs tables
 Produit cartésien  Jointure interne (INNER JOIN)
 C'est la combinaison de toutes les lignes d'une table avec toutes  Ellepermet de lier deux tables entre elles en introduisant un
les lignes d'une autre sans tenir compte du sens des données. critère de « sens des données ».
 En SQL:  Peut s'exprimer de différente manière en SQL:

SELECT *
 Traité de manière pas optimal par le SGBD
FROM personne, voiture;
SELECT voiture.Marque, voiture.Couleur, vente.Prix
 Lenombre de lignes de la table « résultat » est égal au produit FROM voiture, vente
du nombre de lignes des deux tables. WHERE voiture.NumVoit=vente.NumVoit;
 Lescolonnes sont celles des deux tables simplement
juxtaposées. Marque Couleur Prix
Peugeot Rouge 10000
Citroen Noire 70000
Peugeot Blanche 30000
Renault Rose 45000
23 24
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Opérations relationnelles avec SQL Opérations relationnelles avec SQL
 Requêtes sur plusieurs tables  Requêtes sur plusieurs tables
 Jointure interne (INNER JOIN)  Jointure interne (INNER JOIN)
 Une autre solution: utiliser l'opérateur de jointure JOIN  Il est possible d'effectuer la jointure sur plus de deux tables:

SELECT voiture.Marque, voiture.Couleur, vente.Prix SELECT vo.Marque, vo.Couleur, ve.Prix, pe.Nom, pe.Age
FROM vente JOIN voiture ON FROM voiture AS vo, vente AS ve, personne AS pe
voiture.NumVoit=vente.NumVoit; WHERE (vo.NumVoit=ve.NulVoit) AND
(pe.NumAch=ve.NumAch);
 Le traitement de la requête est alors optimisée par le SGBD. ou
 Important car l'opération de jointure est complexe à
SELECT vo.Marque, vo.Couleur, ve.Prix, pe.Nom, pe.Age
réaliser pour un SGBD et est coûteuse en temps et
FROM voiture AS vo JOIN vente AS ve JOIN personne AS
ressources. pe
ON (vo.NumVoit=ve.NumVoit) AND (pe.NulAch=ve.NumAch)

25 26
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Opérations relationnelles avec SQL Opérations relationnelles avec SQL


 Requêtes sur plusieurs tables  Requêtes sur plusieurs tables
 Jointure externe (OUTER JOIN)  Jointure externe (OUTER JOIN)
 L'opération
de jointure interne ne permet pas de répondre à des  Dansla requête qui suit, toutes les lignes de la table 'voiture'
questions du type: « Quelles sont les voitures qui n'ont pas été seront affichées, y compris celles pour lesquelles la colonne
vendues ? » 'NumVoit' n'a pas de correspondance dans 'vente'
 Il faut utiliser la jointure externe !  Lescolonnes issues de 'vente' ne pourront alors être mise en
correspondance et auront la valeur NULL.
 L'opérateur SQL de jointure externe s'exprime par le mot clé
OUTER JOIN SELECT voiture.NumVoit, vente.NumVoit, voiture.Marque,
 Cetteopération n'est pas symétrique: soit on inclut toutes les voiture.Couleur, vente.Prix
lignes d'une table, soit toutes celles de l'autre. FROM voiture LEFT OUTER JOIN vente ON
voiture.NumVoit=vente.NumVoit
 On précise cela à l'aide des mots clés LEFT et RIGHT. NumVoit NumVoit Marque Couleur Prix
1 1 Peugeot Rouge 10000
2 2 Citroen Noire 70000
3 NULL Opel Blanche NULL
4 4 Peugeot Blanche 30000
5 5 Renault Ros e 45000
6 NULL Renault Bleue NULL
27 28
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Opérations relationnelles avec SQL Opérations relationnelles avec SQL
 Requêtes sur plusieurs tables  Tri du résultat d'une requête
 Jointure externe (OUTER JOIN)  On utilise le mot clé ORDER BY pour spécifier la (les) colonne(s)
sur laquelle (lesquelles) on souhaite trier le résultat.
 « Quelles sont les voitures qui n'ont pas été vendues ? » SELECT Marque, Type
 Il
faut sélectionner les lignes dont l'une des colonnes issues de FROM voiture
la table 'vente' n'a pas pu être mise en correspondance avec ORDER BY Marque
une ligne de la table 'voiture'.  Il
est possible de préciser l'ordre de tri par les mots clés ASC
(croissant par défaut) ou DESC (décroissant).
SELECT voiture.NumVoit, voiture.Marque,
SELECT Prix, DateVente
voiture.Couleur, vente.Prix
FROM vente
FROM voiture LEFT OUTER JOIN vente ON
ORDER BY Prix DESC;
voiture.NumVoit=vente.NumVoit
WHERE vente.Prix IS NULL  Onpeut indiquer plusieurs critères de tri, qui sont lus et traités
de gauche à droite (ici par ville et par âge)
NumVoit Marque Couleur Prix
3 Opel Blanche NULL
SELECT Nom, Age, Ville
6 Renault Bleue NULL FROM personne
ORDER BY Ville, Age;
29 30
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Gestion de tables et de vues Gestion de tables et de vues


 Tables  Tables
 SQLpossède une partie manipulation des données (LMD) pour  Création
gérer les tables.
 C'est lors de cette étape que l'on définit:
 Lesopérations de création, de suppression et de modification des
tables mettent à jour le dictionnaire des données du SGBD.
 le type de données,

 Ledictionnaire des données est une structure propre au SGBD


 la clé,
qui contient la description des objets du SGBD (base de  les index éventuelles
données ,tables, colonnes, etc.).
 les contraintes de validation
 Pourpouvoir gérer une table, il faut disposer des droits sur la
base de données qui la contient.  La forme générale de l'instruction de création:

CREATE TABLE <Nom de la table> (liste des colonnes


avec leur type séparé par , );
 Le nom de la table ou d'une colonne ne doit pas dépasser 128
caractères.
31 32
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Gestion de tables et de vues Gestion de tables et de vues
 Tables  Tables
 Création  Création

 Création de la table 'voiture'  Table issu du résultat d'une requête en utilisant AS

CREATE TABLE voiture ( CREATE TEMPORARY TABLE resultat


NumVoit INT, AS
Marque CHAR(40), (SELECT Vo.Marque, Vo.Couleur
Type CHAR(30), FROM voiture AS Vo);
Couleur CHAR(20)
 Type de données
);
 Création de table temporaire
 Le type des données est choisi essentiellement en fonction des
opérations qui sont effectuées sur la colonne.
CREATE TEMPORARY TABLE temporaire (  Le choix du type permet de mettre un premier niveau de
Identifiant INT, restriction sur le contenu des données.
Jour DATE,
Valide BOOLEAN
);
33 34
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Gestion de tables et de vues Gestion de tables et de vues


 Tables  Tables
 Création  Suppression

 Type de données numériques  La commande DROP TABLE permet de supprimer une table.
INT Entier standard (32 bits)
SMALLINT Entier « petit » (16 bits)
REAL Réel (taille spécifique au SGBD)  Siune table est dans une autre table (contrainte d'intégrité
FLOAT Réel (représenté sur 'n' bits)
référentielle), le SGBD refuse en générale de la supprimer.
 Type de données chaînes de caractères
 Il utilise l'option RESTRICT par défaut
CHAR(n) Chaîne de caractères de longueur 'n' (codage ASCII 1 octet)
VARCHAR(n) Chaîne de caractères de longueur maximale 'n' (codage ASCII 1 octet)
NCHAR(b) Chaîne de caractères de longueur 'n' (codage Unicode 2 octets)  L'option CASCADE permet de la supprimer !
NVARCHAR(b) Chaîne de caractères de longueur maximal 'n' (codage Unicode 2 octets)
 Dans l'exemple de la casse, la table 'vente' utilise la table
 Type de données date
'voiture' comme table de référence pour le contenu de la
DATE Date colonne 'NumVoit'
TIME[(n)] Heure, n (optionnel) est le nombre de décimales représentant la fraction de secondes
 On ne peut pas supprimer la table 'voiture' avant 'vente'
 Type de données binaires
BOOLEAN Booléen
BLOB Binary Large Object: permet de stocker tout type bianaire (photo,..)
DROP TABLE voiture CASCADE
35 36
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Gestion de tables et de vues Gestion de tables et de vues
 Tables  Tables
 Modification  Modification
voiture
 La NumVoit Marque Type Couleur Enplus
commande ALTER TABLE permet de modifier la structure de SELECT * FROM voiture; 1 Peugeot 404 Rouge NULL
la table: 2 Citroen SM Noire NULL
3 Opel GT Blanche NULL
 Ajouter des colonnes, 4 Peugeot 403 Blanche NULL
5 Renault Alpine A310 Rose NULL
 Supprimer des colonnes, 6 Renault Floride Bleue NULL

 Modifier des colonnes, ALTER TABLE voiture


DROP COLUMN Couleur;
 Ajout de la colonne en plus dans la table 'voiture':
voiture
SELECT * FROM voiture; NumVoit Marque Type Enplus
ALTER TABLE voiture
1 Peugeot 404 NULL
ADD COLUMN enplus INT; 2 Citroen SM NULL
3 Opel GT NULL
4 Peugeot 403 NULL
5 Renault Alpine A310 NULL
6 Renault Floride NULL
37 38
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Gestion de tables et de vues Gestion de tables et de vues


 Tables  Contraintes d'intégrité
 Modification  Ledomaine définit l'ensemble des valeurs que peut prendre un
attribut.
 Il
n'est pas possible de modifier directement le nom d'une
colonne ou son type.  Auniveau SQL, une première approche est établit par le choix du
type de la colonne mais cela n'est pas assez restrictif.
 Il
faut pour cela écrire une série d'opérations, en utilisant par
exemple des colonnes temporaires.  SQL permet de définir des conditions de validité plus fines que
l'on nome contrainte d'intégrité.
 Voici
la suite d'instruction pour modifier le nom de la colonne
'Couleur' de la table 'voiture' en 'Teinte' en changeant son type.  C'est le SGBD qui applique ces conditions au moment de
l'insertion, de la modification ou de la suppression des données.
ALTER TABLE voiture
 Cetteétape est fastidieuse mais elle garantit la cohérence des
ADD COLUMN Teinte CHAR(60);
UPDATE voiture données et évite de se retrouver avec des bases de données,
SET Teinte=Couleur; conceptuellement correcte, mais inutilisable fautes de données
ALTER TABLE voiture valides.
DROP COLUMN Couleur;
39 40
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Gestion de tables et de vues Gestion de tables et de vues
 Contraintes d'intégrité  Contraintes d'intégrité
 Différents type de contraintes sur les colonnes:  Propriétés générales
 Les propriétés générales de contraintes sur les colonnes.  La valeur de la colonne doit être renseignée (NOT NULL)
 Les restrictions d'appartement à un ensemble.  Lavaleur doit être unique comparée à toutes les valeurs de la
colonne de la table (UNIQUE)
 Les dépendances entre plusieurs colonnes.
 Lorsque ces deux conditions sont réunis, la colonne peut
contenir une clé candidate qui est spécifié par PRIMARY KEY.
 Ici,
on indique que la colonne 'NumAch' est choisie comme clé et
que la colonne 'Nom' doit toujours être renseignée:

CREATE TABLE personne(


NumAch INT PRIMARY KEY,
Nom CHR(20) NOT NULL,
Age INT
);
41 42
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Gestion de tables et de vues Gestion de tables et de vues


 Contraintes d'intégrité  Contraintes d'intégrité
 Propriétés générales  Condition d'appartenance à un ensemble
 Si
aucune mention n'est précisée (comme 'Age'), elle peut être  Description du domaine dans lequel la colonne pourra prendre
renseignée ou non. ses valeurs.
 Attentionune colonne non renseignée (ie contient NULL pour  En donnant la liste de tous ces éléments constitutifs (IN)
SQL) signifie qu'elle ne contient aucune données, et non pas
qu'elle contient 0 pour une colonne de type entier.
 Exemple: on vérifie que la colonne 'Couleur' ne peut prendre
que des valeurs « normalisées »: 'Rouge', 'Vert' ou 'Bleue'
 Onindique la liste des colonnes constitutives de la clé à la suite
du mot PRIMARY KEY: CREATE TABLE voiture (
NumVoit INT PRIMARY KEY,
CREATE TABLE vente ( Marque CHAR(30) NOT NULL,
DateVente DATE, Type CHAR(20),
Prix INT, Couleur CHAR(40),
NumArch INT, CHECK Couleur IN ('Rouge','Vert','Bleue')
NumVoit INT, );
PRIMARY KEY (NumAch, NumVoit));
43 44
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Gestion de tables et de vues Gestion de tables et de vues
 Contraintes d'intégrité  Contraintes d'intégrité
 Condition d'appartenance à un ensemble  Condition d'appartenance à un ensemble
 Description du domaine dans lequel la colonne pourra prendre  Description du domaine dans lequel la colonne pourra prendre
ses valeurs. ses valeurs.
 Par une expression (<,>,BETWEEN,...)  Parune référence aux valeurs d'une colonne d'une autre table
(REFERENCES)
 Exemple: l'age est compris entre 1 et 80.
 Exemple: les valeurs identifiantes des personnes 'NumAch' et des voitures
CREATE TABLE personne ( 'NumVoit' de la table 'vente' existent bien dans les tables de référence
'personne' et 'voiture':
NumAch INT PRIMARY KEY,
Nom CHAR(20) NOT NULL, CREATE TABLE vente (
Ville CHAR(40), DateAch DATE,
Age INT NOT NULL, Prix INT,
NumAch INT NOT NULL REFERENCES personne (NumAch),
CHECK (Age BETWEEN 1 AND 80)
NumVoit INT NOT NULL REFERENCES voiture (NumVoit),
); PRIMARY KEY (NumAch, Numvoit)
);

45 46
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Gestion de tables et de vues Gestion de tables et de vues


 Contraintes d'intégrité  Vues (CREATE VIEW)
 Condition sur plusieurs colonnes (contrainte de table)  Unevue est le résultat d'une requête que l'on peut manipuler de
la même façon qu'une table.
 On utilise le mot clé CONSTRAINTE.
 Onpeut considérer une vue comme une table dynamique dont le
 Exemple:on vérifie que les colonnes 'Age' et 'ville' doivent être contenu est recalculé à chaque utilisation.
renseignées ou vides en même temps.
 Onutilise les vues pour des raisons de commodité ou encore de
CREATE TABLE personne ( sécurité/confidentialité en renseignant l'accès à certaines
NumAch INT PRIMARY KEY, données.
Nom CHAR(20) NOT NULL,
Ville CHAR(40), CREATE VIEW personne_bis (NumAch, Nom, Age) AS
Age INT, SELECT NumAch, nom, Age
CONSTRAINT la_contrainte CHECK ((Age IS NOT NULL AND FROM personne;
Ville IS NOT NULL) OR (Age IS NULL AND Ville IS NULL))
);

47 48
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Gestion des données Gestion des données
 Trois opérations pour gérer les données d'une table:  Insertion (INSERT INTO)
 Insertion: enregistrement par enregistrement ou à partir d'un  Différentes manières:
fichier accepté par le SGBD.
 Enregistrement par enregistrement.
 Suppression: à partir de critère de sélection des
 En insérant la réponse à une requête SQL.
enregistrements (lignes).
 Forme générale:
 Mise à jours.
INSERT INTO <nom de la table> [liste des colonnes]
VALUES <liste des valeurs>

49 50
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Gestion des données Gestion des données


 Insertion (INSERT INTO)  Insertion (INSERT INTO)
 Exemple: insertion, d'un enregistrement dans la table 'voiture'.  Exemple: insertion, d'enregistrements à partir du résultat d'une
requête.
INSERT INTO voiture
(NumVoit, Marque, Couleur) INSERT INTO voiture
VALUES (10, 'Triumph', 'Bleue'); SELECT NumVoit, Marque, Type, Couleur
FROM voitureBis
SELECT * FROM voiture; WHERE Numvoit>10;
 Si certaines données sont omises elles prendront la valeur NULL.
 La
table dans laquelle on insère les données doit avoir le même
 Sila liste des colonnes est omise, on considère qu'il s'agit de la nombre de colonnes que la table « résultat » de la requête (et le
liste de celles prises dans l'ordre défini lors de la création de la même type)
table.

51 52
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Gestion des données Gestion des données
 Suppression (DELETE FROM)  Modification (UPDATE)
 Permet de supprimer un ensemble d'enregistrements (lignes) que  Il faut préciser:
l'on identifiera avec une expression identique aux conditions de
 Le (les) colonne(s) concernée(s);
sélection vues précédemment:
 La (les) nouvelle(s) valeur(s);
DELETE FROM voiture
WHERE Couleur='Rouge';  Les enregistrements pour lesquels on modifiera ces valeurs
SELECT * FROM voiture;
UPDATE personne
 Attention
si aucune condition spécifiée, tous les enregistrements SET Ville='Paris-centre'
sont supprimés: WHERE Ville='Paris';
DELETE FROM personne; SELECT * FROM personne;

53 54
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Résumé Résumé

 Le langage SQL permet:  L'interrogation et la recherche dans les tables


 Lagestion de tables et de vues munies des contraintes
associé (LDD):
 Création CREATE TABLE/VIEW <nom_table> JOIN ON
AS, DISTINCT (LEFT/RIGHT) JOIN
 Destruction DROP TABLE/VIEW <nom_table> +,-,*,/,% SELECT <liste_colonnes>
AVG, MAX,MIN
 Modification ALTER TABLE/VIEW <nom_table> SUM, COUNT FROM <nom_table>
=,<,>,LIKE
 La manipulation des données (LMD): WHERE <critère> IS NULL, IN, BETWEEN
OR,AND,NOT
 Insertion INSERT INTO <nom_table> ORDER BY <liste_champs>
(<liste_colonnes> <liste_valeurs>) GROUP BY <liste_champs> HAVING <liste_critères>

 Modification UPDATE <nom_table> SET <colonne=valeur>


WHERE <critère>
 Destruction DELETE FROM <nom_table> WHERE <critère>
55 56
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a
Résumé Exercices

 La création et la modification
 Feuilles TD !
de tables:
CREATE TABLE <table>
(liste_champs + Type)

DROP TABLE <table>

ALTER TABLE <table>


(liste_champs + Type)

INSERT INTO <table>


(liste_champs) (liste_valeurs)

DELETE FROM <table>


WHERE <liste_critère>

UPDATE <table> SET <champ=valeur>


WHERE <liste_critère>

57 58
Université de Corse - IUT LPTAIS – Bases de Données Multimédia Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a a

Bibliographie et Webographie

 Création de bases de données


Nicolas Larrousse, Pearson Education, 2006.

59
Université de Corse - IUT LPTAIS – Bases de Données Multimédia
a

Vous aimerez peut-être aussi