Vous êtes sur la page 1sur 11

FSG - Cours : Bases de Donnes Le langage SQL

SQL : Structured Query Language SQL : Langage de Dfinition des Donnes (LDD)
Introduction INTRODUCTION
SQL est un langage pour les BDR. Cr en 1970 par IBM. La dfinition de donnes dans SQL permet la dfinition des objets
Principales caractristiques de SQL : manipuls par le SGBD.
Les objets : table, vue, index
. : SQL implmente le modle relationnel.
Les commandes du LDD sont :
: Du fait de cette normalisation, la plupart des diteurs de
a. CREATE : cration des objets.
SGBDR intgrent SQL leurs produits (Oracle, Informix, Sybase,
b. ALTER : modification de la structure des objets.
Ingres, MS SQL Server, DB2, etc.). Ainsi, les donnes, requtes et c. DROP : suppression des objets.
applications sont assez facilement portables dune base une autre. o Cration dune table
.. : SQL est un langage de requtes qui permet Vous devez avoir :
lutilisateur de demander un rsultat sans se proccuper des moyens Le privilge CREATTE TABLE
techniques pour trouver ce rsultat (assertionnel). Cest loptimiseur du Une zone de stockage
SGBD (composant du moteur) qui se charge de cette tche. Syntaxe de Cration dune table
.. : SQL peut tre utilis tous les niveaux dans la gestion CREATE TABLE nom_table
(colonne1 type [DEFAULT expr][, ..]);
dune BDR :
Vous devez spcifier :
Langage de Dfinition de Donnes LDD,
Un nom pour la table crer
Langage de Manipulation de Donnes LMD,
Pour chaque colonne de la table :
Langage de Contrle de Donnes LCD. Le nom de la colonne,
Langage de dfinition de donnes LDD : permet la description Son type
de la structure de la base de donnes (tables, vues, attributs, Sa taille
index). Loption DEFAULT spcifie une valeur par dfaut pour une colonne
Langage de manipulation de donnes LMD : permet la donne dans un ordre insert
manipulation des tables et des vues avec les quatre Dfinition des colonnes :
commandes : SELECT, INSRET, DELETE, UPDATE. La taille indique la valeur maximale de la longueur du champ.
Langage de contrle de donnes LCD : comprend les primitives de Les types de donnes les plus utiliss :
CHAR(n) : chane de caractres de longueur fixe avec 1 <= n <= 2000.
gestion des transactions : COMMIT, ROLLback et des privilges
(Si on ne spcifie pas la longueur une colonne de ce type ne stocke qu'un
daccs aux donnes : GRANT et REVOKE.
seul caractre)

Responsable du cours : Mohamed Labidi Page 16


FSG - Cours : Bases de Donnes Le langage SQL
VARCHAR2(n) : chane de caractres de longueur variable avec 1 <= n .................................................................................................... ...................
<= 4000. .
NUMBER : nombre entier ou dcimal de 40 positions maximum de la .......................................................................................................................
forme : .
Chiffre de 0 9 avec les signes + , - et le point dcimal . .................................................................................................... ...................
NUMBER(n) : mme chose que NUMBER avec une taille spcifique. La .
valeur maximale de n est 105. .......................................................................................................................
NUMBER(n,m) : nombre dcimal pouvant avoir au maximum n chiffres .
dont m aprs la virgule. .................................................................................................... ...................
DATE : date dont le format standard est DD MON - YYYY. .
Exemple : Crer la table Produit ayant comme schma : .......................................................................................................................
Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, .
.................................................................................................... ...................
Prix) Avec
.
Numprod : de type numrique de taille 6, Dfinition des contraintes dintgrit
Desprod : de type caractre variable de taille 15, Une contrainte d'intgrit est une
Couleur : de type caractre sur une position, o Proprit smantique que doivent respecter les donnes afin
Poids : de type numrique sur huit positions dont trois chiffre aprs la dassurer la cohrence de la BD.
virgule, o Rgle qui permet de contrler au mieux la valeur dune
Qte_stk : de type numrique sur sept positions dont trois chiffres colonne
aprs la virgule, Les contraintes dfinies par SQL sont :
Qte_seuil : de type numrique sur sept positions dont trois chiffres NOT NULL : Non nullit des valeurs d'un attribut : L'utilisateur
aprs la virgule,
est oblig de saisir la valeur de l'attribut.
Prix : de type numrique sur dix positions dont sept chiffres avant la
UNIQUE : Unicit de la valeur d'un attribut ou d'un groupe
virgule.
d'attributs : la valeur doit tre unique.
........................................................................................................ ...............
Exemple
.
On suppose que deux produits diffrents ne peuvent pas avoir
.................................................................................................... ...................
la mme dsignation et que le champ couleur est obligatoire. La
.
commande de cration da la table produit devient :
...................................................................................................................... .
.................................................................................................... ...................
.
.

