BASES DE DONNEES
Langage SQL
1
BTS-DSI | Prof: H. BAKRI Base de Données Relationnelle 22/02/2024
PLAN
▪ INTRODUCTION
▪ SPÉCIFICITÉS DU LANGAGE
▪ LDD : LANGAGE DE DÉFINITION DES DONNÉES
▪ LMD : LANGAGE DE MANIPULATION DES
DONNÉES
2
BTS-DSI | Prof: H. BAKRI Base de Données Relationnelle 22/02/2024
Introduction
• SQL= Structured query language ➔ Langage de requêtes
structuré
• Permet de définir et manipuler les données au format
relationnel
• Langage déclaratif (non imperatif) et non procedural
• Emprunté à l’algébre relationnelle:
– SQL = Algebre relationnelle + Fonctions Agrégats et tri
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
Introduction
• Permet de gérer les différentes opérations exécutables sur
une base de données :
– lecture de données,
– opérations d’administration du serveur,
– ajout, suppression et mises à jour d’objets SQL - tables, vues,
procédures stockées, déclencheurs, types de données personnalisés …
– ….
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
Introduction
• Normalisation ISO
– norme SQL1 (1986, 1989)
– norme SQL2 (1992)
– nouvelle norme en préparation SQL3
• Quelques SGBD relationnels
– ORACLE (Oracle Corporation - 1977)
– INFORMIX (Informix Inc - 1981)
– SYBASE (Sybase Inc - 1984)
– MySQL (1995)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
Introduction
• Fonctionnalités :
– définition et manipulation de données au format relationnel
– contrôle des données
• Le langage de manipulation
– non procédural
– emprunté à l'algèbre relationnelle et au calcul relationnel de
tuples
• Puissance du langage de manipulation
Algèbre Relationnelle
+
Fonctions-Agrégats + Tri
• Une requête SQL (sans fonctions et tri)
Suite d'opérations de l'algèbre relationnelle
6
BTS-DSI | Prof: H. BAKRI Base de Données Relationnelle 22/02/2024
Spécificités du langage
• Composé d’instructions, réparties dans de 3 catégories
distinctes :
– LDD : langage de définition de données. Les instructions de
cette catégorie, permettent d’administrer la base de données,
ainsi que les objets qu’elle contient. Elles ne permettent pas de
travailler sur les données.
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
Spécificités du langage
• Composé d’instructions, réparties dans de 3 catégories
distinctes :
– LMD : langage de manipulation de données. Qui rassemble les
instructions telles que les instructions de sélection ou encore de
création, mise à jour et suppression de données stockées dans
les tables de la base de données. Il est important de retenir que
le DML sert simplement pour les données, et en aucun cas pour
la création, mise à jour ou suppression d’objets dans la base de
données. 8
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
Spécificités du langage
• Composé d’instructions, réparties dans de 3 catégories
distinctes :
– LCD : langage de contrôle d’accès. Cette catégorie
d’instructions nous permet de gérer les accès (autorisations)
aux données, aux objets SQL, aux transactions et aux
configurations générales de la base.
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
Spécificités du langage
• Les concepts de base
Modèle relationnel
Français Anglais Standard SQL
Relation Relation Table
Domaine Domain Domaine
Attribut Attribute Colonne
Ligne ou
Enregistrement tuple
enregistrement
Clé primaire Primary key Primary key
Clé étrangére Foreign key Foreign key
10
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LANGAGE DE DEFINITION DES
DONNEES :
LDD
13
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LDD : CREATION DE LA BASE DE DONNEES
• Création de la base de données:
– CREATE DATABASE nom_de_la_base;
– Exemple :
CREATE DATABASE GestionStagiaires
Remarque : L’ensemble des exemples de cette partie du cours
reléve du SQL adapté au SGBD MySQL et SQL Server .
12
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LDD : CREATION D’UNE TABLE
• Création des tables (relations)
– CREATE TABLE Nom_de_la_table ( Attribut_1
Type_de_donnée, Attribut_2 Type_de_donnée,
...);
13
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LDD : CREATION D’UNE TABLE
• TYPES DES DONNEES:
Char Chaine de caractères de longueur fixe d’un maximum de 8000 caractères.
Nchar Chaine de caractères Unicode, d’un maximum de 4000 caractères.
Varchar Chaine de caractères de longueur variable. Il est possible de préciser la valeur max, ce qui
permet d’entrer des longueurs de chaines de caractères de 2^31 caractères.
Nvarchar Chaine de caractères Unicode, d’un maximum de 4000 caractères. En spécifiant max, le
texte peut avoir une longueur maximum de 2^31 caractères.
Int Nombre entier compris entre -2^31 et 2^31-1.
Bigint Nombre entier compris entre -2^63 et 2^63.
Smallint Nombre entier compris entre -2^15 et 2^15-1.
Tinyint Nombre positif compris entre 0 et 255.
14
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LDD : CREATION D’UNE TABLE
• TYPES DES DONNEES:
Decimal/Numeric Decimal (C,D) ou Numeric (C,D) avec
réel de précision C (nombre des chiffres composants le nombre) et D chiffres après la
virgule tel que : Decimal (6,2) =Un nombre de 4 chiffres avant la virgule et 2 chiffres après
la virgule) : de 9999,99 à -9999,99
Float Nom approché de N chiffres tel que pour Float(N), N va de 1 à 53.
Real Identique à Float(24).
Money Supporte les nombres monétaires compris entre -922337203685477,5808 et
922337203685477,5807 donc des nombres sur 8 octets.
Smallmoney Supporte les nombres monétaires compris entre -214748,3648 et 214748,3647 donc des
nombres sur 4 octets.
15
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LDD : CREATION D’UNE TABLE
• TYPES DES DONNEES:
Date Permet de stocker une donnée de type date comprise entre le 01/01/0001 et le
31/12/9999 avec la précision d’une journée.
Datetime Permet de stocker une date et une heure sur 8 octets. Datetime a une précision accrue
par rapport à Smalldatetime (précision de 3,33 millisecondes).
Datetime2 Il permet de stocker une donnée de type date et heure comprise entre le 01/01/0001 et
le 31/12/9999 avec une précision de 100 nanosecondes.
Smalldatetime Permet de stocker une date et une heure sur 4 octets. Les dates possibles vont du 1er
Janvier 1900 au 6 Juin 2079, avec une précision à la minute près.
Datetimeoffset Il permet de stocker une donnée de type date et heure comprise entre le 01/01/0001 et
le 31/12/9999 avec une précision de 100 nanosecondes. Les informations sont stockées
au format UTC.
time Permet de stocker des données positives inférieures à 24 heures. La précision peu être
poussée jusqu’à 100 nano secondes.
Hierarchyid Type de données propre à Sql Server qui va nous permettre de modéliser une structure
hiérarchique dans une table relationnelle.
16
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LDD : CREATION D’UNE TABLE
• TYPES DES DONNEES:
Binary Supporte des données binaires sur n octets (De 1 à 255).
Varbinary Supporte des données binaires sur n octets (De 1 à 8000). L’argument Max, permet de
réserver 231 octet au maximum.
Bit Valeur entière Booléenne pouvant prendre la valeur 0, 1 ou NULL.
Xml Permet de stocker des documents Xml au sain d’une table dans une colonne.
Table Type de données qui permet de renvoyer un ensemble de données en vue d’une
utilisation future. Il est en particulier utilisé pour la création de tables temporaires.
Sqlvariant Permet de stocker n’importe quel type de données hors mis les types text, ntext,
timestamp et sql_variant. Sql_variant peu faire un taille maximale de 8016 octets.
17
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LDD : CREATION D’UNE TABLE
• Types SQL:
– Remarque
Chaque SGBD possède d'autres types qui lui sont propres
18
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CREATION DES CONTRAINTES D’INTEGRITE
A la création d’une table, les contraintes d’intégrité se déclarent
de la manière suivante:
CREATE TABLE nom_table (
attribut_1 type_1 [CONSTRAINT nom1] contrainte_de_colonne_1
[CONSTRAINT nom2] contrainte_de_colonne_2
...,
attribut_2 type_2 [CONSTRAINT nomk] contrainte_de_colonne_k
[CONSTRAINT nomp] contrainte_de_colonne_p
... ,
attribut_n type_n [CONSTRAINT nomx] contrainte_de_colonne_x
...,
[CONSTRAINT nom_1] contrainte_de_table_1,
... ...
[CONSTRAINT nom_p] contrainte_de_table_p
)
19
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE COLONNE
– NOT NULL ou NULL : Interdit (NOT NULL) ou autorise (NULL) l'insertion de
valeur NULL pour cet attribut.
– Exemple : Stagiaire (numIns, nom, prenom, adresse)
CREATE TABLE stagiaire(
numins int ,
L’attribut nom est une chaine de 20 caractéres
nom varchar(20) NOT NULL, maximum, il ne peut pas etre null
L’attribut prenom est une chaine de 30 caractéres
prenom varchar(30) NOT NULL,
maximum qui ne peut etre null
adresse varchar(50)) L’attribut adresse est une chaine de 50 caractéres
maximum mais qui peut etre null :
Impossible de créer un stagiaire sans nom ou
prenom.
20
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE COLONNE
– UNIQUE : Deux enregistrements ne peuvent recevoir des valeurs identiques
pour cet attribut, mais l'insertion de valeur NULL est autorisée.
– Exemple : Module (idModule, intitule)
CREATE TABLE Module(
idModule int ,
intitule varchar(20) UNIQUE L’attribut intitule est une chaine de 20 caractères
maximum dont la valeur est unique pour chaque
) enregistrement:
On veut que les noms des modules ne se répètent
pas chose qui est tout à fait logique.
21
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE COLONNE
– PRIMARY KEY : Désigne l'attribut comme clé primaire de la table.
PRIMARY KEY est équivalente à la contrainte UNIQUE NOT NULL.
– Exemple : Stagiaire (numIns, nom, prenom, adresse)
CREATE TABLE stagiaire(
Numins int PRIMARY KEY ,
nom varchar(20) NOT NULL,
L’attribut numins est désigné comme clé primaire
prenom varchar(30) NOT NULL , de la table Stagiaire
adresse varchar(50))
22
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE COLONNE
– CHECK (condition) : Vérifie lors de l'insertion de l’enregistrement que
l'attribut réalise la condition.
Exemple : Stagiaire (numIns, nom, prenom, adresse, age)
CREATE TABLE stagiaire(
numIns int PRIMARY KEY,
nom VARCHAR(20),
prenom VARCHAR(30), L’attribut Age doit vérifier la condition <= 25 ans.
Impossible d’ajouter un stagiaire dont l’age est > 25
adresse VARCHAR(50),
age int CHECK (age <= 25))
23
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE COLONNE
– DEFAULT valeur : Permet de spécifier la valeur par défaut de l'attribut.
– Exemple : Compte(idCompte, solde, type)
CREATE TABLE Compte(
idCompte int PRIMARY KEY,
solde DECIMAL(3,2),
type varchar(20) DEFAULT ‘COURANT’) L’attribut type prend la valeur par
défaut la valeur ‘COURANT’ si on lui
attribut aucune valeur
24
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
– PRIMARY KEY (colonne…) : Désigne la concaténation des attributs
cités comme clé primaire de la table. Cette contrainte ne peut
apparaître qu'une seule fois dans l'instruction.
– Exemple : LigneCommande(#ref, #nbon, quantite)
CREATE TABLE LigneCommande(
ref int,
nbon int ,
quantite int ,
Primary Key (ref, nbon))
25
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
– CHECK (condition) : Cette contrainte permet d'exprimer une condition
qui doit exister entre plusieurs attributs de la ligne.
– Exemple : Compte(numCpt, solde, decouvert)
La somme solde + découvert doit être toujours positive:
CREATE TABLE Compte(
numCpt int PRIMARY KEY,
Decouvert decimal(3,1),
Solde decimal (3,1) CHECK (solde + decouvert > 0))
26
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
– FOREIGN KEY (colonne…) REFERENCES tableX [(colonne…)]
[ON DELETE CASCADE | SET NULL] : Contrainte d'intégrité référentielle
pour un ensemble d'attributs de la table en cours de définition.
Les valeurs prises par ces attributs doivent exister dans l'ensemble
d'attributs spécifié et posséder une contrainte PRIMARY
KEY ou UNIQUE dans la table tableX.
FOREIGN KEY ( attribut de la table en cours de definition ) REFERENCES
Table de reference ( attribut de la table de reference )
27
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
– ON DELETE CASCADE : Demande la suppression des enregistrements
dépendants, dans la table en cours de définition, quand
l’enregistrement contenant la clé primaire référencée est supprimé
dans la table référencée.
– ON DELETE SET NULL : Demande la mise à NULL des attributs
constituant la clé étrangère qui font référence au enregistrement
supprimé dans la table référencée.
28
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
Exemple Complet
Commande (nbon, dateCmd)
Client (numCl, nomCl, prenomCl,adrCl)
Produit (reference, intitule, PU)
CommandeProduit (#nbon, #reference, quantite)
29
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
Exemple Complet : Client (numCL, nomCl, prenomCl, adrCl)
CREATE TABLE Client (
numCL int PRIMARY KEY,
nomCl varchar(20), prenomCl
varchar(30), adrCl varchar(50),
UNIQUE (nomCl, prenomCl))
30
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
Exemple Complet : Commande(nbon, dateCmd)
CREATE TABLE Commande (
nbon int PRIMARY KEY,
datCmd datetime, numcl int,
FOREIGN KEY (numCL) REFERENCES Client(numCl));
31
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
Exemple Complet : Produit(reference, intitule, PU)
CREATE TABLE Produit(
Reference int PRIMARY KEY,
Intitule varchar(50),
PU decimal(3,2))
32
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
Exemple Complet : CommandeProduit(#nbon, #reference, quantite)
CREATE TABLE LigneCommande(
Reference int,
Nbon int,
Quantite int,
PRIMARY KEY(reference, nbon),
FOREIGN KEY (reference) REFERENCES produit(reference),
FOREIGN KEY (nbon) REFERENCES commande(nbon))
33
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : CONTRAINTES D’INTEGRITE DE TABLE
– Remarque : Les contraintes de tables portent sur plusieurs
attributs de la table sur laquelle elles sont définies. Il n'est pas
possible de définir une contrainte d'intégrité utilisant des
attributs provenant de deux ou plusieurs tables. Ce type de
contrainte sera mis en œuvre par l'intermédiaire de
déclencheurs de base de données (trigger).
34
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUT DE COLONNE A UNE TABLE:
ALTER TABLE nom_table
ADD nom_colonne type_donnees
• Exemple : Pour ajouter la colonne TVA à la table Produit :
ALTER TABLE produit
ADD tva int
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• SUPPRESSION D’UNE COLONNE D’UNE TABLE:
ALTER TABLE nom_table
DROP COLUMN nom_colonne
• Exemple : Pour supprimer la colonne adrCL de la table Client :
ALTER TABLE produit
DROP COLUMN adrCl
36
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• MODIFICATION D’UNE COLONNE D’UNE TABLE:
En MySQL : En SQLServer
ALTER TABLE nom_table ALTER TABLE nom_table
MODIFY attribut Nouveau_Type ALTER COLUMN nom_colonne
nouveau_type_de_données
Exemple : pour modifier le type de PU de la table produit en int et non null
ALTER TABLE produit ALTER TABLE produit
MODIFY PU int NOT NULL ALTER COLUMN PU int NOT NULL
37
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• MODIFICATION DU TYPE D’UNE COLONNE D’UNE TABLE:
En MySQL : En SQLServer
ALTER TABLE nom_table ALTER TABLE nom_table
MODIFY attribut Nouveau_Type ALTER COLUMN nom_colonne
nouveau_type_de_données
Exemple : pour modifier le type de PU de la table produit en int et non null
ALTER TABLE produit ALTER TABLE produit
MODIFY PU int NOT NULL ALTER COLUMN PU int NOT NULL
38
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• MODIFICATION DU NOM D’UNE COLONNE D’UNE TABLE:
En MySQL : En SQLServer
ALTER TABLE nom_table On execute la procedure stockée (??) sp_rename:
CHANGE COLUMN ancien_nom
Nouveau_nom type EXEC sp_rename ‘nom_table.nom_colonne’ ,
‘nouveau_nom’, ‘COLUMN’
Exemple : pour modifier le nom de la colonne PU de la table produit en prixUnitaire
ALTER TABLE produit EXEC sp_rename ‘[Link]’, ‘prixUnitaire’ ,
CHANGE COLUMN PU COLUMN
prixUnitaire int
39
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• RENOMMER UNE TABLE:
En MySQL : En SQLServer
ALTER TABLE table_name On execute la procedure stockée (??)
RENAME TO new_table_name; sp_rename (again ☺ ):
EXEC sp_rename ‘nom_table’ ,
‘nouveau_nom_table’
Exemple : pour modifier le nom de la table produit en products
ALTER TABLE produit EXEC sp_rename ‘produit’, ‘products’
RENAME TO products
40
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUTER UNE CONTRAINTE DE COLONNE
ALTER TABLE nom_table
ADD CONSTRAINT nom_contrainte
[CONTRAINTE]
41
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUTER UNE CONTRAINTE DE COLONNE
• Contrainte clé primaire :
– Soit la table T2 (num, val)
CREATE TABLE t2
( num int,
val varchar(20))
ALTER TABLE t2
ADD CONSTRAINT PK_T2
PRIMARY KEY (num)
42
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUTER UNE CONTRAINTE DE COLONNE
• Contrainte clé étrangére:
– Soit la table T3 (id, val, num)
CREATE TABLE t3 ( id int PRIMARY KEY, val varchar(20), numT3 int)
ALTER TABLE T3
ADD CONSTRAINT FK_T3
FOREIGN KEY(numT3)
REFERENCES t2(num)
43
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUTER UNE CONTRAINTE DE COLONNE
• Contrainte d’unicité:
– Soit la table Products,on ajoute une contrainte d’unicité sur la colonne
intitule:
ALTER TABLE products
ADD CONSTRAINT UQ_Products
UNIQUE(intitule)
44
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUTER UNE CONTRAINTE DE COLONNE
• Contrainte de domaine CHECK:
– Soit la table Products, on ajoute une contrainte de domaine sur le prix
unitaire (>100 dh)
ALTER TABLE products
ADD CONSTRAINT chk_prixUnitaire
CHECK (prixUnitaire >100)
45
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUTER UNE CONTRAINTE DE COLONNE
• Contrainte NOT NULL:
EN MYSQL EN SQLServer
Supprimer la colonne
ALTER TABLE nom_table
ALTER TABLE nom_table ALTER COLUMN nom_colonne TYPE NOT NULL
DROP nom_colonne
Recréer la colonne avec la contrainte
ALTER TABLE nom_table
ADD nom_colonne TYPE NOT NULL
46
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• AJOUTER UNE CONTRAINTE DE COLONNE
• Contrainte NOT NULL:
– Soit la table ligneCommande, on ajoute une contrainte NOT NULL à la
colonne quantite:
EN MYSQL EN SQLServer
Supprimer la colonne ALTER TABLE ligneCommande
ALTER TABLE ligneCommande ALTER COLUMN quantite int NOT NULL
DROP quantite
Recréer la colonne avec la contrainte
ALTER TABLE ligneCommande
ADD quantite int NOT NULL
47
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• SUPPRIMER UNE CONTRAINTE
ALTER TABLE nom_table
DROP CONSTRAINT nom_contrainte
48
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• SUPPRIMER UNE TABLE:
DROP TABLE nom_table
Remarque: Attention aux tables reliées par des clés
étrangères!!!
– Il faut supprimer les tables reliées à cette table par des clés
étrangères
Exemple : DROP TABLE client
49
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• SUPPRIMER UNE TABLE:
DROP TABLE nom_table
50
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LDD : MODIFICATION DU SCHEMA DE LA BD
• SUPPRIMER UNE BASE DE DONNEES:
DROP DATABASE nom_bd
51
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LANGAGE DE MANIPULATION DES
DONNEES :
LMD
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
Soit la base de données GestionVols suivante:
PILOTE (NumP, NomP, Adresse, Salaire)
AVION (NumAV, NomAV, Capacité, Localisation)
VOL (NumV, #NumP, #NumAV, Dep_Ville, Arr_Ville, Dep_H,
Arr_H)
Exercice : Donner le script de création de la base de données
et des tables.
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
1. PROJECTION :
Afficher le nom et salaire de tous les pilotes de la table pilote
Opération Algébrique Opération SQL
Opération de projection Sélection simple:
Π (liste de colonnes) table SELECT (liste de colonnes)
FROM table
Π (nomP,salaire) Pilote SELECT nomP,salaire
FROM pilote
Remarque: Si on souhaite conserver tous les attributs, on peut
éviter d’en énumérer la liste en la remplaçant par *
SELECT *
FROM pilote
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
1. PROJECTION :
– Changement des noms des colonnes : Alias
• On peut donner un nouveau nom a une colonne lors
de l’affichage de la sélection en utilisant le mot clés
AS :
– Exemple :
SELECT NomP AS ‘NOM DU PILOTE’
FROM pilote
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
1. PROJECTION :
– Elimination des doublons : DISTINCT
Lorsque le moteur construit la réponse, il sélectionne
toutes les lignes qui correspondent à la requête même si
parfois ces lignes ont en doubles. C’est pourquoi il est
souvent nécessaire d’utiliser DISTINCT qui permet
d‘éliminer les doublons dans la réponse.
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
1. PROJECTION :
– Elimination des doublons : DISTINCT
– Exemple :
SELECT DISTINCT Dep_Ville
FROM Vol
On peut trouver plusieurs vols avec
la même ville de départ, si on
s’interesse à connaitre les villes de
départ le fait de les avoir en double
n’a aucun sens
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
1. PROJECTION :
– Opérations mathématiques
On peut utiliser les opérateurs mathématiques de base
pour combiner différentes colonnes (+,-, *, /).
– Exemple :
SELECT nomP, salaire *0,75 AS salaireNet
FROM Pilote
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
Afficher tous les pilotes de la table pilote dont le salaire est
strictement supérieur à 14000,00 Dhs
Opération Algébrique Opération SQL
Opération de restriction Séléction avec condition:
SELECT *
σ (condition) table FROM table
WHERE condition
σ (salaire>14000,00) Pilote SELECT *
FROM pilote
WHERE salaire > 14000,00
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
Afficher tous les pilotes de la table pilote dont le salaire est
strictement supérieur à 14000,00 Dhs
Opération Algébrique Opération SQL
Opération de restriction Séléction avec condition:
SELECT *
σ (condition) table FROM table
WHERE condition
σ (salaire>14000,00) Pilote SELECT *
FROM pilote
WHERE salaire > 14000,00
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
• Afficher les informations des pilotes dont les
numéros sont 123, 154, et 874
SELECT *
FROM pilote
WHERE numP IN (123, 154, 874)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
• Afficher les informations des vols qui ne sont
pas effectués par les pilotes de numeros 852,
963, 147 et 254
SELECT *
FROM vol
WHERE numP NOT IN (123, 154, 874)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
• Afficher tous les pilotes dont le nom commence par la lettre J
(exemple : Jad, Jack, Joudani,…)
SELECT *
FROM pilote
WHERE nomP LIKE ‘J%’
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
• Afficher tous les pilotes dont le nom commence par la lettre J
suivie de n’importe quelle lettre puis suivi de la lettre d
(exemple : Jad)
*
SELECT
FROM pilote
WHERE nomP LIKE ‘J_d’
Remarque : avec Like % remplace plusieurs
caractéres et
_remplace un seul caractére
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
• Afficher tous les pilotes dont le salaire est entre 10000 dh et
13000 dh
SELECT *
FROM pilote
WHERE salaire BETWEEN 10000,00 AND 13000,00
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
• Afficher tous les pilotes dont le salaire est entre 10000 dh et
13000 dh
OU BIEN
SELECT *
FROM pilote
WHERE salaire >= 10000,00 AND salaire <=13000,00
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
2. RESTRICTION :
• Afficher tous les pilotes dont le salaire est entre 10000 dh et
13000 dh
OU BIEN
SELECT *
FROM pilote
WHERE salaire >= 10000,00 AND salaire <=13000,00
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
3. PRODUIT CARTESIEN:
Afficher toutes les combinaisons possibles pour qu’un pilote conduise toutes
les avions et un avion soit conduit par tous les pilotes
Opération Algébrique Opération SQL
Produit cartésien Clause FROM avec CROSS JOIN
SELECT
Table1 * table2 FROM table1 CROSS JOIN table2
pilote * avion SELECT *
FROM pilote CROSS JOIN avion
Ou bien , tout simplement:
SELECT *
FROM pilote , avion
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
4. UNION:
On ajoute à la base de données la table suivante:
TechnicienAérien (codeT, nomT, salaireT, typeContrat)
Afficher les noms des pilotes et ceux des techniciens
Opération Algébrique Opération SQL
Union UNION
Table1 U table2
SELECT nomP AS ‘nom’
Π(nomP)pilote FROM pilote
U UNION
SELECT nomT AS ‘nom’
Π(nomT)technicienAérien FROM technicienAérien
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
4. UNION:
On ajoute à la base de données la table suivante :
TechnicienAérien (codeT, nomT, salaireT, typeContrat)
Afficher les noms des pilotes et ceux des techniciens
Opération Algébrique Opération SQL
Union UNION
Table1 U table2
SELECT nomP AS ‘nom’
Π(nomP)pilote FROM pilote
U UNION
SELECT nomT AS ‘nom’
Π(nomT)technicienAérien FROM technicienAérien
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
5. INTERSECTION:
On ajoute à la base de données la table suivante :
TechnicienAérien (codeT, nomT, salaireT, typeContrat)
Afficher les noms des pilotes qui sont eux aussi des
techniciens
Opération Algébrique Opération SQL
INTERSECTION INTERSECT
Table1 Π table2
SELECT nomP AS ‘nom’
Π(nomP)pilote FROM pilote
Π INTERSECT
SELECT nomT AS ‘nom’
Π(nomT)technicienAérien FROM technicienAérien
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
5. DIFFERENCE:
On ajoute à la base de données la table suivante :
TechnicienAérien (codeT, nomT, salaireT, typeContrat)
Afficher les noms des pilotes qui ne sont pas des techniciens
Opération Algébrique Opération SQL
DIFFERENCE EXCEPT
N’est pas pris en charge par
Table1 - table2 plusieurs SGBD y compris MySQL
SELECT nomP AS ‘nom’
Π(nomP)pilote FROM pilote
- except
SELECT nomT AS ‘nom’
Π(nomT)technicienAérien FROM technicienAérien
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
6. JOINTURE:
Plusieurs cas de figures existent, la plus simple :
Afficher les numéros de vols, leurs villes de départ, leurs villes d’arrivés et les
noms des pilotes:
Opération Algébrique Opération SQL
JOINTURE EXCEPT
N’est pas pris en charge par plusieurs
Table1 table2 SGBD y compris MySQL
(condition)
Π(numV,dep_Ville,Arr_Ville) vol SELECT numV, dep_Ville, arr_Ville, nomp
([Link] = [Link]) WHERE [Link] = [Link]
Π(nomp)pilote
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
6. JOINTURE:
Plusieurs cas de figures existent, la plus simple :
Afficher les numéros de vols, leurs villes de départ, leurs villes d’arrivés et les
noms des pilotes:
Opération Algébrique Opération SQL
JOINTURE EXCEPT
N’est pas pris en charge par plusieurs
Table1 table2 SGBD y compris MySQL
(condition)
Ou bien
Π(numV,dep_Ville,Arr_Ville) vol SELECT numV, dep_Ville, arr_Ville, nomp
([Link] = [Link]) FROM pilote
INNER JOIN vol
Π(nomp)pilote ON [Link] =[Link]
J
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
Remarques:
◼ Le résultat d'une requête peut contenir plusieurs
occurrences d’un enregistrement,
◼ pour avoir une seule occurrence de chaque enregistrement dans
une relation : DISTINCT
◼ Exemple : select DISTINCT nomp FROM pilote
◼ Le résultat d'une requête peut être trié,
◼ Il existe une valeur spéciale dite indéfinie (NULL) utilisée
pour remplir un champ dont on ne connait pas la valeur.
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérations sur les tables
Remarques:
◼ En SQL, si plusieurs attributs ont le même nom, pour résoudre
l’ambiguité, on spécifie la relation auquel l’attribut appartient.
◼ Exemple : SELECT A, R.B, C FROM R, S
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Fonctions d’aggregation
• COUNT(*) : nb d'enregistrements total
• COUNT(DISTINCT col) : nb de valeurs distinctes non
null de la colonne col
• SUM(col) : somme des valeurs de la colonne col
• MIN(col) : minimum des valeurs de la colonne col
• MAX(col) : maximum des valeurs de la colonne col
• AVG(col) : moyenne des valeurs de la colonne col
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Fonctions d’aggregation
• Exemple : la moyenne des salaires
SELECT AVG(salaire) FROM
Pilote ;
• Exemple : la somme des salaires
SELECT SUM(salaire)
FROM Pilote ;
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Fonctions d’aggregation
• Exemple : le nombre des vols
SELECT COUNT(*)
FROM Vol ;
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Selection avec Tri
SELECT
FROM Table
ORDER BY colonne TypeTri
Le type tri est : Asc ou Desc
• SELECT *
• FROM Pilote
• ORDER BY Salaire DESC
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Selection avec regroupement par
colonnes
• La clause GROUP BY permet de faire un regroupement par
colonne elle est toujours utile quand on a des calculs
statistiques dans la requête :
• Soit l’exemple suivant : Pour avoir le nombre de vol que
chaque avion a effectué :
• SELECT COUNT(*)
• FROM Vol
• GROUP BY numAv
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Selection avec regroupement par
colonnes
• La clause HAVING agit comme le filtre WHERE, mais permet
de filtrer non plus les données, mais les opérations résultant
des regroupements, c'est à dire très généralement toute
expression de filtre devant introduire un calcul d'agrégation.
• Soit l’exemple suivant :
Pour avoir les avions ayant effectué plus que 10 vols :
SELECT COUNT(*) AS NOMBRE DE VOL
FROM Vol
GROUP BY numAV
HAVING COUNT(*) >10
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Alimentation des tables
Instruction INSERT :
1. Insérer un enregistrement
INSERT INTO nom_table
VALUES (valeur1, valeur2,…, valeurx);
Exemple :
INSERT INTO pilote
VALUES (1,"ALAOUI","Ahmed","adresse1",12000.00)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Alimentation des tables
Instruction INSERT :
2. Insérer des valeurs pour quelques colonnes
INSERT INTO nom_table (liste des colonnes)
VALUES (valeur pour chaque colonne);
Exemple :
INSERT INTO pilote (numP, nomP)
VALUES (2,"ALAMI")
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Alimentation des tables
Instruction INSERT :
3. Insérer plusieurs enregistrements:
INSERT INTO nom_table
VALUES (liste1 de valeurs) ,
(liste2 de valeurs),
(liste3 de valeurs),
….)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Alimentation des tables
Instruction INSERT :
3. Insérer plusieurs enregistrements:
Exemple:
INSERT INTO pilote
VALUES (3,"ALAMI","mohamed","adr3",12000.00),
(4,"ALAOUI","ALI","adr4",15000.00),
(5,"DUPOND","Sophie","adr5",13000.00)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Suppression des enregistrements
Instruction DELETE:
DELETE FROM nom_table
WHERE condition
Exemple : Supprimer le pilote de numero 3
DELETE FROM pilote
WHERE numP = 3
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Suppression des enregistrements
Instruction DELETE:
DELETE FROM nom_table
WHERE condition
Exemple : Supprimer les pilotes de numero 3, 5 et 7
DELETE FROM pilote
WHERE numP IN (3,5,7)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Suppression des enregistrements
Instruction DELETE:
DELETE FROM nom_table
WHERE condition
Exemple : Supprimer les pilotes dont le salaire est
inferieur à 10000,00 Dhs
DELETE FROM pilote
WHERE salaire < 10000.00
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Modification des enregistrements
Instruction UPDATE:
UPDATE nom_table
SET colonne1=valeur1 ,
colonne2=valeur2,
…
WHERE condition
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Modification des enregistrements
Instruction UPDATE:
Exemple : Modifier la valeur de l’adresse du pilote
numero 3
UPDATE pilote
SET adrP = "adr30"
WHERE numP=3
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Modification des enregistrements
Instruction UPDATE:
Exemple : Modifier la valeur du salaire et de
l’adresse du pilote numero 1
UPDATE pilote
SET adrP = "adr10",
salaire = salaire*0,2
WHERE numP=1
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Imbrication des requétes SQL
Soit le MLD suivant
• Produit(nump,nomp,couleur,poids,prix)
• Usine(numU,nomu,ville,pays)
• Fournisseur(numF,nomf,type,ville,pays)
• Livraison(#numP,#numU,#numF,quantité)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Imbrication des requétes SQL
• Quelles sont les noms et couleurs des produits livrés
par le fournisseur numero 1?
• Solution 1 : la jointure déclarative
SELECT nomp, couleur
FROM Produit,Livraison
WHERE ([Link] = [Link])
AND numF = 1 ;
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
LMD : Imbrication des requétes SQL
• Quelles sont les noms et couleurs des produits livrés par le fournisseur numero 1?
• Solution 2 : la jointure procedurale
SELECT nomp, couleur
FROM Produit
WHERE numP IN (SELECT numP
FROM Livraison
WHERE numF = 1
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Imbrication des requétes SQL
• Quels sont les fournisseurs qui livrent des produits
rouges aux usines de Casa ou de Monreal
SELECT nomF
FROM Livraison, Produit, Fournisseur, Usine
WHERE
[Link] = [Link]
AND [Link] = [Link]
AND [Link] = [Link]
AND ([Link] = ‘Casa‘ OR [Link] = ‘Monreal')
AND couleur = 'rouge';
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Imbrication des requétes SQL
• Quels sont les fournisseurs qui livrent des produits
rouges aux usines de Casa ou de Monreal
SELECT nomf FROM Fournisseur
WHERE numF IN (SELECT numF
FROM Livraison WHERE numP IN
(SELECT numP FROM Produit
WHERE couleur = 'rouge')
AND numU IN
(SELECT numU FROM Usine
WHERE ville = ‘Casa‘
OR ville = ‘Monreal') ) ;
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérateur ALL
• Teste si tous les éléments de l'ensemble vérifie la
condition
• Quels sont les fournisseurs qui ne fournissent que
des produits rouges?
SELECT numF FROM Livraison
WHERE ‘rouge’ =ALL (SELECT couleur FROM Produit
WHERE numP IN
(SELECT numP FROM Livraison
WHERE [Link] =
[Link] )
);
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérateur Exist
• Test si le résultat n’est pas vide (comprend des
enregistrements)
• Quels sont les fournisseurs qui fournissent au moins
un produit rouge
SELECT nomf FROM Fournisseur
WHERE EXISTS ( SELECT *
FROM Livraison, Produit
WHERE [Link] =
[Link]
AND [Link] = [Link]
AND [Link] = 'rouge' );
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Opérateur Exist
• Test si le résultat n’est pas vide (comprend des
enregistrements)
• Quels sont les fournisseurs qui ne fournissent aucun
produit rouge
SELECT nomf FROM Fournisseur
WHERE NOT EXISTS ( SELECT *
FROM Livraison, Produit
WHERE [Link] =
[Link]
AND [Link] = [Link]
AND [Link] = 'rouge' );
AKJOUD Widad 50
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• La clause TOP n (LIMIT pour MySQL) permet
d’afficher les n premières lignes de la requête:
SELECT TOP 5 *
FROM Fournisseur
• La clause LEN (chaine) permet d’afficher le nombre
de caractères de la chaine:
SELECT LEN(nomF)
FROM Fournisseur
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• Les fonctions Left, Right et Substring permettent
l’extraction d’une sous chaîne de caractères:
– LEFT ( chaîne , longueur )
– RIGHT ( chaîne , longueur )
– SUBSTRING ( chaîne , début , longueur )
Exemple SELECT Left(nomF) FROM Fournisseur
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• Les fonctions de conversion majuscule (UPPER) et
minuscule (LOWER) d’une chaîne de caractères
alphabétiques.
– UPPER ( chaîne )
– LOWER( chaîne )
Exemple
UPDATE PRODUIT
SET couleur = UPPER(couleur)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• Les fonctions de suppression des espaces à gauche
(LTRIM) ou à droite (RTRIM) d’une chaîne de
caractères
– LTRIM ( chaîne )
– RTRIM ( chaîne )
Exemple
SELECT LTRIM(couleur) FROM PRODUIT
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• Les fonctions numériques utilisent et
ramènent des valeurs numériques.
– ROUND : calculer l’arrondi
– CEILLING : trouver l’entier immédiatement
supérieur ou égal
– FLOOR : valeur entière
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• Les fonctions Date :
– Date = Année, mois, jour, heure, minute, seconde,
milliseconde
– Les fonctions scalaires suivantes effectuent une
opération sur une valeur d'entrée de type date et
heure et renvoient une valeur numérique, une
valeur de type date ou heure, ou une chaîne.
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• DATEADD
– Renvoie une nouvelle valeur datetime calculée en
ajoutant un intervalle à la date spécifiée.
– Syntaxe
DATEADD ( intervalle , nombre, date )
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• DATEDIFF
– Renvoie le nombre de limites de date et d'heure
traversées entre deux dates données.
– Syntaxe
DATEDIFF ( intervalle , dateDebut , dateFin )
Exemple : calcul de l’age des stagiaires
SELECT DATEDIFF(year, dateNaissance, getdate())
FROM stagiaire
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• DATEPART
– Renvoie un entier représentant l'élément de date
précisé dans la date spécifiée.
– Syntaxe :
DATEPART ( intervalle , date
) Exemple :
SELECT DATEPART(month, dateNaissance)
FROM stagiaire
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI
)
LMD : Autres Opérateurs
• Day, MONTH et YEAR
– Renvoient respectivement le jour, mois et année
d’une date donnée
– Syntaxes :
• DAY ( date )
• MONTH ( date )
• YEAR (date)
1 ère année BTS-DSI Base de Données Relationnelle Prof: H. BAKRI