Sie sind auf Seite 1von 106

Rsum

SQL

Auteur:
Edition:
E-mail :
URL :

Alexandre PATIN
22 fvrier 2000
alexandre.patin@free.fr
http://alexandre.patin.free.fr/

S. Q. L.

Toute reproduction, mme partielle, par quelque procd que ce soit, est interdite sans
autorisation crite et pralable de monsieur Alexandre PATIN. Une copie par xrographie,
photographie, film, bande magntique ou autre, constitue une contrefaon passible des peines
prvues par la loi (du 11 mars 195 et du 3 juillet 1985) sur la protection des droits dauteur.
De plus, toute utilisation collective de ce document est interdite sans le consentement crit et
pralable de lauteur, monsieur Alexandre PATIN.

Auteur: A.P.

2/2

S. Q. L.
Sommaire
I.

INTRODUCTION ........................................................................................................................................5

OBJECTIFS.................................................................................................................................................................5
CONVENTIONS SYNTAXIQUES....................................................................................................................................5
II.

CONCEPTS ..................................................................................................................................................6

CONTENU DUNE BASE DE DONNEES .........................................................................................................................6


TYPES DE DONNEES ..................................................................................................................................................7
Donnes numriques exactes entires.................................................................................................................7
Donnes numriques exactes dcimales..............................................................................................................7
Donnes numriques arrondies...........................................................................................................................7
Donnes montaires............................................................................................................................................7
Donnes horaires ................................................................................................................................................8
Donnes alphanumriques..................................................................................................................................8
Donnes binaires.................................................................................................................................................8
Donnes boolennes............................................................................................................................................8
Donnes scurises (uniquement sur serveur SQL scuris) ..............................................................................9
Valeur Nulle ........................................................................................................................................................9
OPERATEURS ..........................................................................................................................................................10
Oprateurs arithmtiques..................................................................................................................................10
Oprateurs binaires ..........................................................................................................................................10
Oprateurs de comparaison..............................................................................................................................10
Oprateurs logiques..........................................................................................................................................11
Priorit des oprateurs logiques.......................................................................................................................11
Oprateur UNION.............................................................................................................................................12
TABLES...................................................................................................................................................................13
JOINTURES ..............................................................................................................................................................14
Utilisation des jointures ....................................................................................................................................14
Jointures externes..............................................................................................................................................15
PROCEDURES STOCKEES .........................................................................................................................................16
Gestion des procdures.....................................................................................................................................16
Utilisation de paramtres..................................................................................................................................17
Utilisation de paramtres pour retourner des valeurs depuis une procdure...................................................19
Utilisation du code status retourn par une procdure.....................................................................................20
TRIGGERS ...............................................................................................................................................................21
Gestion des triggers ..........................................................................................................................................21
Fonctionnement dun trigger ............................................................................................................................22
III. PRINCIPALES COMMANDES...............................................................................................................23
ALTER TABLE.....................................................................................................................................................23
CREATE TABLE ..................................................................................................................................................24
DECLARE .............................................................................................................................................................26
DELETE ................................................................................................................................................................27
DROP TABLE.......................................................................................................................................................28
GRANT..................................................................................................................................................................29
INSERT .................................................................................................................................................................32
REVOKE ...............................................................................................................................................................32
SELECT.................................................................................................................................................................33
Utilisation de SELECT pour des interrogations de tables. ...............................................................................33
Utilisation de SELECT pour assigner des valeurs aux variables locales. ........................................................35
SET ........................................................................................................................................................................36
UPDATE................................................................................................................................................................37

Auteur: A.P.

3/3

S. Q. L.
IV.

EXPRESSION DES SELECTIONS..........................................................................................................38

FORMAT GENERAL DUNE SELECTION .....................................................................................................................38


CLAUSES DACCOMPAGNEMENT .............................................................................................................................39
COMPUTE........................................................................................................................................................39
GROUP BY et HAVING ....................................................................................................................................41
ORDER BY........................................................................................................................................................44
WHERE .............................................................................................................................................................45
PREDICATS DE SELECTION.......................................................................................................................................46
ALL....................................................................................................................................................................47
ANY ...................................................................................................................................................................47
BETWEEN.........................................................................................................................................................48
DISTINCT .........................................................................................................................................................48
EXISTS ..............................................................................................................................................................49
IN.......................................................................................................................................................................49
LIKE..................................................................................................................................................................50
NULL.................................................................................................................................................................52
SOME................................................................................................................................................................52
V. PROGRAMMATION STRUCTUREE....................................................................................................53
GROUPES DINSTRUCTIONS .....................................................................................................................................53
EXECUTION CONDITIONNELLE ................................................................................................................................54
EXECUTION REPETITIVE..........................................................................................................................................55
EXECUTION EVENEMENTIELLE ...............................................................................................................................56
VI. FONCTIONS ..............................................................................................................................................57
FONCTIONS DAGREGATION ....................................................................................................................................57
FONCTIONS DE CONVERSION DE TYPES ...................................................................................................................58
FONCTIONS DE MANIPULATION DE DATES ...............................................................................................................59
FONCTIONS MATHEMATIQUES.................................................................................................................................60
FONCTIONS DAGREGATION LINEAIRES ...................................................................................................................62
FONCTIONS DE MANIPULATION DE CHAINES............................................................................................................63
FONCTIONS SYSTEME..............................................................................................................................................65
FONCTIONS DE MANIPULATION DE TEXTES ET DIMAGES.........................................................................................67
VII.

EXEMPLES DE REQUETES ..............................................................................................................68

DESCRIPTION ..........................................................................................................................................................68
CONTENU DES TABLES............................................................................................................................................68
EXEMPLES DE REQUETES........................................................................................................................................70
Requtes de slections.......................................................................................................................................70
Requtes de mises jour...................................................................................................................................85
Requtes complexes...........................................................................................................................................88
VIII. ANNEXES ..............................................................................................................................................94
MOTS CLES RESERVES.............................................................................................................................................95
BIBLIOGRAPHIE.......................................................................................................................................................97
LEXIQUE .................................................................................................................................................................98
INDEX .....................................................................................................................................................................99

Auteur: A.P.

4/4

S. Q. L.

I. INTRODUCTION
Objectifs
Cet ouvrage recueille et dveloppe la plupart des lments du langage SQL.
Dans les premiers chapitres, les concepts, commandes et fonctions du langage sont numrs
de la manire la plus complte possible et souvent illustrs par des exemples.
Ensuite, une liste dexemples de requtes de complexit progressive aborde les principaux
aspects du langage.
Ainsi, que vous soyez un utilisateur dbutant ou confirm, vous disposez de tous les lments
pour crer et adapter vos requtes spcifiquement vos besoins.

Conventions syntaxiques
Elment Description

{}
|
[]
...

Les accolades indiquent que vous devez


choisir au moins une des options proposes.
Les barres verticales signifient que vous ne
pouvez slectionner quune des options
proposes.
Les crochets indiquent que leur contenu est
optionnel.
Remarque : Il ne faut pas saisir les crochets.
Les ... indiquent que vous pouvez rpter le
dernier bloc autant de fois que vous le dsirez.

Auteur: A.P.

Exemple

{ option1, option2, option3 }


{ option1 | option2 | option3 }
[ option ]

5/5

S. Q. L.

II. CONCEPTS
Contenu dune base de donnes
Une base de donnes est une collection de tables contenant des informations corrles.
Schma du contenu dune base de donnes:

Base de donnes

Procdures

Vues

Rgles
Tables
Types de donnes

Dfauts

Triggers

Auteur: A.P.

6/6

S. Q. L.

Types de donnes
Donnes numriques exactes entires
Type de donnes
tinyint
smallint

Synonymes Plage de valeurs


0 255
-215 215-1
(-32 768 32 767)
31
int integer -2
231-1
(-2 147 483 648 2 147 483 647)

Octets de stockage
1
2
4

Donnes numriques exactes dcimales


Type de donnes
numeric (p,s)
decimal (p,s)

Synonymes Plage de valeurs


Octets de stockage
-1038 1038-1 2 17
-1038 1038-1 2 17

Donnes numriques arrondies


Type de donnes
float (precision)
double precision
real

Synonymes Plage de valeurs


en fonction du matriel
en fonction du matriel
en fonction du matriel

Octets de stockage
4 ou 8
8
4

Donnes montaires
Type de donnes
smallmoney
money

Auteur: A.P.

Synonymes Plage de valeurs


-214 748.3648 214 748.3647
-922 337 203 685 477.5808
922 337 203 685 477.5807

Octets de stockage
4
8

7/7

S. Q. L.

Donnes horaires
Type de donnes
smalldatetime
datetime

Synonymes Plage de valeurs


du 01/01/1900 au 06/06/2079
du 01/01/1753
00h00 au
31/12/9999 23h59

Octets de stockage
4
8

Donnes alphanumriques
Type de donnes
Synonymes
Plage de valeurs
Octets de stockage
char(n) character
255 caractres ou moins
n
varchar(n) character varying,
255 caractres ou moins taille relle de la chaine
char varying
nchar(n) national charcter, 255 caractres ou moins
n x@@ncharsize
national char
nvarchar(n) nchar varying,
255 caractres ou moins nombre de caractres x
national char varying,
@@ncharsize
national
character
varying
text(n)
231-1 caractres ou 0 ou un multiple de 2k
moins

Donnes binaires
Type de donnes
binary (n)
varbinary(n)
image

Synonymes Plage de valeurs


255 octets ou moins
255 octets ou moins
231-1 octets ou moins

Octets de stockage
n
taille relle de la donne
0 ou un multiple de 2k

Donnes boolennes
Type de donnes
bit

Auteur: A.P.

Synonymes Plage de valeurs


0 ou 1

Octets de stockage
8

8/8

S. Q. L.

Donnes scurises (uniquement sur serveur SQL scuris)


Type de donnes
sensitivity
sensitivity_boundary

Synonymes Plage de valeurs

Octets de stockage
4
4

Valeur Nulle
La valeur nulle : NULL, marque les colonnes ayant une valeur inconnue (par opposition
celles qui ont la valeur zro ou une chane vide). NULL permet la distinction entre une saisie
dlibre de zro (pour les colonnes numriques) ou vide (pour les colonnes de type caractre)
et non-saisie.
Une valeur NULL ne peut jamais vrifier une galit, mme avec une autre valeur NULL.
Une rgle lie une colonne doit inclure le NULL dans sa dfinition pour permettre
linsertion de valeurs NULL. Quand une ligne est cre, si aucune valeur nest spcifie dans
la colonne, aucun dfaut nest dfini, les NULL sont permis dans la colonne, alors le serveur
assignera automatiquement la valeur NULL.
Exemples dutilisation du mot cl NULL:
Dans une commande CREATE TABLE :
nom_colonne type_de donne [ NULL | not NULL ]
Dans une commande SELECT :
where nom_colonne is [ not ] NULL
Dans une commande UPDATE :
set nom_colonne = { expression | NULL }
Dans une commande INSERT :
values ( { contante | NULL } [, { constante | NULL } ] ... )

Auteur: A.P.

9/9

S. Q. L.

Oprateurs
Oprateurs arithmtiques
Symbole
Signification
+
addition
- soustraction
* multiplication
/ division
%
modulo (extension TRANSACT-SQL)

Oprateurs binaires
Symbole
&
|
^
~

Signification
ET binaire (2 oprandes)
OU binaire (2 oprandes)
OU Exclusif binaire (2 oprandes)
NON binaire (1 oprande)

Oprateurs de comparaison
Symbole
Signification
=
gal
< Suprieur
> Infrieur
>= Suprieur ou gal
<= Infrieur ou gal
<> diffrent de
!= non gal (extension TRANSACT-SQL)
!> non suprieur (extension TRANSACT-SQL)
!< non infrieur (extension TRANSACT-SQL)

Auteur: A.P.

10/10

S. Q. L.

Oprateurs logiques
Oprateur
NOT

Fonction
Permet de slectionner des lignes qui ne rpondent pas des critres de
recherche.
AND Oprateur logique ET.
OR
Oprateur logique OU.

Priorit des oprateurs logiques


Si le nombre dexpressions logiques est important, le rsultat dpend de lordre dans
lequel les oprations lmentaires seffectuent. Cet ordre est dfini par la priorit des
oprateurs.
SQL effectue dabord les comparaisons, puis les NOT, puis les AND et en dernier les
OR.
Pour plus de sret, il est conseill demployer des parenthses afin de grouper les
expressions.

Auteur: A.P.

11/11

S. Q. L.

Oprateur UNION
Retourne un rsultat unique combinant les rsultats de deux requtes ou plus.
Lunion de plusieurs tables aboutit une table logique qui unit les lignes renvoyes par
chacune des slections.
Syntaxe
select liste_de_selection [ clause into ]
[ clause from ] [ clause where ]
[ clause group by ] [ clause having ]
[ union [ all ]
select liste_de_selection
[ clause from ] [ clause where ]
[ clause group by ] [ clause having ] ] ...
[ clause order by ]
[ clause compute ]
Exemple:
Enonc:
Slectionner les auteurs du 19
commence par un E.

me

sicle et les auteurs des livres dont le titre

Requte:
SELECT nom_auteur FROM AUTEURS WHERE siecle = 19
UNION
SELECT nom_auteur FROM LIVRES WHERE titre LIKE E%
Retour:
nom_auteur
BALZAC
DUMAS