Responsable du cours : Mohamed Labidi Page 17


FSG - Cours : Bases de Donnes Le langage SQL
....................................................................................................................... .................................................................................................... ...................
. .
.................................................................................................... ................... .................................................................................................... ...................
. .
Cl primaire (un attribut ou un groupe) : indique que l'attribut est Exemple 2 : Cl primaire comme contrainte de colonne
une cl primaire. Elle peut tre dfinie comme contrainte de table ou
.......................................................................................................................
comme contrainte de colonne.
.
Cl primaire comme contrainte de table selon la syntaxe :
.................................................................................................... ...................
CONSTRAINT nom_contrainte PRIMARY KEY(att1, att2,, attn) ;
.
Cl primaire comme contrainte de colonne : en ajoutant devant la
.......................................................................................................................
colonne cl primaire : Primary Key.
.
Remarque : Dans le cas de cl primaire multiple, la cl primaire
.................................................................................................... ...................
doit tre cre comme contrainte de table (Syntaxe 1).
.
Exemple 1 : Cl primaire comme contrainte de table
................................................................................................. ......................
pour Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, .
Qte_seuil, Prix) .................................................................................................... ...................
.
.................................................................................................... ...................
Exemple 3 : Cl primaire multiple
.
LigneCommande (NumCde, NumProd, QteCde)
.......................................................................................................................
CREATE TABLE LigneCommande
.
(Num_cde number(8),
.................................................................................................... ...................
NumProd number(6),
.
QteCde number(7,3),
.......................................................................................................................
.................................................................................................... ...................
.
.
.................................................................................................... ...................
.
.
Remarque
.............................................................................................. .........................
.
Dans le cas de cl primaire multiple, la cl primaire doit tre cre
.................................................................................................... ................... comme contrainte de table.
.

Responsable du cours : Mohamed Labidi Page 18


FSG - Cours : Bases de Donnes Le langage SQL
1) Cl trangre (intgrit rfrentielle) : lorsque la cl primaire
figure dans une autre table en tant qu'un attribut. La cl trangre peut
tre dfinie comme contrainte de table ou comme contrainte de colonne. La commande pour la cration de la table Produit peut tre crite de
Cl trangre comme contrainte de table selon la syntaxe : deux faons:
CONSTRAINT nom_contrainte FOREIGN KEY(nom_att) references Solution 1: cl trangre comme contrainte de table
nom_table(nom_att) [ON DELETE CASCADE] CREATE TABLE Produit
Cl trangre comme contrainte de colonne : en ajoutant devant la (Numprod number(6) primary key,
colonne cl trangre : references nom_table(nom_att) [ON
DELETE CASCADE]
Remarque :
Il est impossible de crer une cl trangre si la cl primaire associe Solution 2: cl trangre comme contrainte de colonne
n'existe pas. CREATE TABLE Produit
ON DELETE CASCADE : demande la suppression des lignes dpendantes (Numprod number(6) primary key,
dans la table en cours de dfinition ds que la ligne contenant la cl primaire
correspondante dans la table maitre est supprime.
Dfinition des contraintes
Types de CI Oracle :
NULL / NOT NULL : niveau colonne
1. UNIQUE (colonne1 [, colonne2] )
2. PRIMARY KEY (colonne1 [, colonne2] )
3. FOREIGN KEY (colonne1 [, colonne2] )
REFERENCES nomTablePere (colonne1 [, colonne2] )
[ON DELETE {CASCADE | SET NULL }]
4. CHECK {condition}
Les 4 dernires CI sont dfinissables au niveau colonne ou au niveau table. o Modification de la structure dune table
Si on considre le schma suivant : Trois possibilits de modification de la structure de table :
MAGASIN(NumMag, Adresse, Surface) . des colonnes, . la structure d'une colonne ou
PRODUIT(NumProd, DesProd, Couleur, Poids, Qte_Stk, CodMag #) . des colonnes existantes.
La commande pour la cration de la table Magasin tant :

Responsable du cours : Mohamed Labidi Page 19


FSG - Cours : Bases de Donnes Le langage SQL
Ajout de nouvelles colonnes une table Remarque :
Syntaxe : Il n'est pas possible de mettre jour plus qu'une table la fois.
ALTER TABLE nom_table
La modification des donnes nest pas autorise que si les contraintes
ADD (col1 type [(taille)] [null / not null] ,
sont toujours valides.
col2 type [(taille)] [null / not null] ,
Les valeurs peuvent tre des constantes, des expressions, des rsultats
...
coln type [(taille)] [null / not null] ) ; de sous-requtes ou NULL (pour supprimer la valeur initiale du champ).
Exemple : Si la clause Where napparat pas dans la commande, il sagit de mettre
Supposons qu'on veut ajouter une colonne type_clt la table client : jour tous les enregistrements de la table avec la mme valeur.
ALTER TABLE CLIENT Exemples
ADD type_clt char(3) ; Modifier la dsignation du produit numro 80 en Imprimante
Modification de la structure d'une colonne existante
Syntaxe :
ALTER TABLE nom_table
;
MODIFY (col1 type [(taille)] [null / not null] ,
Majorer de 5% les prix des produits dont le prix est suprieur 10.
col2 type [(taille)] [null / not null] ,
...
coln type [(taille)] [null / not null] ) ;
Remarque :
Pour modifier le nom d'une colonne : Modifier les quantits de tous les produits avec la valeur 10.
ALTER TABLE nom_table
RENAME ancien_nom_col TO nouveau_nom_col ;
Insertion travers la copie des valeurs des colonnes d'une autre table
INSERT INTO nom_table [(les champs de la table)] Requte; 2) Suppression de donnes
DELETE FROM nom_table
Exemple : INSERT INTO client_Sfax (num_clt, nom_clt, tel_clt) select *
from client Where ville =Sfax'; [WHERE condition];
Exemple :
1) UPDATE : Modification de donnes Supprimer tous les Produits de couleurs Blanche
UPDATE nom_table . Where Couleur = 'B';
SET col1 = val1 , , coln = valn Supprimer toutes les lignes de la table Produit
WHERE condition ; DELETE FROM Produit;

Responsable du cours : Mohamed Labidi Page 20


FSG - Cours : Bases de Donnes Le langage SQL
III. Modification de la structure dune table ADD Constraint Def_de_contrainte ;
Trois possibilits de modification de la structure de table : Exemple : Ajouter la relation Magasin la contrainte suivante : la surface
. des colonnes, . la structure d'une colonne ou doit tre comprise entre 10 et 100 m2
des colonnes existantes. ALTER TABLE Magasin ........................................................................
Ajout de nouvelles colonnes une table Suppression d'une contrainte cl primaire :
ALTER TABLE nom_table ALTER TABLE nom_table DROP PRIMARY KEY [CASCADE] ;
ADD (col1 type [(taille)] [null / not null] , Remarque : L'option cascade est ajoute pour pouvoir supprimer une cl
col2 type [(taille)] [null / not null] , primaire rfrence.
... Exemple : Supprimer la contrainte cl primaire de la table magasin
coln type [(taille)] [null / not null] ) ; ALTER TABLE .. DROP PRIMARY KEY CASCADE ;
Exemple: Supposons qu'on veut ajouter une colonne type_clt la table client Suppression d'une contrainte autre que la cl primaire :
ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte ;
Exemple : Supprimer la contrainte spcifiant les couleurs possibles pour les
produits ALTER TABLE produit DROP CONSTRAINT Ck4_Produit ;
Modification de la structure d'une colonne existante Remarque :
ALTER TABLE nom_table Pour retrouver les diffrentes contraintes avec leur proprits, on peut
MODIFY (col1 type [(taille)] [null / not null] , utiliser la commande suivante :
col2 type [(taille)] [null / not null] , Select * from user_constraints
... [where table_name = 'NOMTABLE' ];
coln type [(taille)] [null / not null] ) ; Il est remarquer que pour cette commande, le nom de la table doit tre crit
Remarque : Pour modifier le nom d'une colonne : en majuscule.
ALTER TABLE nom_table 2) Suppression dune table
RENAME ancien_nom_col TO nouveau_nom_col ; DROP TABLE nom_table ;
Suppression de colonnes existantes Exemple : Supposons qu'on veut supprimer la table client_tunis :
ALTER TABLE nom_table DROP TABLE client_tunis ;
DROP ( col1 , col2 ,, coln ) ; 3) Renommage et cration de synonymes de tables
Exemple : Supposons qu'on veut supprimer le champ ville de la table RENAME ancien_nom TO nouveau_nom ;
Magasin : Il est galement possible de donner une mme table plusieurs noms
ALTER TABLE Magasin .. ; diffrents appels synonymes :
3) Ajout d'une contrainte CREATE SYNONYM nom_synonyme FOR nom_table ;
ALTER TABLE nom_table 4) Pour supprimer un synonyme : DROP SYNONYM nom_synonym ;

