Langage SQL

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

Définition et manipulation

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)

CREATE TABLE Joue (


idacteur INTEGER,
idfilm INTEGER,
PRIMARY KEY (idacteur, idfilm),
FOREIGN KEY (idacteur) REFERENCES Acteur (idacteur),
FOREIGN KEY (idfilm) REFERENCES Film (idfilm)
);
langage de définition de données
La suppression d’une table
Supprimer une table revient à éliminer sa structure et toutes les données
qu’elle contient.
La syntaxe est la suivante :
DROP TABLE nom_table
)Il n’est pas possible d’utiliser cette commande avec une table référencée

par une contrainte FOREIGN KEY


langage de définition de données
La modification d’une table : Ajout de colonne
Syntaxe :
ALTER TABLE nomTable ADD
nomColonne1 type1 [contrainte1];
Exemple :
ALTER TABLE personne ADD Age INTEGER;
langage de définition de données
La modification d’une table :Renommer une colonne

ALTER TABLE nomTable RENAME COLUMN ancienNom TO nouveauNom


langage de définition de données
La modification d’une table :Renommer une table

ALTER TABLE nomTable RENAME TO nouveauNom


langage de manipulation de données
Le langage de manipulation de données (LMD) est l’ensemble des commandes qui
permettent :
▪ l’ajout de lignes dan une table
▪ la suppression de lignes
▪ la modification de lignes
▪ la visualisation du contenu des tables
langage de manipulation de données
Insertion des lignes:
La commande INSERT permet d’insérer une ligne dans une table en
spécifiant les valeurs à insérer.
Syntaxe :
INSERT INTO nomTable (nomCol1, nomCol2, . . . ,nomColn) VALUES
(val11, val12, . . . , val1n),
(val21, val22,. . . , val2n),
...,
(valm1, val12, ..., valmn);
langage de manipulation de données
Insertion des lignes:
Exemple :
******************************
CREATE TABLE Ballon (
taille INTEGER NOT NULL,
couleur VARCHAR(40)
);
******************************
INSERT INTO Ballon VALUES (20, rouge) !VALIDE
INSERT INTO Ballon (couleur, taille) VALUES (rouge, 20) ! VALIDE
INSERT INTO Ballon(couleur) VALUES (rouge) ! FAUX
INSERT INTO Ballon (taille) VALUES (20) ! VALIDE
langage de manipulation de données
Modification des lignes:
La commande UPDATE permet de modifier les valeurs d’une ou plusieurs colonnes, dans une
ou plusieurs lignes, selon une condition (prédicat).
Syntaxe :
UPDATE nomTable SET
nomCol1 = expression1,
...
...
nomColN = expressionN
[ WHERE predicat ]
En l’absence d’une clause WHERE, toutes les lignes sont mises à jour.
langage de manipulation de données
Modification des lignes:
Exemple :
Soit la table EMPLOYE dont les colonnes sont : num_Employe, nom,
prénom, salaire, département
Augmenter de 10% le salaire des employés du département commercial :
langage de manipulation de données
Modification des lignes:
Exemple :
Soit la table EMPLOYE dont les colonnes sont : num_Employe, nom,
prénom, salaire, département
Augmenter de 10% le salaire des employés du département commercial :
UPDATE EMPLOYE
SET salaire = salaire * 1.1
WHERE departement = ‘COMMERCIAL’;
langage de manipulation de données
Suppression des lignes:

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’ ;

Vous aimerez peut-être aussi