Introduction
 Les serveurs de données relationnels présentent
aujourd’hui une interface externe sous forme d’un
langage de recherche et mise à jour, permettant de
spécifier les ensembles de données à sélectionner ou
à mettre à jour à partir de propriétés des valeurs, sans
dire comment retrouver les données.
 Plusieurs langages assertionnels permettant de
manipuler des bases de données relationnelles ont
été proposés, en particulier QUEL [Zook77], QBE
[Zloof77] et SQL [IBM82, IBM87].
 le langage SQL est normalisé [ISO89, ISO92] et
constitue le standard d’accès aux bases de données
relationnelles
Introduction
 SQL = Structured Query Language
 Langage de requêtes standard pour
l’interrogation de bases de données
relationnelles (SQL-1 en 1989, puis SQL-2 en
1992, et enfin SQL-3 )
 Développé à l’origine pour le protype de SGBD
recherche d’IBM SYSTEM/R, qui a débouché sur
les produits commerciaux SQL/DS et DB-2
 Mélange d’algèbre relationnelle et de calcul
relationnel à variables n-uplets
Introduction
 De manière générale, SQL comme les autres
langages qui ont été proposés (e.g., QUEL)
utilisent tous des critères de recherche (encore
appelés qualifications)
 SQL: construits à partir de la logique des
prédicats du premier ordre. Ils comportent:
 LDD: Langage de Définition de Données: définir le
schéma de la base de données
 La définition d’un schéma logique comprend
essentiellement deux parties :
 1) d’une part la description des tables et de leur contenu,
 2) d’autre part les contraintes qui portent sur les
données de la base. La spécification des contraintes est
souvent placée au second plan bien qu’elle soit en fait
très importante : elle permet d’assurer, au niveau de la
base des contrôles sur l’intégrité des données qui
s’imposent à toutes les applications accédant à cette
base.
 3) Un dernier aspect de la définition d’un schéma, est la
description de la représentation physique.
 LMD :Langage de Manipulation de Données:
interroger et modifier les données de la base
 •Langage de contrôle d’accès aux données.
CRÉATION DE TABLE
 CREATION SCHEMA
 CREATE SCHEMA AUTHORIZATION nom-schema
 create table nom_relation (nom_attribut_1
type_attribut_1, …)
 CREATE TABLE <nom de table> (<élément de
table>+)
CRÉATION DE TABLES
Un élément de table est soit une définition de
colonne, soit une définition de contrainte,
comme suit :
 <ÉLÉMENT DE TABLE> ::= <DÉFINITION DE
COLONNE> | <CONTRAINTE DE TABLE>
Une colonne est définie par un nom et un type
de données. Une valeur par défaut peut
être précisée. Une contrainte de colonne peut
aussi être définie à ce niveau. On obtient
donc la syntaxe suivante :
<DÉFINITION DE COLONNE> : := <NOM DE
COLONNE> <TYPE DE DONNÉES>
[<CLAUSE DÉFAUT>] [<CONTRAINTE DE
COLONNE>]
Type de données
EXEMPLE
CREATE TABLE Internaute
 (email VARCHAR (50) NOT NULL,
 nom VARCHAR (20) NOT NULL,
 prenom VARCHAR (20),
 motDePasse VARCHAR (60) NOT NULL,
 AnneeNaiss DECIMAL (4))
CREATE TABLE Cinéma (nom VARCHAR (50) NOT
NULL, adresse VARCHAR (50) DEFAULT ’Inconnue’)
LDD
EXPRESSION DES CONTRAINTES D’INTÉGRITÉ
 1)Les contraintes de colonnes permettent de
spécifier différentes contraintes d’intégrité
 – valeur nulle impossible (syntaxe NOT NULL),
 – unicité de l’attribut (syntaxe UNIQUE ou
PRIMARY KEY),
 – contrainte référentielle – syntaxe REFERENCES
<table référencée> [(<colonne référencée>)]
 – contrainte générale (syntaxe CHECK
<condition>)spécifier des plages ou des listes de
valeurs possibles
 1.Un attribut doit toujours avoir une valeur. C’est la
contrainte NOT NULL vue précédemment.
 2. Un attribut (ou un ensemble d’attributs)
constitue(nt) la clé de la relation.
 3. Un attribut dans une table est liée à la clé primaire