Responsable du cours : Mohamed Labidi Page 21


FSG - Cours : Bases de Donnes Le langage SQL
SQL : Langage de Manipulation des Donnes (LMD) UPDATE nom_table
SET col1 = val1 , , coln = valn
Les commandes du LMD sont : WHERE condition ;
1) . : ajoute des lignes une table. Remarque :
2) .: mettre jour les colonnes dune table.
Il n'est pas possible de mettre jour plus qu'une table la fois.
3) .: suppression dun ou de plusieurs enregistrements.
La modification des donnes nest pas autorise que si les contraintes
4) .: dfinition de la liste des colonnes que lon peut obtenir.
sont toujours valides.
a. INSERT : ajouter des lignes une table.
Les valeurs ajouter doivent vrifier les contraintes dfinies au moment de la Les valeurs peuvent tre des constantes, des expressions, des rsultats
dfinition des donnes. Tout enregistrement ne vrifiant pas les contraintes de sous-requtes ou NULL (pour supprimer la valeur initiale du champ).
sera rejet. Si la clause Where napparat pas dans la commande, il sagit de mettre
Il existe deux formes dinsertions de donnes : jour tous les enregistrements de la table avec la mme valeur.
Insertion des valeurs pour la totalit des valeurs de la table Exemples
INSERT INTO nom_table [(les champs de la table)] VALUES (liste des Modifier la dsignation du produit numro 80 en Imprimante
valeurs) ;

