Académique Documents
Professionnel Documents
Culture Documents
BD Chap4 Landscape
BD Chap4 Landscape
capocchi@univ-corse.fr
http://lcapocchi.free.fr
Sommaire
SQL
Concepts
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
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
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
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
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
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
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
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
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
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é
La création et la modification
Feuilles TD !
de tables:
CREATE TABLE <table>
(liste_champs + Type)
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
59
Université de Corse - IUT LPTAIS Bases de Données Multimédia
a