Remarques: Les lignes en double sont limines du rsultat tant que le mot cl ALL nest
pas spcifi.
Les tables renvoyes par les slections successives doivent contenir le mme
nombre de colonnes; ces colonnes doivent avoir des caractristiques identiques.

Auteur: A.P.

12/12

S. Q. L.

Tables
Dans une base de donnes relationnelle, les donnes sont organises en tables.
Une table contient les donnes relatives une classe particulire dobjets.
Les tables sont constitues de lignes (ou enregistrements) et de colonnes (ou attributs).
Chaque colonne a un nom.
Chaque colonne contient une proprit de lobjet concern par la table.
Chaque colonne contient des donnes dun type unique.
Chaque ligne contient les donnes relatives une occurrence de lobjet concern par la table.
Un nom de table, un nom de colonne et une ligne dterminent un lment unique.
Les commandes associes la dfinition de tables sont:
CREATE TABLE (cration)
ALTER TABLE (modification de la structure)
DROP TABLE (suppression)
Les commandes principales associes la modification du contenu de tables sont:
INSERT (ajout)
UPDATE (modification)
DELETE (effacement)

Auteur: A.P.

13/13

S. Q. L.

Jointures
Les jointures comparent deux tables (ou vues) ou plus en spcifiant une colonne pour chaque
table, comparant les valeurs de ces colonnes ligne par ligne et concatnant les lignes ayant des
valeurs correspondantes.
Une jointure peut tre incluse dans une commande SELECT, UPDATE, INSERT, DELETE,
ou une sous-requte. Les clauses et autres conditions de recherche peuvent accompagner une
jointure.

Utilisation des jointures


Toutes les tables doivent tre listes dans la clause FROM.
La clause WHERE spcifie la condition de jointure.
Les noms de colonnes ambigus doivent tre prfixs par le nom de la table.
Exemple:
Enonc:
Slectionner les livres (titre, numro ddition, distributeur, prix) dont le prix est
infrieur 30 francs.
Requte:
SELECT titre, num_edition, distributeur, prix
FROM LIVRES, TARIFS
WHERE LIVRES.reference = TARIFS.reference
AND prix < 30
Retour:
Titre num_edition distributeur prix
Les chouans
1
Les justes
1
The case book of Sherlock Holmes 1
The case book of Sherlock Holmes 1

Auteur: A.P.

X
X
Y
X

25
20
14
17

14/14

S. Q. L.

Jointures externes
Une jointure externe permet dafficher les lignes dune table mme si elles nont aucune
correspondance avec une autre table.
Les jointures externes sont spcifies en introduisant le caractre * du cot du signe = de la
table pour laquelle on veux afficher toutes les lignes.
Exemple:
Enonc:
Slectionner tous les livres (titre, rfrence, numro ddition, date ddition ) avec
leur date de deuxime dition sil y en a.
Requte:
SELECT titre, LIVRES.reference, num_edition, date_edition
FROM LIVRES, EDITIONS
WHERE LIVRES.reference *= EDITIONS.reference
AND num_edition = 2
Retour:
titre reference num_edition date_edition
Eugnie Grandet
L01
Lamour L02
La peste
L03
2
Les justes
L04
Les chouans
L05
2
Les trois mousquetaires
L06
The case book of Sherlock Holmes L07

Restriction:

Auteur: A.P.

08/07/96
28/08/82

La table interne (la plus loigne du signe *) ne doit pas apparatre dans une
autre condition de jointure de la clause WHERE.

15/15

S. Q. L.

Procdures stockes
Une procdure stocke est un suite dordres SQL stocke dans la base, pouvant tre excute
par lappel de son nom.
Les procdures peuvent recevoir et renvoyer des paramtres, retourner des valeurs et appeler
dautres procdures.
Les procdures sexcutent gnralement plus rapidement que les mmes instructions lances
de manire interactive ou partir dun batch.
Lutilisation de procdures rduit le trafic rseau.

Gestion des procdures


Les procdures sont cres, supprimes et excutes respectivement par les commandes
suivantes: CREATE PROC, DROP PROC, EXEC
Syntaxe de cration (simplifie):
create proc nom_procdure
as requte_SQL
return
Syntaxe de suppression :
drop proc nom_procdure
Syntaxe dexcution:
[exec] nom_procdure

Auteur: A.P.

16/16

S. Q. L.

Utilisation de paramtres
Les paramtre amliorent la flexibilit des procdures.
Les noms, les types et les valeurs par dfaut des paramtres sont dfinis lors de la cration de
la procdure.
Les valeurs des paramtres sont spcifies par lappelant lorsque la procdure sexcute.
Syntaxe de cration (complte):
CREATE PROC - Syntaxe de cration
create proc nom_procdure
[ ( @nom_paramtre1 type_paramtre1 [ = valeur_par_dfaut ]
[, @nom_paramtre2 type_paramtre2 [ = valeur_par_dfaut ] ... ] ) ]
as requte_SQL
return
Syntaxe dappel:
EXEC - syntaxe de dappel
[ exec ] nom_procdure [ valeur_paramtre1 [, valeur_paramtre2 ] ... ]
Remarques: Une procdure peut avoir jusqu 255 paramtres.
Une valeur passe en paramtre peut contenir des caractres gnriques.
Pour passer une variable locale en paramtre, il faut la spcifier par son nom
lappel de la procdure.
Il est possible de spcifier les paramtres par leur nom (Si lon commence les
spcifier par leurs noms, il faut continuer)

Exemple:
Enonc:
Appeler la procdure proc1 dfinie ci dessous
Dfinition de la procdure :
CREATE PROC PROC1 ( @a int, @b int, @c int, @d int )
AS ...
RETURN

Auteur: A.P.

17/17

S. Q. L.
Appels:
EXEC PROC1 24, 12, 18, 87
EXEC PROC1 24, 12, @c=18, @d=87
EXEC PROC1 24, 12, @d=87, @c=18

Auteur: A.P.

18/18

S. Q. L.

Utilisation de paramtres pour retourner des valeurs depuis une


procdure.
Les paramtres retourns sont dfinis en utilisant le mot cl OUTPUT.
OUTPUT - Utilisation de paramtres pour retourner des valeurs depuis une procdure
La dclaration des paramtres en tant que OUTPUT doit tre effectue la fois par la
procdure appele et par lappelant.
Exemple:
Enonc:
Crer puis appeler une procdure proc2 qui compte de nombre de livres (les couples
rfrence - numro ddition identifient les livres ) proposs pour un distributeur donn. Le
nom du distributeur et le retour de la procdure seront placs dans deux paramtres.
Script de cration de la procdure:
CREATE PROC PROC2
( @distributeur varchar(50), @livres int OUTPUT )
AS
SELECT @livres = count(*)
FROM TARIFS
WHERE distributeur = @distributeur
RETURN

Appel de la procdure:
DECLARE @X_livres int
EXEC PROC2 X, @X_livres OUTPUT

Auteur: A.P.

19/19

S. Q. L.

Utilisation du code status retourn par une procdure


Chaque procdure retourne automatiquement un code status.
Cest le mot cl RETURN qui permet la transmission du code.
RETURN - Utilisation du code status retourn par une procdure
Le code status est du type int.
Les valeurs comprises entre -99 et 0 sont rservs par le serveur (spcifique SYBASE).
La valeur 0 correspond un succs de la procdure.

Exemple:
Enonc:
Crer puis appeler une procdure proc3, semblable proc2 (qui compte de nombre
de livres ( les couples rfrence - numro ddition identifient les livres ) proposs pour un
distributeur donn. Le nom du distributeur et le retour de la procdure tant placs dans deux
paramtres. ) et qui place la valeur 1 dans le code status si le nombre de livres est suprieur
zro.
Script de cration de la procdure:
CREATE PROC PROC3
( @distributeur varchar(50), @livres int OUTPUT )
AS
SELECT @livres = count(*)
FROM TARIFS
WHERE distributeur = @distributeur
If @livres > 0
RETURN 1
RETURN

Appel de la procdure:
DECLARE @X_livres int, @status int
EXEC @status = PROC3 X, @X_livres OUTPUT

Auteur: A.P.

20/20

S. Q. L.

Triggers
Un trigger est un type particulier de procdure stocke.
Les triggers sont automatiquement et obligatoirement dclenchs par le serveur quand des
donnes dun table spcifie sont insres, modifies ou supprimes.
Ils ne peuvent pas tre invoqus directement et ils ne prennent aucun paramtre.
Les triggers permettent de placer les contraintes dintgrit dans la base plutt que dans
chaque application.

Gestion des triggers


Les triggers sont crs et supprims respectivement par les commandes suivantes: CREATE
TRIGGER, DROP TRIGGER
- Gestion des triggers
Syntaxe de cration (simplifie):
create trigger nom_trigger
on non_table
for { insert | update | delete }
[, {insert | update | delete } ] ...
as requte_SQL
Syntaxe de suppression :
drop trigger nom_trigger

Auteur: A.P.

21/21

S. Q. L.

Fonctionnement dun trigger

Un trigger peut reconnatre lvnement qui la dclench en consultant les tables inserted et
deleted.
Les tables inserted et deleted ont la mme structure que la table modifie.
inserted contient les lignes ajoutes la table. Ces lignes sont le rsultat dun ordre INSERT
ou UPDATE.
deleted contient les lignes supprimes dans la table. Ces lignes sont le rsultat dun ordre
DELETE ou UPDATE.
Ces tables peuvent tre rfrences dans une jointure.

Un trigger peut savoir quelle sont les colonnes qui ont t modifies en utilisant IF
UPDATE test .
Syntaxe:
if update ( nom_colonne )
[ { AND | OR } update ( non_colonne ) ]...
La condition update ( nom_colonne ) est vrai si la colonne a t incluse dans la clause
SET dun ordre UPDATE, ou si une valeur non nulle a t insre dans la colonne par un
ordre INSERT.

Remarques: Lorsque plus dun trigger est dfini pour une action donne sur une table
donne, le plus rcemment dfini est excut.
Lorsquune table est dtruite, ses triggers sont supprims.
Les ordres INSERT, UPDATE et DELETE lintrieur dun trigger naffectent
pas le contenu des tables inserted ou deleted pour ce trigger.
Les triggers ne sont pas activs par les ordres TRUNCATE TABLE ou BULK
COPY.

Auteur: A.P.

22/22

S. Q. L.

III. PRINCIPALES COMMANDES


ALTER TABLE
Cette commande ajoute de nouvelles colonnes une table existante, ou ajoute, change, ou
enlve des contraintes.
Syntaxe:
alter table [base_de_donnes. [ propritaire]. ] nom_table
{ add nom_colonne type_de_donne
[ default {expression_constante | utilistaeur | null } ]
{ [ { identity | null } ]
| [ [ constraint nom_contrainte ]
{ { unique | primary key }
[ clustered | nonclustered ]
[ with fillfactor = x] [ on nom_segment ]
| references [ [ base_de_donnes. ] propritaire. ]ref_table
[ (ref_colonne) ]
| check (condition_de_recherche) } ] } ...
{ [, colonne_suivante ] } ...
| add { [constraint nom_contrainte]
{ unique | primary key }
[ clustered | nonclustered ]
( nom_colonne [{,nom_colonne } ... ] )
[ with fillfactor = x ] [ on nom_segment ]
| foreign key ( nom_colonne [ {, nom_colonne } ... ] )
references [ [ base_de_donnes.] propritaire.]ref_table
[ ( ref_colonne [ {, ref_colonne } ... ] ) ]
| check ( condition_de_recherche ) }
| drop constraint nom_contrainte
| replace nom_colonne
default { expression_constante | utilisateur | null } }
Uniquement sue des serveurs SQL scuriss :
| set { maxhold [=] label1 , minhold [=] label2 } ]

Auteur: A.P.

23/23

S. Q. L.

CREATE TABLE
La commande CREATE TABLE cre de nouvelles tables et, de manire optionnelle, des
contraintes dintgrit.
Syntaxe:
Syntaxe complte:
create table [base_de_donnes. [ propritaire]. ] nom_table
(nom_colonne) type_de_donne
[default {expression_constante | utilistaeur | null}]
{[{identity | null | not null}]
| [[constraint nom_contrainte]
{{unique | primary key}
[clustered | nonclustered]
[with fillfactor = x] [on nom_segment]
| references [[base_de_donnes.] propritaire.]ref_table
[(ref_colonne)]
| check (condition_de_recherche)}]}...
| [constraint nom_contrainte]
{{unique | primary key}
[clustered | nonclustered]
(nom_colonne[{,nom_colonne }...])
[with fillfactor = x] [on nom_segment]
| foreign key (nom_colonne[{,nom_colonne }...])
references [[base_de_donnes.] propritaire.] ref_table
[(ref_colonne [{, ref_colonne }...])]
| check (condition_de_recherche)}
[{, {colonne_suivante | contrainte_suivante}}...])
[on nom_segment]
Uniquement sue des serveurs SQL scuriss :
[ with { maxhold [=] label1 , minhold [=] label2 } ]

Auteur: A.P.

24/24