Les valeurs des colonnes de type caractre ou chane de caractre doivent


apparatre entre deux cotes ( ' ' ).

Il est possible dinsrer un enregistrement en connaissant seulement les Majorer de 5% les prix des produits dont le prix est suprieur 10.
valeurs de quelques champs. Pour cela , il faut

Soit indiquer la liste des champs insrer et leurs valeurs respectives

Soit mettre NULL dans la liste de valeurs pour les champs vides.
Modifier les quantits de tous les produits avec la valeur 10.
Les champs ayant t crs avec la contrainte Not Null devront,
obligatoirement, avoir des valeurs. c. DELETE Suppression de donnes
DELETE FROM nom_table
Insertion travers la copie des valeurs des colonnes d'une autre table
[WHERE condition];
INSERT INTO nom_table [(les champs de la table)] Requte;
Exemples :
Exemple : INSERT INTO client_Sfax (num_clt, nom_clt, tel_clt) select * o Supprimer tous les Produits de couleurs Blanche
from client Where ville =Sfax';

b. UPDATE : Modification de donnes


Responsable du cours : Mohamed Labidi Page 22
FSG - Cours : Bases de Donnes Le langage SQL
o Supprimer toutes les lignes de la table Produit [WHERE condition];
DELETE FROM Produit; Exemple : Afficher les numros et dsignations de tous les produits. Les
d. SELECT Consultation de donnes titres des colonnes afficher seront respectivement Numro et Nom
SELECT col1, col2, ,coln Produit
FROM nom_table Select numprod Numro, desprod "Nom produit" From Produit;
[WHERE condition]; La condition est compose gnralement de trois termes :
SELECT : dfinir la liste des colonnes que l'on peut obtenir. un nom de colonne,
FROM : noms des tables ncessaires pour obtenir le rsultat souhait. un oprateur de comparaison,
WHERE : la condition que doit vrifier un n-uplet donn pour qu'il fasse et une constante, une colonne, une liste de valeurs, une expression ou une
partie du rsultat. requte.
Remarques Oprateurs classiques de comparaison ( = , <> , < , > , >= , <= )
SELECT * pour avoir toutes les colonnes de la table. Oprateurs spcifiques dont principalement :
pour avoir toutes les lignes de la table, on ne met pas la clause WHERE. o IS NULL
Exemple o IN (liste de valeurs)
On considre la table o BETWEEN V1 and V2
Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix) o LIKE chane gnrique :
1-Afficher les numros et dsignations de tous les produits La chane gnrique est une chane de caractres qui contient l'un des
caractres suivants :
2-Afficher les numros et dsignations de produits existants en stock avec une % : remplace une autre chane de caractres qui peut tre mme
quantit > 20 une chane vide.
- : remplace un seul caractre.
3-Afficher les produits existants en stock avec une quantit > 20 Si la condition est compose de sous conditions, on fait recours aux
oprateurs logiques AND, OR et la ngation NOT (NOT In, NOT Like,
4-Afficher les couleurs des diffrents produits. NOT Between, Is NOT LIKE)
Exemples :
Notion dalias 1) Afficher les numros de produits dont la couleur na pas t saisie.
On peut modifier ces noms de colonnes, l'affichage uniquement, en ajoutant
des ALIAS. Si lalias est compos de plusieurs mots il faut quil apparaisse 2) Afficher les produits de couleur Rouge, Bleu ou Gris,
entre cotes " ". La commande devient :
SELECT col1 [alias 1], col2 [alias 2], ,coln [alias n] 3) Afficher les numros de produits dont le prix est compris entre 100 et 200,
FROM nom_table