d’une autre table (intégrité référentielle).
 4. La valeur d’un attribut doit être unique au sein de la
relation.
 5. Enfin toute règle s’appliquant à la valeur d’un
attribut (min et max par exemple).
LDD
EXPRESSION DES CONTRAINTES D’INTÉGRITÉ
Clé de la table (1)
 CREATE TABLE Internaute (email VARCHAR (50)
NOT NULL, nom VARCHAR (20) NOT NULL,
 prenom VARCHAR (20),
 motDePasse VARCHAR (60) NOT NULL,
 anneeNaiss INTEGER,
 PRIMARY KEY (email))
 1 CREATE TABLE Notation (idFilm INTEGER NOT
NULL, email VARCHAR (50) NOT NULL,
 note INTEGER DEFAULT 0,
 PRIMARY KEY (titre, email))
 2 CREATE TABLE Artiste(id INTEGER NOT NULL,
 nom VARCHAR (30) NOT NULL,
 prenom VARCHAR (30) NOT NULL,
 anneeNaiss INTEGER,
 PRIMARY KEY (id),
 UNIQUE (nom, prenom));
Clé de la table (2)
Clés étrangères
 CREATE TABLE Film (idFilm INTEGER NOT NULL,
 titre VARCHAR (50) NOT NULL,
 annee INTEGER NOT NULL,
 idMES INTEGER,
 codePays INTEGER,
 PRIMARY KEY (idFilm),
 FOREIGN KEY (idMES) REFERENCES Artiste,
 FOREIGN KEY (codePays) REFERENCES Pays);
MODIFICATION d’une table
 ALTER TABLE nomTable ACTION description
 ACTION peut être principalement ADD, MODIFY,
DROP ou RENAME, et description est la commande
 de modification associée à ACTION.
Modification des attributs
 On peut ajouter un attribut region à la table Internaute
avec la commande :
 ALTER TABLE Internaute ADD region VARCHAR(10);
 On peut modifier La taille de region
 ALTER TABLE Internaute MODIFY region
VARCHAR(30) NOT NULL;
 ALTER TABLE Internaute ALTER region SET
DEFAULT ’BLIDA’;
 ALTER TABLE Internaute DROP region; //détruire
LMD
 la recherche (mot clé SELECT ) permet de retrouver
 des tuples ou parties de tuples vérifiant la qualification
citée en arguments ;
 – l’insertion (mot clé INSERT ) permet d’ajouter des
 tuples dans une relation ; les tuples peuvent être fournis
par l’utilisateur ou construits à partir de données existant
déjà dans la base ;
 – la suppression (mot clé DELETE ) permet de
supprimer d’une relation les tuples vérifiant la
qualification citée en argument ;
 – la modification (mot clé UPDATE )permet de
 mettre à jour les tuples vérifiant la qualification citée en
argument à l’aide de nouvelles valeurs d’attributs ou de
résultats d’opérations arithmétiques appliquées aux
SELECTION
 SELECT [DISTINCT] *FROM table_1 [synonyme_1],