S. Q. L.
Syntaxe simplifie:
create table [base_de_donnes. [ propritaire]. ] nom_table
( nom_colonne type_de_donne [ null | not null]
[, nom_colonne type_de_donne [ null | not null] ]... )
[ on nom_segment ]
Exemple:
Enonc:
Crer la table COMANDES avec les champs ref_client, nom_client, reference,
num_edition, quantit, date, ref_commande ayant pour styles respectivement varchar(8),
varchar(25), varcher(3), tinyint, smallint, smalldatetime et varchar(12).
Requte:
CREATE TABLE COMMANDES
( ref_client
VARCHAR(8),
nom_client
VARCHAR(25),
reference
VARCHAR(3),
num_edition
TINYINT,
quantite
smallint,
date
smalldatetime,
ref_commande
VARCHAR(12) )

Auteur: A.P.

25/25

S. Q. L.

DECLARE
La commande DECLARE cre une ou plusieurs de variables locales.
Les variables sont cres avec un nom et un type.
Les variables locales sont cres dans les batchs, les triggers ou les procdures.
Elles disparaissent quand leur batch, trigger ou procdure se termine.
Le nom des variables doit dbuter par le caractre @ .
Les variables sont scalaires (elle ne contiennent quune seule valeur).
Elles sont automatiquement initialises NULL.
Syntaxe:
declare @non_variable type_de_donne
[, @non_variable type_de_donne ] ...

Exemple:
DECLARE

@quantite
@tva
@prix_ttc

int,
float,
smallmoney

Remarques: Laffectation des variables locales se fait avec la commande SELECT.


Une variable peut tre le rsultat dune commande SELECT.
Il est recommand de grouper les dclarations de variables dans la mme
instruction pour des raisons de performance.

Auteur: A.P.

26/26

S. Q. L.

DELETE
La commande DELETE efface une ou plusieurs lignes (enregistrements) dune table ou dune
vue.
Syntaxe:
delete [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue }
[ from [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue }
[, [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue } ] ... ]
[ where conditions_de_recherche ]
Exemple:
Enonc:
Effacer de la table AUTEURS, les auteurs du 19me sicle.
Requte:
DELETE FROM AUTEURS
WHERE siecle = 19

Auteur: A.P.

27/27

S. Q. L.

DROP TABLE
Enlve de la base la dfinition de la table et toutes ses donnes, ses index et triggers, et les
permissions associes.
Syntaxe:
drop table [ [ base_de_donnes. [ propritaire. ] ] nom_table
[, [ base_de_donnes. [ propritaire. ] ] nom_table ] ... ]
Exemple:
Enonc:
Enlever la table TARIFS (et tous les index et triggers associs) de la base.
Requte:
DROP TABLE TARIFS

Auteur: A.P.

28/28

S. Q. L.

GRANT
Cette commande assigne une permission aux utilisateurs.
On distingue deux types de permissions : les accs aux objets et les permissions sur les
commandes.
Permissions daccs aux objets:
Le propritaire dun objet a les droits exclusifs pour modifier la structure de cet objet (CREATE
INDEX, ALTER TABLE, DROP objet).
Le propritaire dun objet contrle les accs des autres utilisateurs aux donnes de cet objet.
Aucun utilisateur ne peut accder un objet sil na pas reu les permissions sur cet objet.
Schma de contrle daccs aux objets:

SELECT
INSERT
GRANT

DELETE

REVOKE

UPDATE

ON OBJECT [ ( Colonne ) ]

TO
FROM

USER [,USER]

EXECUTE
ALL

Lordre chronologique dtermine la permission rsultante.


Pour exclure un petit nombre dutilisateurs, donner les permissions tout le monde, puis en
exclure quelques uns.
Pour exclure un petit nombre de colonnes, donner les droits sur la table, puis exclure les
colonnes concernes.

Auteur: A.P.

29/29

S. Q. L.
Permissions sur les commandes:
Seul ladministrateur peut lancer des commandes ayant des effets sur lensemble du serveur.
Seul le propritaire de la base peut :
Ajouter, supprimer ou modifier les comptes utilisateurs de la base.
checkpoint
dbcc
load database
load transaction
setuser
Schma de contrle daccs aux commandes:

CREATE DATABASE
CREATE DEFAUT
CREATE PROC
GRANT
REVOKE

CREATE RULE
CREATE TABLE
CREATE VIEW

TO
FROM

USER [,USER]

DUMP DATABASE
DUMP TRANSACTION
ALL

Syntaxe:
permissions sur des objets:
grant { all [ privilges ] | liste_de_permissions }
on { nom_table [ ( liste_de_colonnes ) ]
| nom_vue [ ( liste_de_colonnes ) ]
| nom_prcdure_stocke }
to { public | liste_de_noms | nom_role }
[ with grant option ]
permissions sur des commandes:
grant { all [ privilges ] | liste_de_commandes }
to { public | liste_de_noms | nom_role }

Auteur: A.P.

30/30

S. Q. L.
Exemples:
Enonc:
Autoriser la lecture de la table AUTEURS pour tout les utilisateurs.
Requte:
GRANT SELECT ON AUTEURS TO PUBLIC

Enonc:
Autoriser toute sorte doprations sur la table AUTEURS pour lutilisateur
CHEF.
Requte:
GRANT ALL ON AUTEURS

TO CHEF

Enonc:
Autoriser lexcution de la procdure spsel_info pour tous les membres du groupe
GROUP_UTIL.
Requte:
GRANT EXEC ON spsel_info TO GROUP_UTIL

Remarque:

Auteur: A.P.

Voir la commande REVOKE.

31/31

S. Q. L.

INSERT
Ajoute un nouvel enregistrement (ou ligne) dans une table ou une vue.
Syntaxe:
insert [ into ] [ base. [ propritaire. ] ] { nom_table | nom_vue }
[ ( liste_colonne ) ]
{ values ( expression [ , expression ] ... )
| commande_select }
Exemple:
Enonc:
Insrer la ligne ci-dessous dans la table TARIFS.
reference
L03

num_edition
1

distrubuteur
Z

prix
41

Requte:
INSERT INTO TARIFS
( reference, num_edition, distributeur, prix )
VALUES
(LO3 , 1, Z, 41)

REVOKE
Cette commande enlve une permission aux utilisateurs.
La syntaxe de le commande REVOKE est similaire celle de la commande GRANT.
Remarque:

Auteur: A.P.

Voir la commande GRANT.

32/32

S. Q. L.