Responsable du cours : Mohamed Labidi Page 23


FSG - Cours : Bases de Donnes Le langage SQL
4) Afficher les produits dont la dsignation commence par 'o. Afficher la dsignation et les prix arrondis en Dinars de tous les produits
e. Afficher les numros et dsignations des produits dont les noms SELECT desprod, ROUND(prix) "Prix en D" FROM produit;
commencent par 'o' ou par 's'. Modifier la table produit de manire majorer les prix en dinars.
Update produit Set prix = ceil(prix);
f. Afficher les dsignations des produits contenant 'r' en deuxime position Supprimer tous les produits dont le prix appartient [100,101]
de la dsignation et existant en stock avec une quantit > 20. Delete from Produit Where floor(prix) = 100;
Les fonctions s'appliquant aux chanes de caractre
RTRIM (ch) : supprime l'espace la fin de la chane LTRIM.
Remarque
RPAD (ch,n) : ajoute n espaces l'espace la fin de la chane LPAD.
Il existe une forme de cration de tables accompagne d'une insertion. Cette INITCAP(ch) : met en majuscule la premire lettre de chaque mot de la
forme permet de crer une table et d'y insrer des donnes partir d'une ou chane.
plusieurs tables ou vues. INSTR(ch1,ch2,n,m) : donne la position de la m ime occurrence de ch2
Syntaxe : CREATE TABLE nom_table dans ch1 partir du caractre la position n.
[ (col1 type [(taille)] [null / not null] , LENGTH(ch) : renvoie la longueur d'une chane.
col2 type [(taille)] [null / not null] , LOWER(ch) : transforme la chane ch en minuscule UPPER.
... SUBSTR(ch,m,n) : permet d'extraire la sous-chane de ch qui commence
coln type [(taille)] [null / not null] ) ] partir du caractre la position m et de longueur n.
AS requte ; TRANSLATE(ch,ch1,ch2) : permet de transformer dans la chane ch
toutes les occurrences de ch1 par ch2.
Dans les clauses SELECT et WHERE, on peut utiliser des expressions
Replace(ch, ch1[,ch2]) : remplace une chane par une autre dans une
arithmtiques et des fonctions :
colonne. Si on ne met pas ch2, ch1 va tre remplace par un vide.
Les expressions arithmtiques
ABS(n) : permet de calculer la valeur absolue de n. ch1ch2 : concatne les deux chanes.
Exemples
CEIL(n) : permet d'avoir le plus petit entier suprieur ou gal n.
Afficher les numros des produits correspondants des souris.
Ceil(128.3) retourne 129 Ceil(128.8) retourne 129
FLOOR(n) : permet d'avoir la partie entire de n.
Supprimer les produits dont la dsignation est compose au maximum
FLOOR(128.3) retourne 128 FLOOR(128.8) retourne 128
de 6 caractres.
MOD(m,n) : permet d'avoir le reste de la division entire de m par n.
ROUND(m,n) : arrondit la valeur n m dcimal.
Afficher les dsignations des produits avec la premire lettre en
Round(128.3) retourne 128 Round(128.8) retourne 129
majuscule
POWER(m,n) : permet d'avoir m puissance n
SIGN(n) : donne 1 si n <0, donne 0 si n=0 et donne 1 si n>1. Afficher les numros et couleurs des produits dont la dsignation contient
SQRT(n) : permet d'avoir x. "er" partir de la 6me position.
Exemples