table_2 [synonyme_1], …[WHERE prédicat_1AND
[ou OR] prédicat_2 …
INSERTION
MODIFICATION
SUPPRESSION
Les critères de sélection
 Comparaison à une valeur donnée.
 Pour chaque enregistrement, la valeur d'un champ donné
est comparée à une valeur fixe. Cette valeur fixe est
généralement une valeur numérique, une date ou un texte.
 Voici les opérateurs de comparaison:
 = "est égal"
 > "strictement supérieur"
 < "strictement inférieur"
 >= "supérieur ou égal"
 <= "inférieur ou égal"
 <> "est différent"
 1. Afficher le prénom et le nom de tous les employés du
service "Marketing"
 SELECT fldPrénom, fldNom
 FROM tblEmployés
 WHERE fldService='Marketing';
 2. Afficher le prénom, le nom et l'âge de tous les
employés plus jeunes que 50 ans
 SELECT fldPrénom, fldNom, fldAge
 FROM tblEmployés
 WHERE fldAge<50;
 3 Augmentez de la valeur 1 à l'âge de AICHA.
 UPDATE tblEmployés
 SET fldAge=fldAge+1
 WHERE fldNom=‘AICHA';
 4. Effacez tous les employés du service Informatique.
 DELETE FROM tblEmployés
 WHERE fldService='Informatique';
 5. Afficher le nom, le prénom et l'âge de tous les
employés entrés en service à partir du
 1.1.2014
 SELECT fldNom, fldPrénom, fldAge
 FROM tblEmployés
 WHERE fldEntréeService>=#1/1/14#;
Comparaison à un filtre
 • % représente n'importe quelle séquence de 0 ou
plusieurs caractères;
 • _ représente un seul caractère quelconque.
 Exemple: Pour rechercher des personnes dont le nom est
‘ABDrahime' ou ‘ABDrahmene' ou
 'SCHMIT' etc. on définit par exemple le filtre suivant :
‘ABD%'
 Exemple: Le filtre 'BL__' sélectionne par exemple les
valeurs 'BLEU' ou 'BLUE' mais pas 'BLANC'
 Les filtres sont utilisés ensemble avec le mot réservé LIKE.
Voici la syntaxe:
 . . .
 WHERE <Nom du champ> LIKE <Filtre>
 Afficher le nom et le prénom des employés dont le
prénom contient un trait d'union
 (p.ex. MED-LAMINE)
 SELECT fldNom, fldPrénom
 FROM tblEmployés
 WHERE fldPrénom LIKE '%-%';
 2. Afficher le nom, le prénom et l'âge des employés
dont le nom commence par 'W', est
 composé de 5 lettres et se termine par 'R'
 SELECT fldNom, fldPrénom, fldAge
 FROM tblEmployés
 WHERE fldNom LIKE 'W___R';
Les opérateurs logiques
 Il existe 3 opérateurs logiques:
 1. NOT (Négation logique)
 2. AND (Et logique)
 3. OR (Ou logique)
 Afficher le prénom et le nom de tous les employés qui ne
travaillent pas dans le service
 "Marketing"
 SELECT fldPrénom, fldNom
 FROM tblEmployés
 WHERE NOT fldService='Marketing';
 Formulez une requête qui affiche exactement le même
résultat, sans utiliser
 l'opérateur NOT.
 SELECT fldPrénom, fldNom
 FROM tblEmployés
 WHERE fldService<>'Marketing';

Cours3 gdm sql

  • 2.
    Introduction  Les serveursde données relationnels présentent aujourd’hui une interface externe sous forme d’un langage de recherche et mise à jour, permettant de spécifier les ensembles de données à sélectionner ou à mettre à jour à partir de propriétés des valeurs, sans dire comment retrouver les données.  Plusieurs langages assertionnels permettant de manipuler des bases de données relationnelles ont été proposés, en particulier QUEL [Zook77], QBE [Zloof77] et SQL [IBM82, IBM87].  le langage SQL est normalisé [ISO89, ISO92] et constitue le standard d’accès aux bases de données relationnelles
  • 3.
    Introduction  SQL =Structured Query Language  Langage de requêtes standard pour l’interrogation de bases de données relationnelles (SQL-1 en 1989, puis SQL-2 en 1992, et enfin SQL-3 )  Développé à l’origine pour le protype de SGBD recherche d’IBM SYSTEM/R, qui a débouché sur les produits commerciaux SQL/DS et DB-2  Mélange d’algèbre relationnelle et de calcul relationnel à variables n-uplets
  • 4.
    Introduction  De manièregénérale, SQL comme les autres langages qui ont été proposés (e.g., QUEL) utilisent tous des critères de recherche (encore appelés qualifications)  SQL: construits à partir de la logique des prédicats du premier ordre. Ils comportent:
  • 5.
     LDD: Langagede Définition de Données: définir le schéma de la base de données  La définition d’un schéma logique comprend essentiellement deux parties :  1) d’une part la description des tables et de leur contenu,  2) d’autre part les contraintes qui portent sur les données de la base. La spécification des contraintes est souvent placée au second plan bien qu’elle soit en fait très importante : elle permet d’assurer, au niveau de la base des contrôles sur l’intégrité des données qui s’imposent à toutes les applications accédant à cette base.  3) Un dernier aspect de la définition d’un schéma, est la description de la représentation physique.
  • 6.
     LMD :Langagede Manipulation de Données: interroger et modifier les données de la base  •Langage de contrôle d’accès aux données.
  • 7.
    CRÉATION DE TABLE CREATION SCHEMA  CREATE SCHEMA AUTHORIZATION nom-schema  create table nom_relation (nom_attribut_1 type_attribut_1, …)  CREATE TABLE <nom de table> (<élément de table>+)
  • 8.
    CRÉATION DE TABLES Unélément de table est soit une définition de colonne, soit une définition de contrainte, comme suit :  <ÉLÉMENT DE TABLE> ::= <DÉFINITION DE COLONNE> | <CONTRAINTE DE TABLE>
  • 9.
    Une colonne estdéfinie par un nom et un type de données. Une valeur par défaut peut être précisée. Une contrainte de colonne peut aussi être définie à ce niveau. On obtient donc la syntaxe suivante : <DÉFINITION DE COLONNE> : := <NOM DE COLONNE> <TYPE DE DONNÉES> [<CLAUSE DÉFAUT>] [<CONTRAINTE DE COLONNE>]
  • 10.
  • 11.
    EXEMPLE CREATE TABLE Internaute (email VARCHAR (50) NOT NULL,  nom VARCHAR (20) NOT NULL,  prenom VARCHAR (20),  motDePasse VARCHAR (60) NOT NULL,  AnneeNaiss DECIMAL (4)) CREATE TABLE Cinéma (nom VARCHAR (50) NOT NULL, adresse VARCHAR (50) DEFAULT ’Inconnue’)
  • 12.
    LDD EXPRESSION DES CONTRAINTESD’INTÉGRITÉ  1)Les contraintes de colonnes permettent de spécifier différentes contraintes d’intégrité  – valeur nulle impossible (syntaxe NOT NULL),  – unicité de l’attribut (syntaxe UNIQUE ou PRIMARY KEY),  – contrainte référentielle – syntaxe REFERENCES <table référencée> [(<colonne référencée>)]  – contrainte générale (syntaxe CHECK <condition>)spécifier des plages ou des listes de valeurs possibles
  • 13.
     1.Un attributdoit toujours avoir une valeur. C’est la contrainte NOT NULL vue précédemment.  2. Un attribut (ou un ensemble d’attributs) constitue(nt) la clé de la relation.  3. Un attribut dans une table est liée à la clé primaire d’une autre table (intégrité référentielle).  4. La valeur d’un attribut doit être unique au sein de la relation.  5. Enfin toute règle s’appliquant à la valeur d’un attribut (min et max par exemple). LDD EXPRESSION DES CONTRAINTES D’INTÉGRITÉ
  • 14.
    Clé de latable (1)  CREATE TABLE Internaute (email VARCHAR (50) NOT NULL, nom VARCHAR (20) NOT NULL,  prenom VARCHAR (20),  motDePasse VARCHAR (60) NOT NULL,  anneeNaiss INTEGER,  PRIMARY KEY (email))
  • 15.
     1 CREATETABLE Notation (idFilm INTEGER NOT NULL, email VARCHAR (50) NOT NULL,  note INTEGER DEFAULT 0,  PRIMARY KEY (titre, email))  2 CREATE TABLE Artiste(id INTEGER NOT NULL,  nom VARCHAR (30) NOT NULL,  prenom VARCHAR (30) NOT NULL,  anneeNaiss INTEGER,  PRIMARY KEY (id),  UNIQUE (nom, prenom)); Clé de la table (2)
  • 16.
    Clés étrangères  CREATETABLE Film (idFilm INTEGER NOT NULL,  titre VARCHAR (50) NOT NULL,  annee INTEGER NOT NULL,  idMES INTEGER,  codePays INTEGER,  PRIMARY KEY (idFilm),  FOREIGN KEY (idMES) REFERENCES Artiste,  FOREIGN KEY (codePays) REFERENCES Pays);
  • 17.
    MODIFICATION d’une table ALTER TABLE nomTable ACTION description  ACTION peut être principalement ADD, MODIFY, DROP ou RENAME, et description est la commande  de modification associée à ACTION.
  • 18.
    Modification des attributs On peut ajouter un attribut region à la table Internaute avec la commande :  ALTER TABLE Internaute ADD region VARCHAR(10);  On peut modifier La taille de region  ALTER TABLE Internaute MODIFY region VARCHAR(30) NOT NULL;  ALTER TABLE Internaute ALTER region SET DEFAULT ’BLIDA’;  ALTER TABLE Internaute DROP region; //détruire
  • 19.
    LMD  la recherche(mot clé SELECT ) permet de retrouver  des tuples ou parties de tuples vérifiant la qualification citée en arguments ;  – l’insertion (mot clé INSERT ) permet d’ajouter des  tuples dans une relation ; les tuples peuvent être fournis par l’utilisateur ou construits à partir de données existant déjà dans la base ;  – la suppression (mot clé DELETE ) permet de supprimer d’une relation les tuples vérifiant la qualification citée en argument ;  – la modification (mot clé UPDATE )permet de  mettre à jour les tuples vérifiant la qualification citée en argument à l’aide de nouvelles valeurs d’attributs ou de résultats d’opérations arithmétiques appliquées aux
  • 20.
    SELECTION  SELECT [DISTINCT]*FROM table_1 [synonyme_1], table_2 [synonyme_1], …[WHERE prédicat_1AND [ou OR] prédicat_2 …
  • 21.
  • 22.
  • 23.
  • 24.
    Les critères desélection  Comparaison à une valeur donnée.  Pour chaque enregistrement, la valeur d'un champ donné est comparée à une valeur fixe. Cette valeur fixe est généralement une valeur numérique, une date ou un texte.  Voici les opérateurs de comparaison:  = "est égal"  > "strictement supérieur"  < "strictement inférieur"  >= "supérieur ou égal"  <= "inférieur ou égal"  <> "est différent"
  • 25.
     1. Afficherle prénom et le nom de tous les employés du service "Marketing"  SELECT fldPrénom, fldNom  FROM tblEmployés  WHERE fldService='Marketing';  2. Afficher le prénom, le nom et l'âge de tous les employés plus jeunes que 50 ans  SELECT fldPrénom, fldNom, fldAge  FROM tblEmployés  WHERE fldAge<50;
  • 26.
     3 Augmentezde la valeur 1 à l'âge de AICHA.  UPDATE tblEmployés  SET fldAge=fldAge+1  WHERE fldNom=‘AICHA';  4. Effacez tous les employés du service Informatique.  DELETE FROM tblEmployés  WHERE fldService='Informatique';
  • 27.
     5. Afficherle nom, le prénom et l'âge de tous les employés entrés en service à partir du  1.1.2014  SELECT fldNom, fldPrénom, fldAge  FROM tblEmployés  WHERE fldEntréeService>=#1/1/14#;
  • 28.
    Comparaison à unfiltre  • % représente n'importe quelle séquence de 0 ou plusieurs caractères;  • _ représente un seul caractère quelconque.  Exemple: Pour rechercher des personnes dont le nom est ‘ABDrahime' ou ‘ABDrahmene' ou  'SCHMIT' etc. on définit par exemple le filtre suivant : ‘ABD%'  Exemple: Le filtre 'BL__' sélectionne par exemple les valeurs 'BLEU' ou 'BLUE' mais pas 'BLANC'  Les filtres sont utilisés ensemble avec le mot réservé LIKE. Voici la syntaxe:  . . .  WHERE <Nom du champ> LIKE <Filtre>
  • 29.
     Afficher lenom et le prénom des employés dont le prénom contient un trait d'union  (p.ex. MED-LAMINE)  SELECT fldNom, fldPrénom  FROM tblEmployés  WHERE fldPrénom LIKE '%-%';  2. Afficher le nom, le prénom et l'âge des employés dont le nom commence par 'W', est  composé de 5 lettres et se termine par 'R'  SELECT fldNom, fldPrénom, fldAge  FROM tblEmployés  WHERE fldNom LIKE 'W___R';
  • 30.
    Les opérateurs logiques Il existe 3 opérateurs logiques:  1. NOT (Négation logique)  2. AND (Et logique)  3. OR (Ou logique)
  • 31.
     Afficher leprénom et le nom de tous les employés qui ne travaillent pas dans le service  "Marketing"  SELECT fldPrénom, fldNom  FROM tblEmployés  WHERE NOT fldService='Marketing';  Formulez une requête qui affiche exactement le même résultat, sans utiliser  l'opérateur NOT.  SELECT fldPrénom, fldNom  FROM tblEmployés  WHERE fldService<>'Marketing';