Langage SQL
Langage SQL
Langage SQL
d’une BD relationnelle
Introduction
Une fois nous avons défini le schéma relationnel de notre base de
données relationnelle, cette dernière peut être implémentée sous un
SGBD à l’aide du langage SQL.
Langage SQL
SQL est un langage informatique normalisé servant à exploiter des
bases de données relationnelles.
Il comporte :
▪ Un langage de définition de données (LDD)
▪ Un langage de manipulation de données (LMD)
▪ Un langage de contrôle de données (LCD)
▪ Un langage de contrôle de transaction (LCT)
▪ Le SQL intégré
langage de définition de données
Le langage de définition de données (LDD) permet la modification du
schéma d’une base de données :
▪ Créer une table.
▪ Supprimer une table.
▪ Modifier une table.
langage de définition de données
La création des tables:
La création d’une table consiste à définir :
▪ le nom de la table
▪ les colonnes de la table (leurs noms et types)
▪ les contraintes d’intégrité que devront respecter les données de la
table
langage de définition de données
La création des tables:
CREATE TABLE nomTable (
nomCol1 type1 [CONSTRAINT nom1] contrainteDeColonne1 ...
...
nomColN typeN [CONSTRAINT nomN] contrainteDeColonneN ...
...
[CONSTRAINT nom1] contrainteDeTable1,
...
... ) ;
langage de définition de données
La création des tables: Les types des colonnes
▪ CHAR (TAILLE) : chaîne de caractères de longueur fixe
▪ VARCHAR (tailleMax) : chaine de caractères de longueur variable
▪ SMALLINT, INTEGER, BIGINT : Entier signé (de 2,4,8 octets)
▪ REAL : nombre décimal à virgule flottante
▪ DATE : pour les dates au format AAAA-MM-JJ
▪ ...
langage de définition de données
La création des tables: Contraintes de colonne
▪ UNIQUE : Toutes les valeurs de la colonne doivent être différentes ou
NULL.
▪ NOT NULL ou NULL : Interdit (NOT NULL) ou autorise (NULL)l’insertion de
valeur NULL pour cet attribut.
▪ PRIMARY KEY : Désigne l’attribut comme clé primaire de la table
(équivalente à la contrainte UNIQUE NOT NULL)
▪ DEFAULT valeur : Permet de spécifier la valeur par défaut de la colonne
langage de définition de données
La création des tables: Contraintes de colonne
Exemple 1:
Soit la table cinéma avec les attributs :
▪ nom de type chaine de caractère qui représente la clé
primaire de la table
▪ adresse de type chaine de caractère
Créer la table en indiquant qu’on ne peut pas trouver deux cinémas à
la même adresse
langage de définition de données
La création des tables: Contraintes de colonne
Exemple 1:
CREATE TABLE cinema (
nom VARCHAR(30) PRIMARY KEY,
adresse VARCHAR(50) UNIQUE
);
langage de définition de données
La création des tables: Contraintes de colonne
Exemple 2:
Soit la table article avec les attributs :
▪ référence de type chaine de caractère qui représente la clé primaire
de la table
▪ libellé de type chaine de caractère qui ne doit pas avoir une valeur
NULL
▪ dateAjout de type Date
Créer la table de tel sorte que quand on insérera un article dans la table sans
indiquer la date d’ajout, le système affectera automatiquement la date du jour.
langage de définition de données
La création des tables: Contraintes de colonne
Exemple 2:
CREATE TABLE article (
référence VARCHAR(10) PRIMARY KEY,
libellé VARCHAR(30) NOT NULL,
dateAjout DATE DEFAULT CURRENT_DATE
);
langage de définition de données
La création des tables: Contraintes de colonne
CHECK (condition) : Vérifie lors de l’insertion des enregistrements (lignes)
que l’attribut vérifie la condition « condition ».
Opérateurs de comparaison :
▪ =, ! =, , <=, >=
▪ expression BETWEEN value1 AND value2
▪ expression [IN | NOT IN] (value1, value2, value3,…)
▪ expression [LIKE| NOT LIKE] « expression » : LIKE permet d’utiliser
des jokers ( « % » pour une chaîne de caractères de longueur
quelconque, «_ » pour un seul caractère...)
langage de définition de données
La création des tables: Contraintes de colonne
Exemple :
CREATE TABLE Etudiant (
idEtudiant INTEGER PRIMARY KEY,
nom VARCHAR (5) NOT NULL ,
prenom VARCHAR (30) NOT NULL ,
Moyenne REAL NOT NULL CHECK (moyenne <20),
Email VARCHAR(50) NOT NULL CHECK (Email LIKE "%@%")
);
langage de définition de données
La création des tables: Contraintes de table
Les contraintes de tables portent sur plusieurs attributs de la table sur
laquelle elles sont définies :
▪ PRIMARY KEY (colonne. . . ) : Désigne la concaténation des
attributs cités comme clé primaire de la table.
▪ FOREIGN KEY (colonne. . . ) REFERENCES tableM (colonne):
Identifie une ou plusieurs colonnes comme étant clé étrangère.
langage de définition de données
La création des tables: Contraintes de table
Soit le schéma :
▪ Film (idfilm , titre, année)
▪ Acteur (idacteur, nom, prenom)
▪ Joue (#idacteur, #idfilm)
Syntaxe :
DELETE FROM nomTable [WHERE prédicats]
Exemple :
DELETE FROM EMPLOYE WHERE departement = "COMMERCIAL";
langage de manipulation de données
Interroger une base de données:
Le langage SQL permet d’interroger une base de données à l’aide de la commande SELECT.
Elle permet d’effectuer, sur les tables, les opérations suivantes :
▪ sélectionner certaines colonnes d’une table (projection).
▪ sélectionner certaines lignes d’une table en fonction de leur contenu (sélection).
▪ combiner des informations venant de plusieurs tables (jointure, union,
intersection, et différence).
▪ combiner entre ces différentes opérations.
langage de manipulation de données
Interroger une base de données:
Cette commande permet de :
▪ récupérer certaines colonnes (SELECT).
▪ de certaines tables (FROM).
▪ récupérer certaines lignes (WHERE).
▪ regrouper certaines lignes (GROUP BY).
▪ filtrer après le regroupement (HAVING).
▪ trier les résultats (ORDER BY).
▪ limiter le nombre d’enregistrements retournés (LIMIT).
langage de manipulation de données
Projection:
La projection sur une relation (table) R définit une relation T restreinte à un sous-ensemble
des attributs (colonnes) de R, en extrayant les valeurs des attributs spécifiés.
langage de manipulation de données
Projection:
Requête SQL :
SELECT R1, ...,Rp FROM R
ou bien
SELECT DISTINCT R1, ...,Rp FROM R
Le mot clé DISTINCT permet de supprimer les doublons.
langage de manipulation de données
Projection:
Exemple :
Soit le modèle relationnel :
Eleves (Id, Nom, Prenom, Adresse, Ville, Tel)
Afficher toutes les informations des élèves :
langage de manipulation de données
Projection:
Exemple :
Soit le modèle relationnel :
Eleves (Id, Nom, Prenom, Adresse, Ville, Tel)
Afficher toutes les informations des élèves :
SELECT * FROM Eleves ;
langage de manipulation de données
Projection:
Exemple :
Soit le modèle relationnel :
Eleves (Id, Nom, Prenom, Adresse, Ville, Tel)
Afficher les noms et prénoms des élèves :
langage de manipulation de données
Projection:
Exemple :
Soit le modèle relationnel :
Eleves (Id, Nom, Prenom, Adresse, Ville, Tel)
Afficher les noms et prénoms des élèves :
SELECT Nom, Prenom FROM Eleves ;
langage de manipulation de données
Projection:
Exemple :
Soit le modèle relationnel :
Eleves (Id, Nom, Prenom, Adresse, Ville, Tel)
Afficher les villes dans lesquelles habitent des élèves :
langage de manipulation de données
Projection:
Exemple :
Soit le modèle relationnel :
Eleves (Id, Nom, Prenom, Adresse, Ville, Tel)
Afficher les villes dans lesquelles habitent des élèves :
SELECT DISTINCT Ville FROM Eleves ;
langage de manipulation de données
Sélection:
La sélection sur une relation R définit une relation T de même schéma qui ne
contient que les tuples (lignes) de R qui satisfont à la condition (ou prédicat)
spécifiée.
La condition (prédicat) est une expression logique faisant intervenir :
▪ les colonnes de la table
▪ des constantes
▪ les opérateurs de comparaison =, 6= , <, >,
▪ les opérateurs logique ET , OU , NON pour faire la combinaison de plusieurs
conditions.
langage de manipulation de données
Sélection:
langage de manipulation de données
Sélection:
Requête SQL :
SELECT R1, ...,Rp FROM R WHERE conditions
La condition, en SQL, peut contenir les comparateurs :
▪ = ou ! = (ou bien <>)
▪ >, <, ,
▪ LIKE ’modèle’
▪ IN (valeur1,. . . , valeurN)
▪ BETWEEN . . . AND . . .
▪ IS NULL, IS NOT NULL
▪ AND, OR, NOT
▪ La fonction strftime (format, time) sur les dates : ( %d : le jour, %m : le mois , %Y :
l’année, %H : l’heure, %M : les minutes, %S : les secondes . . . )
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et prénoms des élèves qui habitent Nice :
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et prénoms des élèves qui habitent Nice :
SELECT Nom, Prenom FROM Eleves WHERE Ville= ’Nice’ ;
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et les numéros de téléphone des élèves qui habitent à Nice ou à Cannes:
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et les numéros de téléphone des élèves qui habitent à Nice ou à Cannes:
• SELECT Nom, Tel FROM Eleves WHERE Ville= ’Nice’ OR Ville=’Cannes’ ;
• SELECT Nom, Tel FROM Eleves WHERE Ville IN (’Nice’ , ’Cannes’) ;
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et les prénoms des élèves dont le numéro de téléphone commence par ’06’
et dont la Note du bac est indéterminée:
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et les prénoms des élèves dont le numéro de téléphone commence par ’06’
et dont la Note du bac est indéterminée:
SELECT Nom, Prenom FROM Eleves WHERE Tel LIKE ’06%’ AND NoteBac IS NULL;
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et prénoms des élèves dont l’année de naissance est 2000:
langage de manipulation de données
Sélection:
Exemple :
Soit le modèle relationnel :
Eleves (IdEleve, Nom, Prenom, Ville, Tel, NoteBac, dateNaissance, classe)
Afficher les noms et prénoms des élèves dont l’année de naissance est 2000
SELECT Nom, Prenom FROM Eleves WHERE strftime(’%Y’, dateNaissance) = ’2000’ ;