Responsable du cours : Mohamed Labidi Page 24


FSG - Cours : Bases de Donnes Le langage SQL
Select matricule, months_between(dateEmb, dateNais) "Age en Mois"
From Employe;
Afficher toutes les dsignations des produits en remplaant toute "a" par Afficher le matricule et lge en annes de lemploy lors de son embauche
"A" Select matricule, .. "Age" From
; Employe;
Ajouter le champ Propriete de type caractre variable sur 4 positions Afficher le matricule et le nombre de jours de travail pendant le premier
mois dembauche de chaque employ.
form des trois premires caractres de la dsignation concatns la
Select matricule, .. "Nombre de Jours"
couleur. From Employe;
Alter table .. Exemple 09/10/2006 last_day(09/10/2006) 30/10/2006
Add . varchar(4); 30/10/2006 - 09/10/2006 + 1 = 22 J
Update ..
Les fonctions de conversion
Set propriete= substr(ltrim(;
TO_CHAR(valeur-date, format-date) / TO_CHAR(nombre[,format]) :
Les expressions s'appliquant des dates
convertit une date ou une valeur numrique une chane de caractres.
ADD_MONTHS(d,n) : permet d'ajouter n mois la date d sachant que n est
TO_DATE(valeur-chane, format-date) : convertit une chane de caractres
un entier.
reprsentant une date une date.
GREATEST(d1,d2) : permet d'avoir la date la plus rcente parmi d1 et d2
LEAST. TO_NUMBER(ch[,format]) : convertit une chane de caractres
reprsentant un nombre en nombre.
MONTHS_BETWEEN(d1,d2) : permet d'avoir le nombre de mois qui se
trouvent entre la date d1 et la date d2. Les expressions agrgats (ou fonctions de groupe)
ORACLE dispose d'une fonction appele fonctions agrgats qui s'appliquent
LAST_DAY(d) : permet d'avoir la date du dernier jour de la date d.
un ensemble de donnes :
LAST_DAY('02/01/02') donne : 31/01/02 AVG : permet d'avoir la moyenne arithmtique d'un ensemble donn.
SYSDATE : donne la date et l'heure systme. COUNT : permet d'avoir le nombre d'occurrences des enregistrements.
Exemples
MAX : permet d'avoir la valeur maximale dans une colonne.
Soit la table Employ (Matricule, Nom, Prenom, Date_nais, Date_emb)
MIN : permet d'avoir la valeur minimale dans une colonne.
On suppose quun employ est la retraite lge de 60 ans, afficher les noms
SUM : permet d'avoir la somme des lments.
et prnoms des employs ainsi que leurs dates de retraite
STDDEV : permet d'avoir l'cart type.
Select nom, prenom, add_months(dateNais, 720) "retraite" From Employe; VARIANCE : permet d'avoir la variance.
En supposant quun employ est la retraite aprs 30 ans de service. Chacune de ces fonctions a comme argument un nom de colonne ou une
Afficher les noms et prnoms des employs ainsi que les dates prvus pour expression arithmtique. Elles ignorent les valeurs nulles et par dfaut prennent
leurs retraites les valeurs multiples pour des valeurs diffrentes.
Select nom, prenom, add_months(dateEmb, 360) "retraite" From Employe; Pour ne prendre que les valeurs distinctes, il faut ajouter l'oprateur
Afficher le matricule et lge en mois de lemploy lors de son embauche DISTINCT. Et si l'on veut insister pour prendre toutes les valeurs qui existent,
on doit prcder la colonne ou l'expression par l'oprateur ALL.
Responsable du cours : Mohamed Labidi Page 25
FSG - Cours : Bases de Donnes Le langage SQL
La fonction COUNT peut prendre comme argument le caractre * pour Les noms des tables, dans la clause FROM sont spars par des virgules.
connatre le nombre de lignes slectionnes. La condition de jointure est dans la clause WHERE.
Remarque Les noms de colonnes doivent tre prfix par les noms de tables pour viter
On ne peut pas mettre une fonction de groupe aprs la clause WHERE parce toute ambigut.
qu'elle s'agit d'une valeur inconnue. La forme gnrale d'une requte de jointure est :
SELECT col1 , col2 , . , coln
Exemples FROM table1 [variable 1] , . , tablen [variable n]
Donner le nombre de produits de couleurs rouge WHERE condition ;
SELECT Count(*) "Nombre" FROM Produit Where Upper(Couleur)='R'; Exemple : Magasin (Nummag, adresse, Surface)
Afficher la quantit totale en stock des produits de couleur Rouge Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil; Prix,
SELECT sum(qte_stk) "quantit" FROM Produit Nummag#)
Where Upper (Couleur) = 'R'; Afficher les numros des produits ainsi que leur adresse de stockage
Afficher la quantit moyenne en stock des produits de couleur Rouge
SELECT avg(qte_stk) "quantit" FROM Produit
Where upper (Couleur) = 'R'; Afficher les adresses des magasins contenant le produit numro 100
Afficher les quantits minimales et maximale des produits en stock
SELECT max(qte_stk) "maximum" , min(qte_stk) "minimum"
FROM Produit; Afficher les surfaces des magasins des produits dont le poids est entre 100 et
500
Tri des rsultats
Pour obtenir un rsultat tri, il suffit d'ajouter la requte SQL la clause :
expression [asc / desc]
Remarque : L'autojointure
Si on ne spcifie pas asc ou desc par dfaut le tri est croissant (asc). Elle consiste faire une jointure d'une table avec elle-mme dans le but de
construire un n-uplet contenant des attributs en provenance de deux lignes,
Exemple :
inter-relies, cherches dans la mme table. Pour cela il faut crer un
Donner la liste des produits ordonns par ordre croissant de leurs prix.
SYNONYME de la table ou utiliser des variables ALIAS.
SELECT * FROM produit ORDER BY prix;
Donner la liste des produits ordonns par ordre croissant de leurs prix et Exemple
Trouver la dsignation et le prix unitaire des produits dont le prix est suprieur
dcroissant de leurs dsignations.
celui du produit 10
SELECT * FROM produit ORDER BY prix, desprod desc;
Solution avec synonyme
La jointure simple CREATE .. prod FOR produit;
Elle permet de .. issues partir de deux ou Select prod.desprod, prod.prix From , . Where
plusieurs tables en vue de retrouver des donnes associes. .numprod = 10 and .prix > ...prix;
Les colonnes utilises pour faire la jointure doivent tre de . et de Solution avec ALIAS
.. et sont appels ... Select p1.desprod, p2.prix From produit p1, produit p2 Where
Pour effectuer une jointure, il faut spcifier : p2.numprod=10 and p1.prix > p2.prix;
Responsable du cours : Mohamed Labidi Page 26