SELECT
Utilisation de SELECT pour des interrogations de tables.
La commande SELECT, permet, entre autre, de slectionner des champs (colonnes) dune
table.
Syntaxe:
Syntaxe complte:
select [ all | distinct ] liste _select
[ into [ [ base_de_donnes. ] propritaire. ] nom_table ]
[ from [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue }
[ holdlock | noholdlock ] [ shared ]
[ , [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue }
[ holdlock | noholdlock ] [ shared ] ] ... ]
[ where conditions_de _recherche ]
[ group by [ all ] expression_sans_agrgation
[, expression_sans_agrgation ] ... ]
[ having conditions_de _recherche ]
[ order by
{ [ [ [ base_de_donnes. ] propritaire. ] { nom_table. | nom_vue. } ]
nom_colonne| numro_liste_select | expression }
[ asc | desc ]
[ , { [ [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue. } ]
nom_colonne| numro_liste_select | expression }
[ asc | desc ] ] ... ]
[ compute agrgation_colonne ( nom_colonne)
[ , agrgation_colonne ( nom_colonne) ] ...
[ by nom_colonne[ , nom_colonne[ , nom_colonne] ... ] ]
[ for browse ]

Auteur: A.P.

33/33

S. Q. L.
Syntaxe simplifie:
select

nom_colonne
[, nom_colonne ]...
from nom_table
where critres_de_selection

Exemple:
Enonc:
Slectionner tous les lments de la tables AUTEURS
Requte:
SELECT * FROM AUTEURS

Remarques: Lordre des colonnes est donn dans la commande SELECT. En cas
dutilisation du caractre * , cest lordre de dfinition des colonnes lors de
la cration de la table qui est donn.
Voir le chapitre Expression des slections.

Auteur: A.P.

34/34

S. Q. L.

Utilisation de SELECT pour assigner des valeurs aux variables locales.

Syntaxe:
select @nom_variable = { expression | commande_de_slection }
[, @nom_variable = { expression | commande_de_slection } ... ]
[ from liste_noms_table ]
[ where critres_de_selection ]
[ group by liste_de_groupements ]
[ having conditions_de _recherche ]
[ order by liste_de_critres_de_tri ]
[ compute liste_de_fonctions [ by liste_de_colonnes ] ]

Exemple:
Enonc:
Assigner la valeur 10 la variable locale @quantit
Requte:
SELECT @quantit = 10

Remarque:

Auteur: A.P.

Si aucune valeur nest renvoye par la commande SELECT, la valeur de la


variable reste inchange. Si plusieurs valeurs sont retournes, cest la dernire
qui est assign la variable.
Les commandes SELECT dassignation ne retournent aucune valeur
lutilisateur.
Les commandes SELECT dassignation ne peuvent pas tre combines avec
des slections retournant des donnes lutilisateur.
Pour de meilleurs performances, essayer de grouper plusieurs assignations dans
la mme instruction.

35/35

S. Q. L.

SET
La commande SET dfinit la manire dont sont traites les requtes par le serveur.
Elle peut modifier le comportement dans une session interactive ou lintrieur dune
procdure ou dun trigger.
Elle peut tre utilise pour afficher des statistiques sur les stratgies de recherche.
Syntaxe: (simplifie)
set { { arithabort | arithignore | nocount | noexec | parseonly |
showplan | statistics io | statistics time }
{ on | off } | rowcount number }
Options de la commande SET:
Option
arithabort on
arithignore on
nocount on
noexec on
parseonly on
rowcount n
showplan on
statistics io on
statistics time
on

Remarque:

Auteur: A.P.

Description de la condition on
Echoue quand il y a overflow ou division par zro.
Retourne NULL quand il y a overflow ou division par zro.
Evite laffichage de (n rows affected) ; @@rowcount est toujours mis
jour.
Vrifie la syntaxe et cre un plan dexcution, mais nexcute pas. A utiliser
avec set showplan pour voir le plan dexcution.
Vrifie la syntaxe. Nexcute pas.
Retourne seulement n lignes. Si n = 0, toutes les lignes sont retournes.
Affiche le moyen choisi par le serveur pour traiter la requte puis lexcute.
Pour les tables : affiche le nombre de balayages, daccs aux pages (lectures
logiques) et daccs disque (lectures physiques).
Pour les commandes : affiche le nombre de pages crites.
Pour les commandes : affiche le temps de parsing et de compilation. Pour
chaque tape de la commande : affiche le temps dexcution.

Les options fixes par la commande SET ont effet pendant la dure de la
procdure et sont rinitialises sa fin.

36/36

S. Q. L.

UPDATE
Change le contenu de colonnes existantes soit en ajoutant soit en modifiant des donnes.
Syntaxe
update [ [ base_de_donnes.] propritaire. ] { nom_table | nom_vue }
set [ [ [ base_de_donnes.] propritaire. ] {nom_table. | nom_vue. } ]
nom_colonne1 = { expression1 | NULL | (commande_select) }
[ , nom_colonne2 = { expression2 | NULL | ( commande_select ) } ] ...
[ from [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue }
[ , [ [ base_de_donnes. ] propritaire. ] { nom_table | nom_vue } ] ... ]
[ where conditions_de _recherche ]
Exemple:
Enonc:
Augmenter les prix (table TARIFS) du distributeur X de 5 francs.
Requte:
UPDATE TARIFS
SET prix = prix + 5
WHERE distributeur = X

Auteur: A.P.

37/37

S. Q. L.

IV. EXPRESSION DES SELECTIONS


Format gnral dune slection
Une commande de slection contient les clauses suivantes :
SELECT ...
FROM ...
WHERE ...
GROUP BY ...
HAVING ...
ORDER BY ...

Seules les clauses SELECT et FROM sont obligatoires.

Auteur: A.P.

38/38

S. Q. L.

Clauses daccompagnement

COMPUTE
La clause COMPUTE rsume des valeurs dans une commande SELECT avec des fonctions
dagrgation linaires (sum, avg, min, max et count).
Les valeurs rsumes apparaissent dans des lignes additionnelles dans le retour de la requte
(Contrairement aux rsultats des fonctions dagrgation qui apparaissent dans de nouvelles
colonnes.)
Il existe deux mthodes pour effectuer des rsums: COMPUTE et COMPUTE BY.
On utilise COMPUTE pour gnrer des rsums complets.
On utilise COMPUTE BY pour crer des rsums sur les ruptures.
Syntaxe:
compute fonction_d_agrgation_linaire ( nom_colonne )
[, fonction_d_agrgation_linaire ( nom_colonne ) ]...
[ by nom_colonne [, nom_colonne ] ... ]
Exemples:
Calcul des totaux complets laide dun clause COMPUTE.
Enonc:
Afficher toutes les ditions (date, rfrence, numro ddition, nombre de pages) et
le nombre de page que reprsente la somme de toutes ces ditions.
Requte:
SELECT date_edition, reference, num_edition, nbr_pages
FROM EDITIONS
COMPUTE sum (nbr_pages)

Auteur: A.P.

39/39

S. Q. L.
Calcul des sous-totaux en utilisant COMPUTE BY en association avec une clause ORDER
BY.
Enonc
Afficher toutes les ditions (date, rfrence, numro ddition, nombre de pages)
tries par rfrence et le nombre de page que reprsente ces ditions par rfrence.
Requte:
SELECT date_edition, reference, num_edition, nbr_pages
FROM EDITIONS
ORDER BY reference
COMPUTE sum (nbr_pages) BY reference

Gnration la fois dun total complet et des sous-totaux en utilisant COMPUTE et


COMPUTE BY.
Enonc:
Afficher toutes les ditions (date, rfrence, numro ddition, nombre de pages)
tries par rfrence, le nombre de page que reprsente ces ditions par rfrence et le nombre
de page que reprsente la somme de toutes ces ditions. .
Requte:
SELECT date_edition, reference, num_edition, nbr_pages
FROM EDITIONS
ORDER BY reference
COMPUTE sum (nbr_pages) BY reference
COMPUTE sum (nbr_pages)

Remarques: On ne peut rsumer que les colonnes apparaissant dans la liste des colonnes
slectionnes.
Il est permis dutiliser toutes les fonctions dagrgation sauf count (*).

Auteur: A.P.

40/40

S. Q. L.

GROUP BY et HAVING

Grouper les lignes


La clause GROUP BY organise les lignes en groupes sur la base du contenu de ces lignes.
Chaque agrgat contenu dans la liste SELECT deviendra un agrgat pour le groupe.
Syntaxe:
group by [ all ] expression_sans_agrgation
[, expression_sans_agrgation ] ...
[ having conditions_de _recherche ]
Exemples:
Enonc:
Afficher le prix moyen des livres, par livre.
Requte:
SELECT reference, AVG (prix) FROM TARIFS
GROUP BY reference

Enonc:
Afficher le prix moyen des livres, par livre et par numro ddition.
Requte:
SELECT reference, num_edition, AVG (prix) FROM TARIFS
GROUP BY reference, num_edition

Remarques: Le regroupement ne peut pas se faire sur un titre de colonne.


Les valeurs nulles dans une clause GROUP BY sont traites comme un groupe.

Auteur: A.P.

41/41

S. Q. L.
Restriction sur les lignes utilises pour construire le groupe
Pour nutiliser quune partie des lignes afin de construire un groupe, il faut une clause
WHERE.
Exemple:
Enonc:
Afficher le prix moyen de la premire dition des livres, par livre.
Requte:
SELECT reference, AVG (prix) FROM TARIFS
WHERE num_edition = 1
GROUP BY reference

Pour afficher tous les groupes (mme ceux nayant aucune ligne correspondante), utilisez le
mot cl ALL.
Exemple:
Enonc:
Afficher le prix moyen de la deuxime dition des livres, par livre, en affichant tous
les livres.
Requte:
SELECT reference, AVG (prix) FROM TARIFS
WHERE num_edition = 2
GROUP BY ALL reference

Extensions Sybase:
Les expressions nommes dans le GROUP BY nont pas besoin dapparatre dans la
clause SELECT.
Des expressions non mentionnes dans le GROUP BY peuvent apparatre dans la
clause SELECT.

Auteur: A.P.

42/42

S. Q. L.
Restrictions sur les groupes
Il est possible de restreindre le nombre de groupes retourns en utilisant une clause HAVING.
Une clause HAVING inclus la plupart du temps une fonction dagrgat.
Exemples:
Enonc:
Slectionner les livres vendus une moyenne de plus de 30 francs (regroups par
livres ).
Requte:
SELECT reference, AVG (prix) FROM TARIFS
GROUP BY reference
HAVING AVG (prix) > 30

Enonc:
Slectionner les livres vendus une moyenne de plus de 30 francs lors de leur
premire dition (regroups par livres ).
Requte:
SELECT reference, AVG (prix) FROM TARIFS
WHERE num_edition = 1
GROUP BY reference
HAVING AVG (prix) > 30

Rsum:

Auteur: A.P.

WHERE restreint les lignes, HAVING restreint les groupes.

43/43

S. Q. L.

ORDER BY
La clause ORDER BY permet de trier les rsultats suivant lordre ascendant (mot cl ASC) ou
descendant (mot cl DESC) dun ou plusieurs attributs.
Syntaxe:
order by { [ nom_table. |nom_vue. ] nom_colonne
| numro_dans_liste_de_slection |expression } [ asc | desc ]
[, { [nom_table. |nom_vue. ] nom_colonne |numro_dans_liste_de_slection |
expression } [ asc | desc ] ] ...
Remarques: Lattribut sur lequel se fait le tri doit obligatoirement faire partie de la liste des
attributs dans la commande SELECT.
Les valeurs indtermines (NULL) sont affiches ensemble, avant ou aprs les
autres, suivant les S.G.B.D. et le sens croissant ou dcroissant du tri.

Auteur: A.P.

44/44

S. Q. L.

WHERE
La clause WHERE permet de spcifier un critre de slection.
La condition dans une clause WHERE est une expression logique compose dune suite de
conditions, prenant chacune la valeur vrai ou faux.
Ces conditions sont combines entre elles par les oprateurs logiques AND, OR ou NOT. Si la
valeur de lexpression logique est vrai pour un tuple considr, celui-ci fera partie du
rsultat.
Une condition peut prendre une des formes suivantes:
comparaison une valeur

=, <, >, <=, >=, <>

comparaison une fourchette de valeurs BETWEEN


comparaison une liste de valeurs

IN

comparaison un filtre

LIKE

test sur lindtermination dune valeur

IS NULL

test TOUS ou AU MOINS UN

ALL, ANY

test existentiel

EXISTS

Auteur: A.P.

45/45

S. Q. L.

Prdicats de slection
Il est possible dutiliser les oprateurs (ou prdicats) suivants pour dfinir une clause aussi
sophistique que ncessaire pour extraire les lignes souhaites :

Expression
Nom de colonne

BETWEEN

Expression1

IS

AND

Expression2

NULL
NOT

Nom de colonne

LIKE

Expression

NOT
EXISTS

Sous-slection

IN

Expression

Liste

NOT

Sous-slection

=
<>
Expression

Expression

>
<

SOME

Sous-slection

>=
<=

ANY
ALL

Auteur: A.P.

46/46

S. Q. L.

ALL
Utilis avec un oprateur de comparaison, ALL sert tester si une expression est vrifie dans
tous les cas de figure.
Lexpression est juste si la comparaison est vrifie pour toutes les valeurs renvoyes par la
clause sous-slection .
Exemple:
Enonc:
Slectionne la rfrence de tous les livres vendus si tous les prix sont infrieurs
100 Francs.
Requte:
SELECT DISTINCT reference
FROM TARIFS
WHERE 100 > ALL ( SELECT DISTINCT prix

FROM TARIFS )

ANY
Contrairement ALL, lexpression est juste si la comparaison est vrifie dans la clause de
sous-slection pour au moins une valeur.
Exemple:
Enonc:
Slectionne la rfrence de tous les livres vendus si au moins un prix est suprieur
50 Francs.
Requte:
SELECT DISTINCT reference
FROM TARIFS
WHERE 50 < ANY ( SELECT DISTINCT prix FROM TARIFS )

Auteur: A.P.

47/47

S. Q. L.

BETWEEN
Ce prdicat est utilis pour vrifier si la valeur dune expression est comprise entre deux
valeurs.
Syntaxe:
Expression1 [ NOT ] BETWEEN Expression 2 AND Expression3
Exemple:
Enonc:
Slectionne les livres (rfrence) vendus entre 30 et 50 Francs.
Requte:
SELECT DISTINCT reference
FROM TARIFS
WHERE prix BETWEEN 30 AND 50

DISTINCT
La clause DISTINCT permet dviter dobtenir des doublons dans le rsultat dune projection.
Remarque:

Auteur: A.P.

Une projection en SQL avec omission de la clause DISTINCT nlimine pas les
doubles.

48/48

S. Q. L.

EXISTS
Permet de tester si le rsultat dune slection contient au moins une ligne (cest--dire si la
slection nest pas vide).
Syntaxe:
Exists ( slection )
Exemple:
Enonc:
Si il existe des auteurs du 19me sicle, slectionner tous les auteurs (tous les
attributs).
Requte:
SELECT * FROM AUTEURS
WHERE EXISTS ( SELECT * FROM AUTEURS WHERE siecle = 19 )

IN
IN permet de slectionner des lignes contenant une valeur concidant avec lune des valeurs
dune liste.
Syntaxe:
expression [ NOT ] IN { liste | slection }
Exemples
Enonc:
Slectionner tous les auteurs du 18 me et tous les auteurs du 19 me sicle.
Requte:
SELECT * FROM AUTEURS
WHERE siecle IN ( 18, 19 )

Auteur: A.P.

49/49

S. Q. L.

LIKE
La clause LIKE dsigne la recherche dune constante dans une chane de caractres.
Elle est utilisable avec les donnes de type CHAR, VARCHAR, TEXT et DATETIME.
Syntaxe:
LIKE chaine de caractres%
LIKE %chaine de caractres
LIKE %chaine de caractres%
LIKE chaine1_chaine2
LIKE [chaine1]chaine2
LIKE [~chaine1]chaine2

Le caractre gnrique
% signifie: Nimporte quelle squence de zro ou plusieurs
caractres peut suivre ou prcder la chane indique.
Le caractre gnrique _ signifie un seul caractre quelconque.
Les caractres gnriques [ ] signifient nimporte quel caractre (unique) parmi ceux spcifis
antre les crochets.
Les caractres gnriques [~ ] signifient nimporte quel caractre (unique) except un de ceux
spcifies antre les crochets.

Auteur: A.P.

50/50

S. Q. L.
Exemples:
LIKE REL% slectionne les chanes qui commencent par REL.
LIKE %ZI slectionne les chanes qui se terminent par ZI..
LIKE %PARIS% slectionne sur la prsence de la constante PARIS, nimporte
quelle position dans la chane.
LIKE %FAO_ slectionne sur la prsence dune constante FAO lavant
dernire place des chanes consultes
LIKE [FGT]AO slectionne sur la prsence du caractre F, G, ou T au dbut de la
chane consulte, et sur la prsence des caractres A et O respectivement la
deuxime et troisime place de la chane, cette chane comportant trois caractres.
Remarque:

Auteur: A.P.

Pour slectionner les tuples dont un attribut contient une valeur ne


correspondant pas au filtre, il faut employer loprateur NOT LIKE.

51/51

S. Q. L.

NULL
Ce prdicat permet de tester la valeur NULL.
Syntaxe:
nom_colonne IS [ NOT ] NULL
Exemple:
Enonc:
Slectionner toutes les ditions dont le nombre de page naurait pas t renseign (
cest dire que le nombre de pages est NULL).
Requte:
SELECT *
FROM EDITIONS
WHERE nbr_pages IS NULL

SOME
Contrairement ALL, lexpression est juste si la comparaison est vrifie dans la clause de
sous-slection pour au moins une valeur.
(Voir: ANY)

Auteur: A.P.

52/52

S. Q. L.

V. PROGRAMMATION STRUCTUREE
Groupes dinstructions
Il est possible de spcifier au serveur de traiter un groupe dinstruction SQL comme un bloc
en utilisant une structure BEGIN ... END
Un bloc dinstructions est trait comme un ordre SQL.
Syntaxe:
BEGIN
bloc dinstructions
END
Exemple:
Enonc:
Si la moyenne des prix des livres est suprieure 35 francs diminuer les prix
suprieurs 50 Francs de 10% et les prix infrieurs ou gaux 50 francs de 5 %.
Requte:
IF ( SELECT AVG( prix ) FROM TARIFS ) > 35
BEGIN
UPDATE TARIFS
SET prix = prix * 0.95
WHERE prix <= 50
UPDATE TARIFS
SET prix = prix * 0.9
WHERE prix > 50
END

Auteur: A.P.

53/53

S. Q. L.

Excution Conditionnelle
La structure IF ... ELSE permet dexcuter une requte SQL selon une condition base sur
un test.
Syntaxe:
IF expression_boolenne1
instruction_si_condition_vraie
[ ELSE [ IF expression_boolenne2 ]
instruction_si_condition1_fausse ]
Exemple:
Enonc:
Si la moyenne des prix des livres est suprieure 35 francs diminuer les prix de
10%.
Requte:
IF ( SELECT AVG( prix ) FROM
UPDATE TARIFS
SET prix = prix * 0.9

Remarques:

Auteur: A.P.

TARIFS ) > 35

Il ny a pas de limite dans le nombre de IF imbriqus.


Si les expressions boolens contiennent des commandes SELECT, elles
doivent tre mises entre parenthses.
Sans une structure BEGIN ... END , une seule requte SQL peut suivre un
IF ou un ELSE .

54/54

S. Q. L.

Excution Rptitive

La structure WHILE ... BREAK ... CONTINUE provoque une excution rptitive.
Le mot cl WHILE marque le dbut de la boucle. La condition de maintient dans la boucle
est indique immdiatement aprs.
Le mot cl BREAK provoque la sortie de la boucle. Si des boucles sont imbriques, la
sortie ne seffectue que sur un niveau.
CONTINUE renvoi lexcution au dbut de la boucle.
Syntaxe:
WHILE expression_boolenne
bloc_dinstruction
Exemple:
Enonc:
Tant que la moyenne des prix des livres est suprieure 30 francs diminuer les prix
de 10%.
Requte:
WHILE ( SELECT AVG ( prix ) FROM TARIFS ) > 30
BEGIN
UPDATE TARIFS
SET prix = prix * 0.9
END

Auteur: A.P.

55/55

S. Q. L.

Excution Evnementielle
La commande WAITFOR Evnementiellesuspend lexcution en attendant un vnement
spcifi.
Syntaxe:
WAITFOR { delay dure | time heure | errorexit | processexit }
delay : Suspend lexcution pendant une dure donne (jusqu 24 heures).
time : Suspend lexcution en attendant un heure donne de la journe (les
dates ne peuvent pas tre utilises).
errorexit:
Suspend lexcution jusqu ce quun processus se termine
anormalement.
processexit: Suspend lexcution e attendant quun processus se termine.
mirrorexit:
Si le mirroring choue sur un ou plusieurs disques.
Exemple:
Enonc:
Faire une boucle qui augmente des prix de 10% toutes des 8 heures.
Requte:
WHILE 1 = 1
BEGIN
WAITFOR DELAY 8:00:00
UPDATE TARIFS
SET prix = prix * 1.1
END

Auteur: A.P.

56/56

S. Q. L.

VI. FONCTIONS
Fonctions dagrgation
Les fonctions dagrgation (sum, avg, count, count(*), max et min) sont utilises pour
retourner les valeurs rcapitulatives. Elles peuvent tre utilises dans une liste de slection,
dans la clause HAVING dune commande SELECT, dans une sous-requte, ou encore dans
une commande incluant une clause GROUP BY.
Fonction dagrgation
Retour
sum( [ all | distinct] expression) Total des valeurs (distinctes) dans la colonne numrique.
avg( [ all | distinct ] expression ) Moyenne des valeurs (distinctes) dans la colonne
numrique.
count( [ all |
distinct ] Nombre de valeurs (distinctes) non-nulles dans la colonne.
expression )
Nombre de lignes slectionnes.
count( * )
Plus grande valeur dans lexpression.
max( expression )
Plus petite valeur dans lexpression.
min( expression )
Remarques:

Auteur: A.P.

Il existe des fonctions dagrgation similaires, appeles fonction dagrgation


linaire, utilises dans la clause COMPUTE.
Pour les serveurs SQL scuriss, on ne peut utiliser les fonctions sum, avg,
max ou min avec des types scuriss. Nanmoins il est possible dutiliser
count ou count(*) avec des types scuriss.

57/57

S. Q. L.

Fonctions de conversion de types


Les fonctions de conversion de types changent des expressions dun type en un autre et
appliquent de nouveaux formats daffichage pour les dates et les heures.
Les serveurs SQL disposent de trois fonctions de conversion de types (convert(), inttohex(),
et hextoint()) qui sont utilises dans les listes de slection, dans les clauses WHERE et
partout o une expression est utilise.
Fonction Paramtres
convert ( type [ (taille) | ( prcision [,chelle] ) ],
expression [,style] )
hextoint (chaine_hexadcimale)
inttohex (expression_entire)

Auteur: A.P.

Retour
Conversions entre une large varit de
types et remise en formes des donnes
calendaires et horaires
Retourne un entier indpendant de la
configuration, quivalent la chane
hexadcimale.
Retourne un hexadcimal indpendant
de la configuration, quivalent la
configuration.

58/58

S. Q. L.

Fonctions de manipulation de dates


Fonction
Paramtres
()
getdate
datename (lment_date,date)

datepart
datediff
dateadd

Auteur: A.P.

Retour
Retourne la date et lheure courante du systme.
Retourne le nom de llment spcifi (ex.: le mois
JUIN ) dune donne de type datetime sous
forme de chane de caractres.
(lment_date, date)
Retourne une valeur entire pour llment spcifi
dune donne de type datetime.
(lment_date, date1, date2) Retourne date2 - date1 dans le format de llment
spcifi.
(lment_date,
Retourne la date produite par laddition du nombre
expression_numrique,
spcifi (concernant llment de la date indiqu) et
date)
de la date passe en paramtre. Lexpression
numrique peut tre
de nimporte quel type
numrique; la valeur est alors tronque en valeur
entire.

59/59

S. Q. L.

Fonctions mathmatiques
Les fonction mathmatiques retournent des valeurs communment utilises pour les
oprations sur des donnes mathmatiques.
Les noms des fonctions mathmatiques ne sont pas des mots cls.
Fonction Paramtres
(valeur_numrique)
abs

acos
asin
atan
atn2
ceiling

cos
cot
degrees

exp

Retour
Retourne la valeur absolue dun expression
donne. Le rsultat est du mme type, a la mme
prcision et la mme chelle que lexpression
numrique.
(valeur_numrique_arrondie) Retourne langle (en radians) dont le cosinus est la
valeur spcifie en paramtre.
(valeur_numrique_arrondie) Retourne langle (en radians) dont le sinus est la
valeur spcifie en paramtre.
(valeur_numrique_arrondie) Retourne langle (en radians) dont la tangente est
la valeur spcifie en paramtre.
(valeur_numrique_arrondie1, Retourne langle (en radians) dont la tangente est
valeur_numrique_arrondie2) le rapport des valeurs spcifies en paramtre
(numrique_arrondie1 / numrique_arrondie2).
(valeur_numrique)
Retourne le plus petit entier qui soit suprieur ou
gal la valeur spcifie. Le rsultat est du mme
type que lexpression numrique. Pour les
expressions numriques et dcimales, les rsultats
ont des prcisions gales celles des expressions
et une chelle de 0.
(valeur_numrique_arrondie) Retourne le cosinus de langle spcifi
(en
radians).
(valeur_numrique_arrondie) Retourne la cotangente de langle spcifi (en
radians).
(valeur_numrique) Converti des degrs en radians. Le rsultat est du
mme type que lexpression numrique. Pour les
expressions numriques et dcimales, les rsultats
ont une prcision interne de 77 et une chelle
gale celle de lexpression. Quand une valeur de
type money est utilise, la conversion interne en
float risque de causer une perte prcision.
(valeur_numrique_arrondie) Retourne lexponentielle de la valeur spcifie.

Auteur: A.P.

60/60

S. Q. L.
floor

log
log10
pi
power

radians

rand
round

sign
sin
sqrt
tan

(valeur_numrique)

Retourne le plus grand entier infrieur ou gal la


valeur spcifie. Le rsultat est du mme type que
lexpression numrique. Pour les expressions
numriques et dcimales, les rsultats ont des
prcisions gales celles des expressions et une
chelle de 0.
(valeur_numrique_arrondie) Retourne le logarithme naturel de la valeur
spcifie.
(valeur_numrique_arrondie) Retourne le logarithme de base 10 de la valeur
spcifie.
()
Retourne la valeur constante
3.1415926535897936
(valeur_numrique, puissance) Retourne la valeur de lexpression numrique
leve la puissance spcifie. Le rsultat est du
mme type que lexpression numrique. Pour les
expressions numriques et dcimales, les rsultats
ont une prcision interne de 77 et une chelle
gale celle de lexpression.
(valeur_numrique)
Converti des radians en degrs. Le rsultat est du
mme type que lexpression numrique. Pour les
expressions numriques et dcimales, les rsultats
ont une prcision interne de 77 et une chelle
gale celle de lexpression. Quand une valeur de
type money est utilise, la conversion interne en
float risque de causer une perte prcision.
( [entier] )
Retourne une valeur alatoire float comprise entre
0 et 1. La valeur entire spcifie optionnellement
en paramtre est utilise comme valeur de base.
(valeur_numrique, entier)
Arrondi lexpression numrique passe en
paramtre avec le nombre de chiffres significatifs
pass galement en paramtre.
Un integer positif dtermine le nombre de chiffres
significatifs droite du sparateur dcimal; un
integer ngatif dtermine le nombre de chiffres
significatifs gauche du sparateur dcimal. Pour
les expressions numriques et dcimales, les
rsultats ont une prcision interne de 77 et une
chelle gale celle de lexpression.
(valeur_numrique)
Retourne 1, 0 ou -1. Le rsultat est du mme type,
a la mme prcision et la mme chelle que
lexpression numrique.
(valeur_numrique_arrondie) Retourne le sinus de langle spcifi (en radians).
(valeur_numrique_arrondie) Retourne la racine carre de la valeur spcifie.
(valeur_numrique_arrondie) Retourne la tangente de langle spcifi
(en
radians).

Auteur: A.P.

61/61

S. Q. L.
Fonctions dagrgation linaires
Utilises dans une commande SELECT avec la clause COMPUTE, les fonctions d'agrgation
linaires(sum, avg, min, max et count) gnrent des valeurs rcapitulatives qui apparaissent
comme des lignes complmentaires dans les rsultats de requtes (contrairement aux rsultats
de fonctions d'agrgation qui apparaissent dans de nouvelles colonnes). Ce qui permet
d'obtenir les lignes de dtail et de rcapitulation dans un mme rsultat. De plus, il est possible
d'effectuer des rcapitulations pour des sous-groupes et ainsi calculer plus d'une rcapitulation
pour le mme groupe.
Syntaxe:
compute fonction_d'agregation_linaire ( nom_colonne )
[, fonction_d'agregation_linaire ( nom_colonne ) ] ...
[, by nom_colonne [, nom _colonne ] ... ]

Nom
sum
avg
min
max
count

Signification
Total des valeurs dans la colonne (numrique).
Moyenne des valeurs dans la colonne (numrique).
Plus petite valeur dans la colonne.
Plus grande valeur dans la colonne.
Nombre de valeurs non-nulles dans la colonne.

Remarques:

Auteur: A.P.

Pour les serveurs SQL scuriss, on ne peut utiliser les fonctions sum, avg,
max ou min avec des types scuriss. Nanmoins il est possible dutiliser
count ou count(*) avec des types scuriss.

62/62

S. Q. L.

Fonctions de manipulation de chanes


Ces fonctions oprent sur des donnes binaires, des chanes de caractres et des expressions.
Fonction
ascii
char

charindex

char_length

difference
lower
ltrim
patindex

Auteur: A.P.

Paramtres
(expression_alphanumrique)

Retour
Retourne le code ASCII pour le premier
caractre de lexpression.
(expression_entire) Conversion dune une valeur entire (1
Octet) en une valeur alphanumrique. (char
est utilise comme la fonction rciproque de
ascii.). La valeur entire doit tre comprise
entre 0 et 255. Le rsultat est du type char.
(expression1, expression2)
Retourne une valeur reprsentant la position
de la premire expression dans la deuxime.
(Le premier paramtre est lexpression
rechercher)
(expression_alphanumrique)
Retourne une valeur entire reprsentant le
nombre de caractres de lexpression aprs
limination des espaces la fin de
lexpression. Pour connatre le nombre
doctets, on utilise la fonction datalength
(voir fonctions systme ).
(expression_alphanumrique1, Retourne un entier reprsentant la diffrence
expression_alphanumrique2)
entre deux (voir soundex ci-dessous)
(expression_alphanumrique)
Conversion des majuscules en minuscules.
(expression_alphanumrique)
Elimine les espaces prcdant lexpression.
("%recherche % ",
Retourne un entier reprsentant la position
de dpart de la premire occurrence de
Expression_alphanumrique
recherche dans lexpression spcifi ou zro
[, using { bytes | chars |
si recherche nest pas trouve. Par dfaut,
characters} ] )
patindex retourne loffset en caractres;
pour obtenir loffset en octets, il faut
spcifier using bytes.
Le caractre gnrique "%" doit prcder et
suivre recherche ( except pour le recherche
du premier ou du dernier caractre ). (Voir
caractres gnriques pour une
description de leur utilisation avec
patindex). Peut tre utilis avec des donnes
du type text.

63/63

S. Q. L.
replicate

reverse
right
rtrim
soundex

space
str

stuff

substring

upper
+

Auteur: A.P.

(expression_alphanumrique,
expression_numrique_entire)

Retourne une chane avec le mme type de


donne que lexpression alphanumrique,
contenant la mme expression, rpte le
nombre de fois spcifi ou autant de fois que
possible tant que le retour ne dpasse pas
255 octets.
(expression_alphanumrique) Retourne linverse de lexpression
alphanumrique. Si lexpression est
abcd , le retour est dcba .
(expression_alphanumrique,
Retourne la partie de lexpression
expression_numrique_entire) commenant la position spcifie (nombre
de caractres partir de la droite).
(expression_alphanumrique)
Elimine les espaces la fin de lexpression.
(expression_alphanumrique)
Retourne un code de 4 caractres pour la
chane qui est compose dun squence
continue de couples ou de doubles octets
valides en lettres romanes.
(expression_numrique_entire) Retourne une chane contenant le nombre
spcifi despaces.
(valeur_numrique_approche, Retourne une reprsentation sous forme de
[, longueur [,dcimales] ] )
chane de caractres dune valeur numrique
dcimale. longueur indique le nombre de
caractres retourner (incluant le sparateur
dcimal, tous les chiffres droite et
gauche, et les espaces); dcimales indique le
nombre de chiffres dcimaux retourns.
(expression_alphanumrique1, Efface le nombre de caractres spcifi par
dbut, longueur,
longueur dans lexpression1 partir de la
expression_alphanumrique2)
position spcifi par dbut, puis insert
lexpression2 dans lexpression1 la
position dbut. Pour effacer certains
caractres sans insrer dautre chane,
lexpression2 peut tre NULL (et non pas
"", qui indique un espace).
(expression, dbut, longueur)
Retourne une partie de lexpression. dbut
indique la position laquelle la nouvelle
chane commence; longueur indique le
nombre de caractres dans la nouvelle
chane.
(expression_alphanumrique)
Conversion des minuscules en majuscules.
expression + expression
Concatne deux caractres ou plus ou des
expressions binaires.

64/64

S. Q. L.

Fonctions systme
Fonction
col_name
col_length

Paramtres
(id_objet,id_colonne
[, id_base_de_donnes ] )
(nom_objet, nom_colonne)

curunrese
rvedpgs

(id_base_de_donnes,
numro_page, pages_libres)

data_pgs

(id_objet, {doampg | ioampg})

datalength

(expression)

db_id

( [nom_base_de_dones] )

db_name

( [id_base_de_donne] )

host_id

()

host_name ( )
index_col

Auteur: A.P.

(nom_objet, id_index, cl_#


[, id_utilisateur ] )

Retour
Retourne le nom de la colonne.
Retourne la longueur dfinie pour la colonne.
Il faut utiliser datalenght pour connatre la
taille relle de la donne.
Retourne le nombre de pages libres dans la
partie du disque contenant numro_page.
Il faut utiliser pages_libres pour indiquer une
valeur retourne par dfaut.
Si la base de donnes est ouverte,
curunreservedpgs remplace cette valeur par le
nombre rel de pages libres stockes en
mmoire pour cette partie du disque.
Retourne de pages utiliss par la table
(doampg) ou lindex (ioampgh).
Le rsultat ninclus pas les pages utilises pour
les structures internes.
Retourne la longueur de lexpression en octets.
Lexpression est gnralement un nom de
colonne. Si lexpression est une constante de
caractre, elle doit tre entoure de guillemets.
Retourne le numro (id) identifient de la base
de donnes. Si le nom de la base nest pas
spcifi, db_id retourne lidentifient de la base
courante.
Retourne le nom de la base de donnes. Si
lidentifient nest pas spcifi, db_name
retourne le nom de la base courante.
Retourne lidentifiant du processus hte du
processus client (pas le processus du serveur).
Retourne le nom de la machine hte courante
du processus client (pas le processus du
serveur).
Retourne le nom de la colonne indexe;
retourne NULL si le nom de lobjet nest ni une
table ni une vue.

65/65

S. Q. L.
isnull

( expression1, expression2 )

lct_admin

( { { "lastchance " | "logfull"


| "unsuspended " },
id_base_de_donnes } |
"reserve ", pages_log )
( nom_objet )
( id_objet
[, id_base_de_donnes ] )
("sa_role " | "sso_role " |
"oper_role ")

object_id
object_name
proc_role

reserved_pgs ( id_objet,
{ doampg | ioampg } )

rowcnt

( doampg )

show_role

()

suser_id

( [nom_utilisateur_serveur] ]

suser_name

( [id_utilisateur_serveur] )

user_pgs

( id_objet, doampg, ioampg )

tsequal
user
user_id

( timestamp1, timestamp2 )

user_name

( [id_utilisateur] )

valid_name

(expression_alphanumrique)

Auteur: A.P.

( [nom_utilisateur] )

Substitue la valeur spcifi dans expression2


quand la valeur dexpression1 est NULL.
Si types des expressions ne se convertissent
pas implicitement, il faut utiliser la fonction
convert.

Retourne lidentificateur (id) de lobjet.


Retourne le nom de lobjet.
Recherche si lutilisateur invoque le rle
correct pour excuter la procdure. Retourne 1
si linvocation a requis un rle. Sinon,
retourne 0.
Retourne le nombre de pages alloues pour la
table ou lindex. Cette fonction retourne
galement les pages utilises pour les
structures internes.
Retourne le nombre de lignes dans une table
(estimation).
Retourne les rles actifs de lutilisateur.
Retourne NULL si lutilisateur na aucun rle.
Retourne lidentifiant (id) de lutilisateur du
serveur (de syslogins). Si aucun id nest
trouv, retourne celui de lutilisateur courant.
Retourne le nom de lutilisateur du serveur.
Si aucun nom nest trouv, retourne le nom de
lutilisateur courant.
Retourne le nombre total de pages utilises
par une table et son index sectoris.
Retourne le nom de lutilisateur.
Retourne lidentifiant de lutilisateur, bas sur
lidentificateur dans la base de donnes
courante.
Retourne le nom de lutilisateur, bas sur
lidentificateur dans la base de donnes
courante.
Retourne 0 si lexpression nest pas un
identifiant valide (si elle contient des
caractres interdits ou plus de 30 octets);
Retourne un nombre diffrent de 0 si
lexpression est un identifiant valide.

66/66

S. Q. L.
Fonctions de manipulation de textes et dimages
Fonction
patindex

Paramtres
("%recherche%",
Expression_alphanumrique
[, using { bytes | chars | characters} ] )

textptr

(nom_colonne_text)

textvalid

("nom_table.nom_colonne",
pointeur_text)

set textsize

{n|0}

Auteur: A.P.

Retour
Retourne un entier reprsentant la
position de dpart de la premire
occurrence de recherche dans
lexpression spcifie ou zro si
recherche nest pas trouve. Par dfaut,
patindex retourne loffset en
caractres; pour obtenir loffset en
octets, il faut spcifier using bytes.
"%" doit
Le caractre gnrique
prcder et suivre recherche ( except
pour le recherche du premier ou du
dernier caractre ). (Voir caractres
gnriques pour une description de
leur utilisation avec patindex). Peut
tre utilis avec des donnes du type
text.
Retourne un pointeur (16 octets) sur un
texte. La valeur retourne pointe sur la
premire page du type text.
Test si le pointeur spcifi est valide.
Retourne 1 si le pointeur est valide et 0
dans le cas contraire.
Spcifie les limites, en octets de la
donne de type text
ou image a
retourner dans une commande
SELECT. Les limites courantes sont
stockes dans la variable globale
@@textsize. n est un entier qui indique
la limite en nombre doctects
retourner; 0 restaure la limite par
dfaut de 32 K octets.

67/67

S. Q. L.

VII. EXEMPLES DE REQUETES


Description
Cest le thme des livres qui a t retenu pour les exemples de requtes.
La base prsente dune manire simplifie la gestion dune maison ddition.

Contenu des Tables

Table AUTEURS
nom_auteur
BALZAC
CAMUS
DURAS
DUMAS
DOYLE
KING

prenom_auteur
Honor
Albert
Marguerite
Alexandre
Arthur Conan
Stephen

siecle
19
20
20
19
20
20

Table LIVRES
titre
Eugnie Grandet
Lamour
La peste
Les justes
Les chouans
Les trois mousquetaires
The case book of Sherlock Holmes

Auteur: A.P.

nom_auteur
BALZAC
DURAS
CAMUS
CAMUS
BALZAC
DUMAS
DOYLE

prenom_auteur
Honor
Marguerite
Albert
Albert
Honor
Alexandre
Arthur Conan

reference
L01
L02
L03
L04
L05
L06
L07

68/68

S. Q. L.
Table EDITIONS
reference
L03
L03
L02
L01
L04
L05
L05
L06
L07

date_edition
01/01/95
08/07/96
17/04/92
17/04/92
03/06/74
03/06/74
28/08/82
05/05/95
02/02/93

num_edition
1
2
1
1
1
1
2
1
1

langue
FRANCAIS
FRANCAIS
FRANCAIS
FRANCAIS
FRANCAIS
FRANCAIS
FRANCAIS
FRANCAIS
ANGLAIS

distrubuteur
X

prix
25

nbr_pages
300
300
140
300
300
450
550
1100

Table TARIFS
reference
L05
L05

Auteur: A.P.

num_edition
1
2

69/69

L05
L01
L02
L04
L06
L07
L07

2
1
1
1
1
1
1

X
Y
Y
X
X
X
Y
X

35
37
30
82
20
40
14
17

S. Q. L.

Exemples de Requtes
Requtes de slections

Requte 1
Enonc:
Afficher tous les attributs de tous les tuples de la table AUTEURS.
Requtes:
SELECT * FROM AUTEURS
ou
SELECT nom_auteur, prenom_auteur, siecle FROM AUTEURS
Retour:
nom_produit prenom_auteur siecle
BALZAC Honor
19
CAMUS Albert
20
DURAS Marguerite
20
DUMAS Alexandre
19
DOYLE Arthur Conan 20
KING Stephen 20

Auteur: A.P.

70/70

S. Q. L.
Requte 2
Enonc:
Afficher les noms de tous les auteurs partir de la table LIVRES.
Requtes:
SELECT nom_auteur FROM LIVRES
ou
SELECT LIVRES.nom_auteur FROM LIVRES
Retour:
nom_auteur
BALZAC
DURAS
CAMUS
CAMUS
BALZAC
DOYLE

Remarques:

Auteur: A.P.

Les doubles nont pas t limins.


Les lignes nont pas t tries.

71/71

S. Q. L.
Requte 3
Enonc:
Afficher les noms de tous les auteurs partir de la table LIVRES avec limination
des doubles.
Requtes:
SELECT DISTINCT nom_auteur FROM LIVRES
ou
SELECT DISTINCT LIVRES.reference FROM LIVRES
Retour:
nom_auteur
BALZAC
CAMUS
DOYLE
DUMAS
DURAS

Remarques:

Auteur: A.P.

Les lignes ont t tries par ordre croissant.

72/72

S. Q. L.
Requte 4
Enonc:
Afficher les titres des livres crits par BALZAC.
Requtes:
SELECT titre FROM LIVRES WHERE nom_auteur = BALZAC
ou
SELECT LIVRES.titre FROM LIVRES WHERE nom_auteur = BALZAC
Retour:
titre
Eugnie Grandet
Le chouans

Auteur: A.P.

73/73

S. Q. L.
Requte 5
Enonc:
Afficher la rfrence des livres dont la deuxime dition est en langue franaise.
Requte:
SELECT reference FROM EDITIONS
WHERE num_edition = 2
AND langue = FRANCAIS
Retour:
reference
L03
L05

Requte 6
Enonc:
Afficher les titres des livres crits par BALZAC ou par CAMUS.
Requtes:
SELECT titre FROM LIVRES
WHERE nom_auteur = BALZAC OR

nom_auteur = CAMUS

ou
SELECT titre FROM LIVRES
WHERE nom_auteur IN (BALZAC, CAMUS)
Retour:
titre
Eugnie Grandet
Le chouans
Les justes
Les Chouans

Auteur: A.P.

74/74

S. Q. L.
Requte 7
Enonc:
Afficher les titres des livres crits ni par BALZAC ni par CAMUS (dans la table
LIVRES).
Requtes:
SELECT titre FROM LIVRES
WHERE nom_auteur < > BALZAC AND nom_auteur < > CAMUS
ou
SELECT titre FROM LIVRES
WHERE nom_auteur NOT IN (BALZAC, CAMUS)
Retour:
titre
Lamour
Les trois mousquetaires
The case book of Sherlock Holmes

Requte 8
Enonc:
Afficher la rfrence et le numro ddition des livres dont le nombre de pages est
inconnu.
Requte:
SELECT reference, num_edition FROM EDITIONS
WHERE nbr_pages IS NULL
Retour:
reference num_edition
L05 2

Auteur: A.P.

75/75

S. Q. L.
Requte 9
Enonc:
Slectionner les auteurs (nom, prnom) dont le nom commence par D (dans la
table AUTEURS).
Requtes:
SELECT nom_auteur, prenom_auteur FROM AUTEURS
WHERE nom_auteur LIKE D% Exemples de Requtes - Requte 9
Retour:
nom_auteur nom_auteur
DURAS Marguerite
DUMAS Alexandre
DOYLE Arthur Conan

Requte 10
Enonc:
Slectionner les auteurs (nom, prnom) dont le nom commence par D, se termine
par un S et est compos de 5 lettres (dans la table AUTEURS).
Requtes:
SELECT nom_auteur, prenom_auteur FROM AUTEURS
WHERE nom_auteur LIKE D___S
Retour:
nom_auteur nom_auteur
DURAS Marguerite
DUMAS Alexandre

Auteur: A.P.

76/76

S. Q. L.
Requte 11
Enonc:
Combien y a til de livres dont le nombre de pages est suprieur 200 lors de la
premire dition ?
Requtes:
SELECT COUNT (*) Nombre_de_livres FROM EDITIONS
WHERE num_edition = 1
AND nbr_pages > 200
Retour:
Nombre_de_livres
6

Remarque:

Pour nommer ou renommer une colonne Exemples de Requtes - Requte 11, il


faut placer le nouveau nom de celle-ci dans la commande SELECT, aprs le
nom de lattribut concern.
Le nom de la colonne de doit pas contenir despace.

Auteur: A.P.

77/77

S. Q. L.
Requte 12
Enonc:
Slectionner les ditions (tous les attributs) dont le nombre de pages est le nombre
de pages maximum dune dition.
Requtes:
SELECT * FROM EDITIONS
WHERE nbr_pages = ( SELECT MAX (nbr_pages) FROM EDITIONS )
ou
SELECT * FROM EDITIONS
WHERE nbr_pages IN ( SELECT MAX (nbr_pages) FROM EDITIONS )
Retour:
reference date_edition num_edition
L07 02/02/93 1

Auteur: A.P.

langue
nbr_pages
ANGLAIS 1100

78/78

S. Q. L.
Requte 13
Enonc:
Slectionner les ditions (tous les attributs) dont le nombre de pages est dans la
moyenne (moyenne de toutes les ditions) 10% prs.
Requtes:
SELECT * FROM EDITIONS
WHERE nbr_pages BETWEEN
( SELECT AVG (nbr_pages) FROM EDITIONS ) * 0.9
AND
( SELECT AVG (nbr_pages) FROM EDITIONS ) * 1.1
ou
SELECT * FROM EDITIONS
WHERE nbr_pages > =
( SELECT AVG (nbr_pages) FROM EDITIONS ) * 0.9
AND nbr_pages < =
( SELECT AVG (nbr_pages) FROM EDITIONS ) * 1.1
Retour:
reference date_edition num_edition
L05 03/06/74 1

Auteur: A.P.

langue
nbr_pages
FRANCAIS 450

79/79

S. Q. L.
Requte 14
Enonc:
Afficher les titres des livres (en liminant les doublons) figurants au tarif.
Requtes:
SELECT DISTINCT LIVRES.titre FROM LIVRES, TARIFS
WHERE LIVRES.reference = TARIFS.reference
ou
SELECT DISTINCT a.titre FROM LIVRES a, TARIFS b
WHERE a.reference = b.reference
Retour:
titre
Eugnie Grandet
Lamour
Les chouans
Les justes
Les trois mousquetaires
The case book of Sherlock Holmes

Remarques:

Auteur: A.P.

Les tables (LIVRES et TARIFS) sont lis par une jointure (sur lattribut
rfrence).
On utilise gnralement des alias en mme temps que les jointures, afin de ne
pas rpter inutilement les noms des tables dans une mme slection..

80/80

S. Q. L.
Requte 15
Enonc:
Afficher les titres des livres (en liminant les doublons) distribus la fois par le
distributeur X et le distributeur Y.
Requte:
SELECT DISTINCT a.titre FROM LIVRES a, TARIFS b1, TARIFS b2
WHERE a.reference = b1.reference AND b1.reference = b2.reference
AND b1.distributeur = X
AND b2.distributeur = Y
Retour:
titre
Les chouans
The case book of Sherlock Holmes

Remarque:

Auteur: A.P.

Pour effectuer un produit cartsien (ou une jointure) entre une table et elle
mme, il est indispensable dutiliser des alias.

81/81

S. Q. L.
Requte 16
Enonc:
Slectionner les livres (date ddition, titre, numro ddition) dits au moins une
fois; trier le retour par date ddition croissante puis par titre.
Requtes:
SELECT b.date_edition, a.titre, b.num_edition FROM LIVRES a, EDITIONS b
WHERE a.reference = b.reference
ORDER BY b.date_edition ASC, a.titre ASC
ou
SELECT b.date_edition, a.titre, b.num_edition FROM LIVRES a, EDITIONS b
WHERE a.reference = b.reference
ORDER BY b.date_edition, a.titre
ou
SELECT date_edition, titre, num_edition FROM LIVRES a, EDITIONS b
WHERE a.reference = b.reference
ORDER BY date_edition, titre
Retour:
date_edition titre num_edition
03/06/74 Les chouans
03/06/74 Les justes
28/08/82 Les chouans
17/04/92 Eugnie Grandet
17/04/92 Lamour 1
02/02/93
The case book of Sherlock Holmes
01/01/95 La peste
05/05/95
Les trois mousquetaires
08/07/96 La peste

Remarques:

Auteur: A.P.

1
1
2
1
1
1
1
2

Cest la clause ORDER BY qui permet de trier(sans croissant par dfaut) le


retour de la requte.
Il nest pas ncessaire dindiquer le nom de lalias avant les attributs lorsque
que ceux ci ne figure que dans une des tables concernes par la requte.

82/82

S. Q. L.
Requte 17
Enonc:
Calculer et afficher le nombre de livres crits par auteur.
Requtes:
SELECT nom_auteur, COUNT (*)livres_crits
FROM LIVRES
GROUP BY nom_auteur
Retour:
Nom_auteur livres_crits
BALZAC 2
CAMUS 2
DOYLE 1
DUMAS 1
DURAS 1

Requte 18
Enonc:
Afficher le nombre de livres crits par auteur (nom, prnom) groups par auteurs
ayant un A dans leur nom.
Requtes:
SELECT nom_auteur, prenom_auteur, count(*)
FROM LIVRES
GROUP BY nom_auteur, prenom_auteur
HAVING nom_auteur LIKE '%A%'
Retour:
nom_auteur prenom_auteur
BALZAC Honor
CAMUS Albert
DUMAS Alexandre
DURAS Marguerite

Auteur: A.P.

nombre_de_livres
2
2
1
1

83/83

S. Q. L.
Requte 19
Enonc:
Slectionner les nom de tous les auteurs de la table AUTEURS, puis slectionner
tous les livres (titre, nom de lauteur) de la table LIVRES.
Requtes:
SELECT DISTINCT null titre, nom_auteur, null prenom_auteur
FROM AUTEURS
UNION
SELECT titre, nom_auteur, prenom_auteur
FROM LIVRES
Retour:
titre nom_auteur prenom_auteur
BALZAC
CAMUS
DOYLE
DUMAS
DURAS
KING
La peste
CAMUS
Albert
Les justes
CAMUS
Albert
Les trois mousquetaires
DUMAS
Alexandre
The case book of Sherlock Holmes DOYLE
Arthur Conan
Eugnie Grandet
BALZAC
Honor
Les chouans
BALZAC
Honor
Lamour
DURAS Marguerite

Auteur: A.P.

84/84

S. Q. L.

Requtes de mises jour

Requte 20
Enonc:
Crer la table STOCK avec les champs reference, num_edition, quantite ayant pour
styles respectifs varchar(3), tinyint et smallint.
Requte:
CREATE TABLE STOCK
( reference varchar(3), num_edition tinyint, quantite smallint )

Requte 21
Enonc:
Dtruire la table STOCK.
Requte:
DROP TABLE STOCK

Requte 22
Enonc:
Crer la table STOCK avec les champs reference, num_edition, quantite ayant pour
styles respectifs varchar(3), tinyint et smallint, avec les deux premiers champs obligatoires et
le dernier facultatif.
Requte:
CREATE TABLE STOCK
( reference
varchar(3)
NOT NULL,
num_edition tinyint
NOT NULL,
quantite
smallint
NULL )

Auteur: A.P.

85/85

S. Q. L.
Requte 23
Enonc:
Insrer la ligne ci-dessous dans la table STOCK.
reference
L01

num_edition
1

quantite
10000

Requte:
INSERT INTO STOCK
VALUES ( L01, 1, 10000 )

Requte 24
Enonc:
Doubler les quantits des premires ditions des livres.
Requte:
UPDATE STOCK
SET quantite = quantite * 2
WHERE num_edition = 1

Requte 25
Enonc:
Enlever du stock les livres de premire dition.
Requte:
DELETE FROM STOCK
WHERE num_edition = 1

Auteur: A.P.

86/86

S. Q. L.
Requte 26
Enonc:
Ajouter deux colonnes la table STOCK: une colonne quantite_prec (quantit
prcdente) de type smallint, et une colonne date_maj (dernire mise jour) de type
smalldatime
Requte:
ALTER TABLE STOCK
ADD quantite_prec smallint NULL,
date_maj
smalldatetime NULL

Remarques: Les nouvelles colonnes ont la valeurs NULL.


Le mot cl NULL a t plac la fin des dfinitions des nouvelles colonnes
pour autoriser la valeur NULL dans ces colonnes. Ce mot cl est ncessaire
dans le cas prsent si la table contient dj des donnes.
Le mot cl NOT NULL nest pas autoris dans la commande ALTER TABLE.

Auteur: A.P.

87/87

S. Q. L.

Requtes complexes

Requte 27
Enonc:
Crer et renseigner une table temporaire
dessous.

(#TEMP) dont les champs sont dcris ci-

Description des champs:


Nom du champ Champ dorigine Table dorigine
prenom prenom_auteur AUTEURS
nom nom_auteur AUTEURS
titre titre
LIVRES
num_edition num_edition EDITIONS
date_edition date_edition EDITIONS
Jointures :
Premire Table
AUTEURS
LIVRES

Seconde Table
LIVRES
EDITIONS

Attribut(s)
nom_auteur, prenom_auteur
reference

Le rsultat devra tre tri par prnom, nom, titre puis numro ddition.
Requte:

SELECT

a.prenom_auteur prenom, a.nom_auteur nom, b.titre,


c.num_edition, c.date_edition
INTO
#TEMP
FROM
AUTEURS a, LIVRES b, EDITIONS c
WHERE
a.nom_auteur = b.nom_auteur
AND
a.prenom_auteur = b.prenom_auteur
AND
b.reference = c.reference
ORDER BY a.nom_auteur, a.prenom_auteur, b.titre, c.num_edition

Remarques:

Auteur: A.P.

Le nom dune table temporaire doit tre prfix dun caractre # .


Les tables temporaires sont automatiquement supprimes par le serveur lors de
la dconnexion.

88/88

S. Q. L.
Requte 28
Enonc:
Crer et renseigner une table temporaire (#TEMP2) dont les champs sont dcris cidessous.
Description des champs:
Nom du champ
Champ dorigine
prenom prenom_auteur AUTEURS
nom nom_auteur AUTEURS
titre titre
reference reference LIVRES
num_edition num_edition EDITIONS
date_edition date_edition EDITIONS
prix_moyen nant
nombre_distributeur nant

Table dorigine

LIVRES

nant
nant

Jointures :
Premire Table
AUTEURS
LIVRES

Seconde Table
LIVRES
EDITIONS

Attribut(s)
nom_auteur, prenom_auteur
reference

Le rsultat devra tre tri par prnom, nom, titre puis numro ddition.
Le champ nombre_distributeur sera du type smallint.
Le champ prix_moyen sera du type smallmoney.

Auteur: A.P.

89/89

S. Q. L.
Requte:

CREATE TABLE #TEMP2


(
prenom char(25), nom char(25), titre char(25),
reference varchar(3), num_edition smallint,
date_edition smalldatetime, prix_moyen smallmoney NULL,
nombre_distributeur smallint NULL )
INSERT INTO #TEMP2
(

prenom, nom, titre, reference, num_edition, date_edition )

SELECT

a.prenom_auteur prenom, a.nom_auteur nom, b.titre,


b.reference, c.num_edition, c.date_edition
FROM
AUTEURS a, LIVRES b, EDITIONS c
WHERE
a.nom_auteur = b.nom_auteur
AND
a.prenom_auteur = b.prenom_auteur
AND
b.reference = c.reference
ORDER BY a.nom_auteur, a.prenom_auteur, b.titre, c.num_edition

Remarques:

Auteur: A.P.

Il nest pas possible ici de crer et de renseigner la table temporaire dans une
commande unique ( SELECT ... INTO) car les colonnes laisses vides doivent
tre types.
Les nouvelles colonnes ont la valeurs NULL.
Le mot cl NULL a t plac la fin des dfinitions des nouvelles colonnes
pour autoriser la valeur NULL dans ces colonnes. Ce mot cl est ncessaire
dans le cas prsent si la table contient dj des donnes.
Le mot cl NOT NULL nest pas autoris dans la commande ALTER TABLE.

90/90

S. Q. L.
Requte 29
Enonc:
Mettre jour, dans la table temporaire (#TEMP2) les champs dcris ci-dessous.
Description des champs:
Nom du champ
Description
nombre_distributeur Nombre de distributeurs pour un livre.
prix_moyen
Moyenne des prix pour ce livre. Fonction AVG du champ prix.
Requte:
UPDATE #temp2
SET nombre_distributeur =
(
SELECT COUNT(*)
FROM TARIFS a
WHERE #temp2.reference=a.reference
AND
#temp2.num_edition=a.num_edition
),
prix_moyen =
(
SELECT AVG(prix)
FROM TARIFS a
WHERE #temp2.reference=a.reference
AND
#temp2.num_edition=a.num_edition
)

Auteur: A.P.

91/91

S. Q. L.
Requte 30 (Spcifique SYBASE)
Enonc:
Crer une procdure date_edition qui afficher les dates des ditions des livres (dont
la rfrence est passe en paramtre. Le format daffichage de la date sera : JJ.MM.AAAA.
Requte:
CREATE PROC date_edition ( @reference varchar(3) )
AS
SELECT num_edition edition,
CONVERT ( char(10), date_edition, 104 ) date
FROM
EDITIONS
WHERE reference=@reference
RETURN

Remarques:

Style
0
1
2
3
4
5
6
7
8
9
10
11

Pour convertir une date ( format datetime ou smalldatetime) en une chane de


caractres selon un style spcifique, il faut utiliser la fonction CONVERT.
Le troisime paramtre de la fonction CONVERT indique le numro du style
de la chane retourne; le tableau ci-dessous prsente la liste des styles
disponibles :

Format
mm jj aaa hh:mm
mm/jj/aa
aa.mm.jj
jj/aa/mm
jj.mm.aa
jj-mm-aa
jj moi aa
moi jj, aa
hh:mn:ss
moi jj aa hh:mn:ss. AM
mm-jj-aa
aa/mm/jj

Auteur: A.P.

Style

Format

101
102
103
104
105
106
107

mm/jj/aaaa
aaaa.mm.jj
jj/mm/aaaa
jj.mm.aaaa
jj-mm-aaaa
jj moi aaaa
moi jj, aaaa

109
110
111

moi jj aaaa hh:mm:ss. AM


mm-jj-aaaa
aaaa/mm/jj

92/92

12

aammjj

112

aaaammjj

S. Q. L.
Requte 31
Enonc:
Crer une table auteurs_bis, jumelle de la table auteurs en une commande. La table
auteurs_bis doit avoir le mme format que la table auteurs et les mmes donnes.
Requte:
SELECT * INTO auteurs_bis
FROM auteurs

Remarques:

Pour que cette commande soit possible, il faut que loption Allow select into
soit active sur la base de donnes en question.

Auteur: A.P.

93/93

S. Q. L.

VIII. ANNEXES

Auteur: A.P.

94/94

S. Q. L.

Mots cls rservs

ADD
AFTER
ALL
ALTER
AND
ANY
AS
ASC
AUTHORIZATION
AVERAGE
AVG
BEFORE
BEGIN
BETWEEN
BIND
BREAK
BROWSE
BULK
BY
CASE
CHAR
CHARACTER
CHECKPOINT
CLOSE
CLUSTERED
COBOL
COLUMN
COMMENT
COMMIT
COMPUTE
CONFIRM
CONNECT
COMMIT
CONNECT
CONTINUE
CONTROLROW
CONVERT
COUNT
CREATE
CURRENT
CURSOR
DATA
DATABASE
DATE
DATETIME
DAY

Auteur: A.P.

DAYS
DBCC
DEC
DECIMAL
DECLARE
DEFAULT
DELETE
DESC
DESCRIBE
DISK
DISTINCT
DOUBLE
DROP
DUMMY
DUMP
EACH
ELSE
END
ERRLVL
ERROREXIT

95/95

EXCEPT
EXCLUSIVE
EXEC
EXECUTE
EXISTS
EXIT
FETCH
FILLFACTOR
FIRST
FLOAT
FOR
FORTRAN
FROM
GO
GOTO
GLOBAL
GRANT
GRAPHIC
GROUP
HAVING
HOLD
HOLDLOCK
IF
IMMEDIATE
IN
INDEX

INSERT
INT
INTEGER
INTERSECT
INTO
IS
KEY
KILL
LABEL
LENGTH
LEVEL
LIKE
LINENO
LOAD
LOCK
LONG
MAX
MICROSECOND
MICROSECONDS
MIN
MINUTE
MIRROREXIT
MIXED
MODE
MONTH
MONTHS
NEXT
NEW
NONCLUSTERED
NONE
NOT
NULL
NUMERIC
OFF
OFFSETS
ON
ONCE
ONLY
OPTION
OR
ORDER
OVER
PAGE
PAGES
PASCAL
PERM

PERMANENT
PLAN
PL1
PRECISION
PREPARE
PRINT
PRIVILEGES
PROC
PROCEDURE
PROCESSEXIT
PROGRAM
PUBLIC
RAISERROR
READTEXT
REAL
RECONFIGURE
REFERENCE
REFECENCES
RELATIVE
RETURN
REVOKE
ROLLBACK
ROWCOUNT
RULE
SAVE
SECOND
SECONDS
SECTION
SELECT
SESSION
SET
SETUSER
SHARE
SHUTDOWN
SMALLINT
SOM
SQL
SQLCODE
SQLDESCRIPTOR
SQLERROR
SQLSTATE
STATISTICS
SUBSTR
SUBSTRINGS
SUM
SYNONYM

S. Q. L.
TABLE
TABLEGROUP
TABLESPACE
TAPE
TEMP
TEMPORARY
TEXT
TEXTSIZE
THEN
TIME
TIMESTAMP

Auteur: A.P.

TO
TRAN
TRANSACTION
TRIGGER
TRUNCATE
TSEQUAL
UNION
UNIQUE
UNITS
UNLOCK
UPDATE

USE
USER
USING
VALUE
VALUES
VARCHAR
VARIABLES
VIEW
VOLUME
WAIT
WAITFOR

WHEN
WHENEVER
WHERE
WHILE
WITH
WORK
WRITE
WRITETEXT
YEAR
YEARS

96/96

S. Q. L.

Bibliographie
Titre
Auteur
Bases de donnes G.GARDARIN EYROLLES
Guide du langage SQL
John Viescas
Le livre de SQL
Suzy Pasleau
SQL AIDE-MEMOIRE
SQL Data System Concepts and Facilities
SYBASE SQL Server Quick Reference Guide
TRANSACT SQL

Auteur: A.P.

Editeur
Microsoft Press
PSI
CEDIC / NATHAN
IBM Corporation
SYBASE
SYBASE

97/97

S. Q. L.

Lexique
Cl

Une cl primaire (appele tout


simplement cl) est un champ ou un
groupe de champs qui contient des
donnes nidentifiant quun seul quun
seul enregistrement de la table.
Une cl ncessite une seule valeur par
enregistrement (ligne) de la table, ce
qui vite les doublons. Les tables qui
possdent des cls sont dites indexes.
Une cl dfinit lordre de tri par
dfaut de la table.
Index
Un index dtermine lordre dans
lequel on accde aux enregistrements
de la table.
Un index est une table (ou plusieurs
tables) permettant dassocier chaque
cl denregistrement, ladresse
relative de cet enregistrement.
Requte Une requte est une question formule
sur les donnes contenues dans des
tables.

Auteur: A.P.

S.G.B.D. Systme de Gestion de Bases de


Donnes.
S.Q.L.

Table

(Structured Query Language.)


Langage de requtes structur.
Il permet de crer, modifier et
rcuprer des donnes partir dune
base de donnes relationnelle.
Les tables recueillent les donnes de
la base. Une table est compose de
lignes et de colonnes.
Chaque ligne contient toute
linformation disponible sur un sujet
particulier. On lappelle
enregistrement.
Chaque colonne contient une
catgorie dinformation composant
lenregistrement. On lappelle champ.

98/98

S. Q. L.

Index

A
alias
Exemples de Requtes - Requte 14..................................................................................................................80
ALL
Expression des Slections - Prdicats de slection - ALL.................................................................................47
ALTER TABLE
Exemples de Requtes - Requte 26..................................................................................................................87
Principales Commandes - ALTER TABLE.......................................................................................................23
AND
Concepts Oprateurs Oprateurs logiques...................................................................................................11
Exemples de Requtes - Requte 5....................................................................................................................74
ANY
Expression des Slections - Prdicats de slection - ANY................................................................................47
AVG
Exemples de Requtes - Requte 13..................................................................................................................79
B
base de donnes
CONCEPTS - Contenu dune base de donnes...................................................................................................6
BEGIN
Programmation structure - Groupes dinstructions..........................................................................................53
BETWEEN
Exemples de Requtes - Requte 13..................................................................................................................79
Expression des Slections - Prdicats de slection - BETWEEN .....................................................................48
BREAK
Programmation structure - Excution Rptitive.............................................................................................55
C
caractre gnrique
Expression des Slections - Prdicats de slection - LIKE ...............................................................................50
COMPUTE
Expression des Slections - Clauses daccompagnement - COMPUTE............................................................39
condition
Prdicats - clause WHERE................................................................................................................................45
CONTINUE
Programmation structure - Excution Rptitive.............................................................................................55
CONVERT
Exemples de Requtes - Requte 30..................................................................................................................92
Fonctions - Fonctions de conversion de types...................................................................................................58
convertir une date
Exemples de Requtes - Requte 30..................................................................................................................92
COUNT
Exemples de Requtes - Requte 11..................................................................................................................77
CREATE PROC
Concepts - Procdures stockes - Syntaxe de cration......................................................................................17
CREATE TABLE
Exemples de Requtes - Requte 20..................................................................................................................85
Principales Commandes - CREATE TABLE....................................................................................................24

Auteur: A.P.

99/99

S. Q. L.
CREATE TRIGGER
Concepts - Triggers - Gestion des triggers ........................................................................................................21
Crer une table et la remplir partir dune autre
Exemples de Requtes - Requte 31..................................................................................................................93
D
date
Exemples de Requtes - Requte 30
convertir une date .........................................................................................................................................92
Fonctions - Fonctions de manipulation de dates................................................................................................59
Types de donnes - Donnes horaires .................................................................................................................8
DECLARE
Principales Commandes - DECLARE...............................................................................................................26
DELETE
Exemples de Requtes - Requte 25..................................................................................................................86
Principales Commandes - DELETE..................................................................................................................27
deleted
Concepts - Triggers - Fonctionnement des triggers...........................................................................................22
DISTINCT
Exemples de Requtes - Requte 3....................................................................................................................72
Expression des Slections - Prdicats de slection - DISTINCT ......................................................................48
DROP TABLE
Exemples de Requtes - Requte 21..................................................................................................................85
Principales Commandes - DROP TABLE.........................................................................................................28
E
ELSE
Programmation structure - Excution Contitionnelle.......................................................................................54
EXEC
Concepts - Procdures stockes - syntaxe de dappel........................................................................................17
EXISTS
Expression des Slections - Prdicats de slection - EXISTS...........................................................................49
F
FROM
Expression des Slections - Format gnral d'une slection..............................................................................38
G
GRANT
Principales Commandes - GRANT ...................................................................................................................29
GROUP BY
Exemples de Requtes - Requte 17..................................................................................................................83
Expression des Slections - Clauses daccompagnement - GROUP BY et HAVING ......................................41
H
HAVING
Exemples de Requtes - Requte 18..................................................................................................................83
Expression des Slections - Clauses daccompagnement - GROUP BY et HAVING ......................................41
I
IF UPDATE
Concepts - Triggers - Fonctionnnement des triggers.........................................................................................22
IN
Exemples de Requtes - Requte 12..................................................................................................................78
Exemples de Requtes - Requte 6....................................................................................................................74
Expression des Slections - Prdicats de slection - IN ....................................................................................49
INSERT
Exemples de Requtes - Requte 23..................................................................................................................86
Principales Commandes - INSERT ...................................................................................................................32

Auteur: A.P.

100/100

S. Q. L.
inserted
Concepts - Triggers - Fonctionnement des triggers...........................................................................................22
INTO
Exemples de Requtes - Requte 27..................................................................................................................88
Exemples de Requtes - Requte 31 - Crer une table et la remplir partir dune autre ..................................93
IS NULL
Exemples de Requtes - Requte 8....................................................................................................................75
J
jointure
Concepts - Jointures ..........................................................................................................................................14
Exemples de Requtes - Requte 14..................................................................................................................80
jointure externe
Concepts - Jointures ..........................................................................................................................................15
L
LIKE
Exemples de Requtes - Requte 9....................................................................................................................76
Expression des Slections - Prdicats de slection - LIKE ...............................................................................50
M
MAX
Exemples de Requtes - Requte 12..................................................................................................................78
N
NOT
Concepts Oprateurs Oprateurs logiques...................................................................................................11
Exemples de Requtes - Requte 7....................................................................................................................75
NULL
CONCEPTS - Types de donnes - Valeur Nulle.................................................................................................9
Expression des Slections - Prdicats de slection - NULL..............................................................................52
O
oprateurs logiques
Prdicats - clause WHERE................................................................................................................................45
OR
Concepts Oprateurs Oprateurs logiques...................................................................................................11
Exemples de Requtes - Requte 6....................................................................................................................74
ORDER BY
Exemples de Requtes - Requte 16..................................................................................................................82
Expression des Slections - Clauses daccompagnement - ORDER BY...........................................................44
OUTPUT
Concepts - Procdures stockes - Utilisation de paramtres pour retourner des valeurs depuis une procdure19
P
prdicat
Expression des Slections - Prdicats de slection............................................................................................46
procdure stocke
Concepts - Procdures stockes ........................................................................................................................16
R
renommer une colonne
Exemples de Requtes - Requte 11..................................................................................................................77
RETURN
Concepts - Procdures stockes - Utilisation du code status retourn par une procdure .................................20
REVOKE
Principales Commandes - REVOKE.................................................................................................................32

Auteur: A.P.

101/101

S. Q. L.

Programmation structure - Excution


SRptitive.............................................................................................5
SELECT
Exemples de Requtes - Requte 1....................................................................................................................70
Exemples de Requtes - Requte 31 - Crer une table et la remplir partir dune autre ..................................93
Principales Commandes - SELECT ..................................................................................................................33
slection
Expression des Slections - Format gnral d'une slection..............................................................................38
SET
Exemples de Requtes - Requte 24..................................................................................................................86
Principales Commandes - SET..........................................................................................................................36
SOME
Expression des Slections - Prdicats de slection - SOME .............................................................................52
T
table
Concepts - Tables..............................................................................................................................................13
table temporaire
Exemples de Requtes - Requte 27..................................................................................................................88
trigger
Concepts - Triggers ...........................................................................................................................................21
U
UNION
Concepts - Oprateurs - Oprateur UNION ......................................................................................................12
Exemples de Requtes - Requte 19..................................................................................................................84
UPDATE
Exemples de Requtes - Requte 24..................................................................................................................86
Principales Commandes - UPDATE .................................................................................................................37
V
VALUES
Exemples de Requtes - Requte 23..................................................................................................................86
variable
assignation de valeurs aux variables locales......................................................................................................35
dclaration des variables locales .......................................................................................................................26
W
WAITFOR
Programmation structure - Excution Evnementielle.....................................................................................56
WHERE
Exemples de Requtes - Requte 4....................................................................................................................73
Expression des Slections - Clauses daccompagnement - WHERE.................................................................45
WHILE

Auteur: A.P.

102/102