0% ont trouvé ce document utile (0 vote)
49 vues110 pages

Bases de Donnees: Langage SQL

Transféré par

You
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
49 vues110 pages

Bases de Donnees: Langage SQL

Transféré par

You
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi