You are on page 1of 20

Support de Cours

REQUTES
TRANSACT-SQL
DANS MICROSOFT
SQL SERVER 2000








Stphane NGUESSAN
Groupe Pigier Abidjan
Version 1.2 du 29/04/05


















Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 1
1ab1e des maf1es
CHAPITRE 0 : INTRODUCTION.................................................4
I) ObjectiIs...............................................................................................................4
II) CertiIication MicrosoIt .......................................................................................4
III) Conventions.......................................................................................................4
IV) InIormations ......................................................................................................4
CHAPITRE 1 : PRSENTATION DE TSQL................................5
I) Historique.............................................................................................................5
II) Les diIIerents types d`instructions......................................................................5
III) Les Directives....................................................................................................5
IV) Elements de syntaxe de TSQL ..........................................................................6
CHAPITRE 2 : UTILISATION DES OUTILS DE REQUTES.....9
I) Presentation de SQL Server .................................................................................9
II) Les outils de SQL Server ..................................................................................11
III) Presentation de l`analyseur de requte ............................................................12
IV) Presentation de Osql........................................................................................13
CHAPITRE 3 : CRATION DES OBJETS DE BASES DE
DONNEES .................................................................................14
I) Architecture d`une base de donnees...................................................................14
II) Gestion d`une base de donnees.........................................................................15
III) Gestion d`une table..........................................................................................17
IV) Implementation des contraintes d`integrites....................................................18
CHAPITRE 4 : EXTRACTION DE DONNES...........................21
I) Principes de base des requtes ...........................................................................21
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 2
II) Utilisation de la clause SELECT ......................................................................21
III) Utilisation de la clause FROM........................................................................22
IV) Utilisation de la clause WHERE.....................................................................22
V) Utilisation de la clause ORDER BY.................................................................23
VI) Techniques avancees d`acces aux donnees .....................................................23
CHAPITRE 5 : REGROUPEMENT ET SYNTHSE DE
DONNES .................................................................................24
I) Utilisation des Ionctions d`agregation................................................................24
II) Regroupement avec GROUP BY......................................................................25
III) Synthese avec COMPUTE..............................................................................26
CHAPITRE 6 : JOINTURE DES TABLES.................................27
I) Generalites .........................................................................................................27
II) Les jointures internes........................................................................................27
III) Les jointures externes......................................................................................28
CHAPITRE 7 : UTILISATION DES SOUS-REQUTES............29
I) Les regles des sous-requtes ..............................................................................29
II) Les types de sous-requtes................................................................................29
III) Combinaisons de resultats de requtes ............................................................30
CHAPITRE 8 : MODIFICATION DES DONNEES .....................32
I) Ajout de donnees................................................................................................32
II) ModiIication de donnees...................................................................................33
III) Suppression de donnees...................................................................................33
CHAPITRE 9 : PRESENTATION DES OBJETS DE
PROGRAMMATION..................................................................34
I) Presentation des vues .........................................................................................34
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 3
II) Presentation des procedures stockees ...............................................................35
III) Presentation des Ionctions ...............................................................................37
IV) Presentation des declencheurs.........................................................................37


Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 4
CHAPITRE 0 : INTRODUCTION
Bienvenue dans ce cours de Requtes Transact-SQL dans SQL
Server 2000 .
I) Objectifs
Ce cours donne tous les lments utiles pour crer une base de
donnes dans SQL Server 2000 en utilisant uniquement les
instructions du langage Transact-SQL.
II) Certification Microsoft
Ce cours est un pr requis ncessaire, mais pas suffisant pour
passer les examens 70-228 (Administration de SQL Server 2000) et
70-229 (Implmentation de SQL Server 2000) de Microsoft.
III) Conventions
Dans ce document, nous utiliserons les conventions suivantes :
- lorsque nous crivons cliquez sur Fichier->Ouvrir cela
signifie Droulez le menu Fichier et slectionnez llment
Ouvrir ;
- dans la syntaxe, les lments entre crochets [ ] sont
facultatifs ; les lments entre accolades { } sont des options.
Le sparateur doptions est le caractre |.
IV) Informations
Ce support de cours est libre de droits de reproduction. Vous
pouvez le redistribuer sous toutes ses formes. Bien que toutes les
prcautions aient t prises lors de sa rdaction, nous dclinons
toutes responsabilits concernant la fiabilit et lexhaustivit du
prsent support. Nous vous saurions gr toutefois, de nous signaler
toutes les imperfections que vous pourriez rencontrer pendant la
lecture, de ce document.

Bonne Lecture !

Stphane NGUESSAN
snb@powernet.ci
MCP Visual Basic .NET, MCDBA SQL Server 2000, MCSE 2000
Dveloppeur SQL Server depuis 1999
Groupe Pigier - Abidjan
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 5
CHAPITRE 1 : PRSENTATION DE TSQL

Le langage TSQL (Transact Strutrured Query Language) permet de
normaliser le dveloppement dapplications lies aux Bases de
Donnes. TSQL est une extension du langage SQL dvelopp par
IBM (International Business Machine) dans les annes 1970. Cest
un langage procdural par opposition SQL qui est un langage
dclaratif.
I) Historique
Le langage SQL est n la suite des travaux du mathmaticien
Codd. Historiquement, les annes suivantes sont importantes :
- 1970 : IBM dveloppe SQL
- 1980 : Sybase dveloppe TSQL
- 1986 : Normalisation SQL/86
- 1989 : Normalisation SQL/89
- 1992 : Normalisation ANSI SQL/92
- 1996 : Microsoft adopte TSQL
II) Les diffrents types dinstructions
Le langage SQL possde trois types dinstructions :
- le Langage de Dfinition des Donnes (LDD ou DDL en
anglais) utilis pour la cration, la modification et la
suppression des objets de base de donnes (tables, vues,
etc.). Il utilise principalement les instructions CREATE,
ALTER et DROP ;
Exemple: CREATE DATABASE Test
- le Langage de Manipulation des Donnes (LMD ou DML
en anglais) qui permet de slectionner, dajouter, de modifier
et de supprimer des donnes dans les objets de base de
donnes (tables, vues, etc.). Il utilise principalement les
instructions SELECT, INSERT, UPDATE et DELETE ;
Exemple: SELECT * FROM Produits
- le Langage de Contrle des Donnes (LCD ou DCL en
anglais) utilis pour la gestion des protections daccs aux
donnes. Il utilise principalement les instructions GRANT,
DENY et REVOKE.
Exemple : GRANT Select ON Produits TO Steve
III) Les Directives
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 6
Les directives indiquent comment traiter les instructions TSQL. Les
principales directives sont :
- USE base de donnes : permets de prciser sur quelle
base de donnes vont porter les instructions qui suivent.
Exemple : USE Master
- GO : SQL Server interprte l'instruction GO comme un signal
pour excuter les instructions TSQL qui prcdent. Une
commande GO termine un lot d'instructions TSQL. Certaines
instructions TSQL doivent sexcuter comme des lots, dans
ce cas, lutilisation de la commande GO est obligatoire.
Exemple : USE Northwind
SELECT * FROM Product
GO
- PRINT : est une instruction permettant de gnrer une ligne
en sortie de procdure.
Exemple : PRINT @@VERSION
- EXEC[UTE] : est utilise pour excuter une fonction ou une
procdure stocke.
Exemple : EXEC getdate()
IV) lments de syntaxe de TSQL
Le langage TSQL comporte des lments que lon retrouve dans la
plupart des langages volus :
- les types de donnes : ils dterminent la nature du contenu
des objets tels que les colonnes, les variables, les
paramtres, etc.
Numrique : Ce type de donnes reprsente des valeurs
entires ou dcimales.
Entier
Int 4o De -2^31 2^31-1
Tinyint 1o De 0 255
Smallint 2o De -32768 32767
Bigint 8o De -2^63 2^63-1
Dcimales
Decimal supporte 38 digits
Numeric idem Decimal
Monntaire
Money 8o 922337 Milliards
Smallmoney 4o 21747 Milliards
virgule flottante
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 7
Float 8o 1.74E308
Real 4o 3.49E38
Booleen
Bit 1o valeur binaire (0 ou 1)
Spcial
UniqueIdentifier 16o Dfinit une colonne comme
identificateur unique globale (GUID)
Dates : Ce type de donne reprsente une date ou une
dure.
DateTime 8o De 01/01/1753 31/12/9999
SmallDateTime 4o De 01/01/1900 06/06/2079
Caractres : Ce type de donnes est utilis pour reprsenter
les chanes de caractres de longueur fixe ou variable.
Char taille fixe nexcdant pas 8Ko
Varchar taille variable nexcdant pas 8Ko
Nchar unicode taille fixe nexcdant pas 4Ko
Nvarchar unicode taille var. nexcdant pas 4Ko
Text taille variable pouvant excder 8Ko
Ntext unicode taille var. pouvant excder 4K
Binaire : Ce type de donnes est trs proche du type de
donnes de caractres en termes de stockage et de
structure, mais le contenu des donnes est trait sous forme
d'une srie de valeurs binaires.
Binary taille fixe nexcdant pas 8Ko
VarBinary taille variable nexcdant pas 8Ko
Image taille variable pouvant excder 8Ko

- les identificateurs : ce sont les noms des objets tels que les
bases de donnes, les tables, les colonnes, etc.
o identificateurs standard
Les identificateurs standard peuvent contenir de 1 128
caractres, notamment des lettres, des symboles (_, @
ou #) et des nombres. La premire lettre doit tre
alphabtique et aucun espace n'est autoris dans le
nom. Ils ne doivent correspondre aucun mot-cl du
langage TSQL.
o identificateurs dlimits
Un identificateur qui ne respecte pas une ou plusieurs
des rgles de mise en forme des identificateurs standard
doit toujours tre dlimit. Les dlimiteurs sont [ ] et " ".
Exemple : SELECT * FROM "Liste des Etudiants"
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 8
DROP DATABASE [123ABC]
Le symbole @ commence le nom de toute variable locale
et @@ dsigne les variables globales. Le symbole #
commence le nom de toute table temporaire et ##
dsigne les tables temporaires globales.
SELECT *
FROM ##tb_tempo
- les oprateurs : permettent de crer des expressions
complexes partir dexpressions simples. Parmi les
oprateurs, nous avons :
o oprateurs arithmtiques : + , - , / , * , %
o oprateurs logiques : NOT , AND , OR , XOR
o oprateurs de comparaison : > , < , = , >= , <= , <>
- les variables : lments permettant de stocker une valeur en
vue de son utilisation future. Une variable locale est dfinie
par l'utilisateur par linstruction DECLARE, se voit affecter
une valeur initiale dans une instruction SET ou SELECT est
utilise dans l'instruction ou le lot.
USE Northwind
DECLARE @EmpID int,@Name char(20)
SET @EmpId = 101
SELECT @Name = 'Dupont'
- les commentaires : ce sont des parties de texte insres
dans un jeu dinstruction pour en expliquer le but. Les
commentaires ne sont pas excuts.
o Commentaire en ligne
SELECT productname, unitsinstock - unitsonorder
-- Calcule l'inventaire supplierID
FROM products
GO
o Commentaire en bloc
/* Ce programme extrait toutes les lignes de la
table products, et affiche le prix unitaire, le
prix unitaire augment de 10 % et le nom du
produit.*/
USE Northwind
SELECT unitprice, (unitprice * 1.1), productname
FROM Product
GO
- les scripts : cest un ensemble dinstructions TSQL
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 9
CHAPITRE 2 : UTILISATION DES OUTILS DE REQUTES

SQL Server 2000 fournit plusieurs outils de requte que vous
pouvez utiliser pour excuter des scripts Transact-SQL.
I) Prsentation de SQL Server
SQL Server 2000 ajoute de nombreuses fonctionnalits par rapport
ces versions antrieures (6.5 et 7.0), dont la prise en charge de
XML (eXtended Markup Language), Datawarehouse (Entrept de
donnes), OLAP et OLTP (traitement de donnes en ligne)
1. Composants client-serveur
Larchitecture de SQL Server est divise en :
- une partie serveur : gestion des bases de donnes,
rpartition des ressources entre les diffrentes demandes
des clients (effectue le traitement lourd) ;
- une partie cliente : affichage des rsultantes de requtes
(effectue le traitement lger (renvoi du traitement lourd)).
Les communications entre le serveur et le client peuvent seffectuer
sur diffrents protocoles rseaux dont TCP/IP, Canaux nomms,
IPX/SPX.
Les fonctionnalits de SQL Server reposent sur lexcution de
plusieurs services :
- MSSQLServer gre les requtes, les transactions et assure
lintgrit des donnes ;
- MSSQLServerAgent permet lexcution des tches
planifies.
2. Bases de donnes SQL Server
SQL Server hberge deux types de bases de donnes : les bases
de donnes systmes et les bases de donnes utilisateurs. Les
bases de donnes systme contiennent des informations
ncessaires au bon fonctionnement de SQL Server. Les bases de
donnes utilisateur sont les bases de donnes cres et utilises
par les utilisateurs.
Lors de linstallation de SQL Server, le programme dinstallation cre
plusieurs bases de donnes systme :
- master : contrle les bases de donnes utilisateurs et le
fonctionnement global de SQL Server en effectuant le suivi
dinformations telles que les comptes dutilisateur, les
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 10
variables denvironnement configurables et les messages
derreur du systme ;
- model : utilise pour la cration de nouvelles bases de
donnes utilisateur ;
- tempdb : offre une zone de stockage pour les tables
temporaires et les autres besoins de stockage temporaire ;
- msdb : offre une zone de stockage pour les informations de
programmation et lhistorique des travaux.
Selon les options choisies, le programme dinstallation peut crer les
bases de donnes utilisateurs suivantes :
- Pubs : propose un exemple de base de donnes comme
outil dapprentissage ;
- Northwind : propose un exemple de base de donnes
comme outil dapprentissage avec un grand nombre de
donnes.
3. ditions de SQL Server
Il existe plusieurs ditions de SQL Server 2000 :
- Entreprise : en environnement de production Client/Serveur,
cette version regroupe toutes les fonctionnalits avec la prise
en charge de sites Web, OLTP, le DataWarehousing, etc ;
- Entreprise dvaluation : Cette dition est identique la
prcdente mais nest utilisable que 120 jours. Elle est
tlchargeable gratuitement ;
- Standard : cette dition regroupe toutes les fonctionnalits
de ldition Entreprise, sauf pour ce qui est des sites Web,
OLTP et le DataWarehousing. Cette dition convient de
petites exploitations, avec des bases de donnes plus
lgres ;
- Dveloppeur : cette dition, identique ldition entreprise,
est rserve au dveloppement dapplications bases sur
SQL Server, aux tests et non lexploitation ;
- Windows CE : cette dition allge permet le stockage de
donnes sur des priphriques exploitant Windows CE. Il est
alors possible pour lutilisateur de synchroniser ses donnes
avec des ditions Entreprise et Standard dSQL Server ;
- MSDE (Microsoft Desktop Engine) : Cette dition est libre
de droits de redistribution (redistribuable gratuitement) et est
destine aux applications ayant besoin dexploiter et stocker
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 11
localement des bases de donnes. Cette dition possde
des restrictions majeures notamment sur la taille maximale
dune base de donnes (limite 2Go) et du nombre
dutilisateur connect simultanment (limit 5).
II) Les outils de SQL Server
1. Outils graphiques
SQL Server est fourni avec une suite doutils graphiques ddis aux
taches dadministration et dexploitation:
- Entreprise Manager : Outil principal dadministration de
SQL Server. Il permet daccder toutes les options et
toutes les fonctionnalits de SQL Server. Il se prsente sous
forme de composant enfichable MMC ;
- Analyseur de requtes : Outil dinterrogation graphique
utiliss pour analyser le plan dune requte, analyser les
informations statistiques et grer simultanment plusieurs
requtes dans diffrentes fentres ;
- Service Manager : Utilitaire graphique permettant de
dmarrer, arrter et suspendre des services SQL Server.


2. Outil en ligne de commande
- Osql : Utilitaire utilisant la connectivit ODBC pour
communiquer avec SQL Server (utilis principalement pour
excuter des fichiers de traitement par lots contenant une ou
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 12
plusieurs instructions SQL). Il remplace lutilitaire isql des
versions prcdentes de SQL Server.
III) Prsentation de lanalyseur de requte
L'analyseur de requtes sert afficher sous forme graphique les
instructions des requtes et leurs rsultats. Vous pouvez aussi
l'utiliser pour crire, modifier et enregistrer des scripts Transact-
SQL.
Lorsque vous lancez lanalyseur de requte, il demande les
informations de connexions :
- Serveur SQL Server : indique le nom ou ladresse rseau
du poste excutant SQL Server. Vous pouvez utiliser
(local) ou . pour dsigner le poste local.
- Lauthentification Windows qui utilise votre compte
douverture de session Windows.
- Lauthentification SQL Serveur qui utilise des comptes
propres SQL Server. Dans ce mode, un login et un mot de
passe sont requis. Par dfaut sa avec un mot de passe
vide.



Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 13
Lanalyseur de requte est compos de plusieurs fentres :
- Fentre Explorateur dObjet : permets de parcourir, dans
une arborescence, tous les objets de vos bases de donnes.
La touche F8 permet de lafficher ou de la masquer ;
- Fentre de requtes : diteur de texte pour la saisie de vos
codes TSQL. Il utilise un code de couleur pour faciliter la
lecture du code (Exemple: en bleu les mots cls TSQL, en
rouge les chanes de caractres, etc.). Lexcution du script
peut tre lance avec la touche F5 . Les rsultats et les
messages saffichent dans une fentre de texte ou dans une
grille. Le code saisi peut tre enregistr dans un fichier (avec
lextension .sql) pour tre ouvert ultrieurement.
NB : A lusage, on observe un dcalage entre ce qui est affich par
la fentre explorateur dobjet et les dernires instructions TSQL
excutes. Il faut alors actualiser la fentre explorateur dobjet.
IV) Prsentation de Osql
L'utilitaire de ligne de commande osql accepte les instructions TSQL
et les envoie SQL Server de manire interactive. Il correspond
lanalyseur de requtes pour la ligne de commande. Il communique
avec SQL Server via la bibliothque ODBC (Open DataBase
Connectivity). Les rsultats sont mis en forme et affichs l'cran.
Sa syntaxe est la suivante :
osql [-S serveur] [-E] [-U id_connexion]
[-P mot_passe] [-i fichier_entre]
[-o fichier_sortie] [-?]
NB : Les options de la commande osql respectent la casse.
Utilisez l'instruction GO pour excuter des instructions TSQL,
linstruction RESET pour supprimer toutes les instructions et
l'instruction QUIT ou EXIT pour quitter l'utilitaire.

Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 14
CHAPITRE 3 : CRATION DES OBJETS DE BASES DE
DONNEES

Avant de pouvoir stocker et manipuler des donnes, il est
indispensable de crer une base de donnes et des tables. Vous
pouvez ensuite crer dautres objets pour faciliter la manipulation
des donnes ou la gestion de la scurit.
I) Architecture dune base de donnes
1. Niveau logique
Une base de donnes stocke principalement un ensemble de
donnes. Les objets de base de donnes vous aident structurer
vos donnes et dfinir les mcanismes de scurit, damlioration
des performances et de contrle dintgrit des donnes.
Parmi ces objets de base de donnes, nous avons :
- Table : dfinit un ensemble de lignes ayant des colonnes
associes ;
- Contrainte : dfinit les rgles relatives aux valeurs
autorises dans les colonnes et constitue le mcanisme
standard pour garantir lintgrit des donnes ;
- Valeurs par dfaut : dfinit une valeur qui est stocke dans
une colonne si aucune autre valeur nest fournie au moment
de lajout ;
- Index : constitue une structure de stockage offrant un accs
rapide pour lextraction de donnes;
- Vue : permet de visualiser des donnes provenant dune ou
de plusieurs tables ou vues dune mme base de donnes ;
- Fonction dfinie par lutilisateur : renvoie soit une valeur
scalaire, soit une table. Les fonctions permettent
dencapsuler une logique excute frquemment. Tout code
qui doit excuter la logique incorpore dans une fonction
peut appeler cette fonction plutt que rpter toute la logique
de la fonction ;
- Procdure stocke : constitue un ensemble nomm
dinstructions Transact-SQL pr compiles devant tre
excutes ensemble ;
- Dclencheur : constitue une forme spciale de procdure
stocke excute automatiquement lorsquun utilisateur
modifie des donnes dune table ou dune vue.
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 15
2. Niveau physique
La cration dune base de donnes entrane la cration de 3 types
de fichiers :
- un fichier de donnes principal (.mdf) : contient la
dfinition des structures et les donnes ;
- zro ou plusieurs fichier de donnes secondaire
(.ndf) : contient des donnes uniquement ;
- un ou plusieurs fichier journal de transaction (.ldf) :
enregistre toutes les informations requises pour lannulation
dune transaction sur la base de donnes.
II) Gestion dune base de donnes
1. Cration dune base de donnes
Linstruction CREATE DATABASE permet de crer une nouvelle
base de donnes. Sa syntaxe est la suivante :
CREATE DATABASE nom_base
[ ON PRIMARY
( NAME = nom_logique ,
FILENAME = 'nom_fichier'
[ , SIZE = taille_initiale ]
[ , MAXSIZE = taille_maximale ]
[ , FILEGROWTH = pas_dincrementation ] )]
[ LOG ON
( NAME = nom_logique ,
FILENAME = 'nom_fichier'
[ , SIZE = taille_initiale ]
[ , MAXSIZE = taille_maximale ]
[ , FILEGROWTH = pas_dincrementation ] ) ]
Les arguments de cette instruction sont les suivants :
- ON PRIMARY : signifie dutiliser le groupe de fichier
PRIMARY . Cest le groupe de fichier par dfaut ;
- Name : dsigne le nom logique du fichier. Par dfaut, cest le
nom de la base de donnes suivi de _DATA pour le
fichier de donnes principal et _LOG pour le fichier
journal de transaction ;
- Filename : dsigne le chemin daccs au fichier. Par dfaut,
ce fichier est cre dans le sous-dossier Program
Files\Microsoft SQL Server\MSSQL\Data\ ;
- Size : indique la taille initiale du fichier en KB, MB ou GB. Par
dfaut, la taille est de 1MB pour le fichier de donnes
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 16
principal et de 512K pour le fichier journal de transaction.
Lunit par dfaut est le MB ;
- Maxsize : indique en KB, MB ou GB la taille maximale que le
fichier ne devra pas excder ;
- Filegrowth : indique le pas dincrmentation de la taille du
fichier. La valeur peut tre absolue ou en pourcentage (x %)
par rapport la taille actuelle du fichier.
Pour crer une nouvelle base de donnes, vous devez tre sur la
base de donnes Master. Exemple :
USE Master
CREATE DATABASE Ecole
GO
CREATE DATABASE Test
ON PRIMARY
( NAME = Test_Data,
FILENAME = 'c:\test.mdf',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 10 %)
LOG ON
( NAME = Test_log,
FILENAME = 'c:\test.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
2. Modification dune base de donnes
Linstruction ALTER DATABASE permet de modifier une base de
donnes. Sa syntaxe est plus complexe mais en voici un exemple.
USE Master
ALTER DATABASE Test
MODIFY NAME=Test2
GO
3. Suppression dune base de donnes
Linstruction DROP DATABASE permet de supprimer une base de
donnes. Sa syntaxe est la suivante :
DROP DATABASE nom_base [ , autre_base ]
Exemple :
USE Master
DROP DATABASE Ecole, Test2
GO
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 17
III) Gestion dune table
1. Cration dune table
Linstruction CREATE TABLE permet de crer une nouvelle table.
Sa syntaxe est la suivante :
CREATE TABLE nom_table
( nom_colonne type_donnee [contrainte] [,]
... )
Avant de crer une nouvelle table, vous devez tre sur votre base
de donne utilisateur.
Exemple :
USE Tempdb
CREATE TABLE ABC
( ColonneA Int,
ColonneB Char(50),
ColonneC DateTime)
GO
Dans une instruction CREATE TABLE, le mot-cl AS permet de
crer des colonnes calcules partir des valeurs dautres colonnes.
Exemple :
USE Tempdb
CREATE TABLE Note
( NoteID Int,
Note1 Real,
Note2 Real,
Moyenne as (Note1+Note2)/2,
EtudiantID Int)
GO
2. Modification dune table
Linstruction ALTER TABLE permet de modifier la structure dune
table. Sa syntaxe est la suivante :
ALTER TABLE table
{ ALTER COLUMN nom_colonne nouveau_type
| ADD { CONSTRAINT contrainte | colonne }
| DROP { CONSTRAINT contrainte | COLUMN column}}
Exemple :
USE Tempdb
ALTER TABLE ABC
ADD ColonneD decimal
GO
3. Suppression dune table
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 18
Linstruction DROP TABLE permet de supprimer une base de
donnes. Sa syntaxe est la suivante :
DROP TABLE nom_table
Exemple :
USE Tempdb
DROP TABLE ABC
GO
IV) Implmentation des contraintes dintgrits
Les contraintes dintgrit permettent dassurer des contrles sur les
donnes saisies dans la base de donnes. Il existe diffrentes
catgories dintgrit de donnes :
- Contraintes dentits : dfinit une ligne comme une entit
unique ;
- Contrainte de domaine : dfinit un intervalle ou une liste de
valeur possible pour une colonne ;
- Contrainte dintgrit rfrentielle : elle est fonde sur les
relations entre les cls trangres et les cls primaires. Elle
prserve les relations dfinies entre les tables lorsque des
valeurs, de cl trangre, sont entres et aussi lorsque des
valeurs, de cl primaire, sont modifies ou supprimes.
1. Contraintes dentits
La contrainte PRIMARY KEY permet de dfinir une ou plusieurs
colonnes comme la cl primaire dune table. Elle sutilise de la faon
suivante :
USE Tempdb
CREATE TABLE ABC
( ColonneA Int Primary Key,
ColonneB Varchar(30) )
GO
CREATE TABLE DEF
( ColonneD Int,
ColonneE Char(5),
ColonneF DateTime,
CONSTRAINT pkDEF Primary Key(ColonneD,ColonneE)
)
GO
La contrainte UNIQUE permet de garantir quaucune valeur en
double nest entre dans une colonne spcifique. Elle sutilise de la
faon suivante :
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 19
USE Tempdb
CREATE TABLE Facture
( FID Int Primary Key,
FCode Char(10) Unique,
FDate DateTime )
GO
La proprit IDENTITY permet dincrmenter automatiquement les
valeurs numriques dune colonne. Sa syntaxe est la suivante :
Identity [(valeur_initiale,pas_increment)]
Lorsque aucun paramtre nest prcis, la proprit IDENTITY
prend comme valeur initiale 1 et comme pas dincrmentation 1.
Exemple :
USE Tempdb
CREATE TABLE Classe
( CID Int Identity(10,1) Primary Key,
CNom Varchar(20) )
GO
Le type de donne UniqueIdentifier utilis avec la fonction NewId()
comme valeur par dfaut permet de crer un identifiant unique pour
la table (et aussi pour la base de donne).
NB : La proprit Identity et le type de donne UniqueIdentifier ne
peuvent tre utilises quune seule fois dans une table.
2. Contraintes dintgrit rfrentielles
La contrainte FOREIGN KEY appliqu une colonne, permet de
vrifier que la valeur doit exister dans la colonne rfrence. Dans le
cas contraire, le systme renvoie un message d'erreur signalant une
violation de cl trangre. Sa syntaxe est la suivante :
[FOREIGN KEY nom_colonne]
REFERENCES table_ref ( colonne_ref ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
Exemple :
USE TEMPDB
CREATE TABLE Pere
( PID Int Identity Primary Key,
PNom varchar(30) )
GO
CREATE TABLE Fils
( FID Int Identity Primary Key,
FPrenoms varchar(50),
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 20
PID Int References Pere(PID) ON DELETE
CASCADE)
GO
3. Contrainte de domaine
La contrainte CHECK permet de dfinir une condition que la valeur
doit respecter avant dtre enregistre. Elle sutilise de la faon
suivante :
USE TEMPDB
CREATE TABLE Visite
( VID Int Identity Primary Key,
VAge TinyInt Check(VAge<=120),
VJour Varchar(20) Check(VJour In
('Lundi','Mercredi','Vendredi')),
VPoid Real Check(VPoid between 5 and 500))
GO
La contrainte DEFAULT permet de dfinir une valeur par dfaut
pour une colonne. Cette valeur sera utilise lors de lajout dun
nouvel enregistrement, si aucune valeur nest prcise pour cette
colonne. Elle sutilise de la faon suivante :
USE TEMPDB
CREATE TABLE Caution
( CID Int Identity Primary Key,
CDate Datetime Default(getdate()),
CMontant Money Default(3000),
CNom Varchar(80) )
GO
La contrainte [NOT] NULL permet de dfinir la possibilit pour une
colonne daccepter une valeur NULL . Elle est utilise pour
rendre la saisie de donnes obligatoire pour une colonne.
NB : La valeur NULL signifie quaucune valeur na t saisie
dans une colonne. Elle ne doit pas tre confondue avec la
valeur zro ou la chane de caractre de longueur zro.
Cette contrainte sutilise de la faon suivante :
USE TEMPDB
CREATE TABLE Etudiant
( EID Int Identity Primary Key,
ENom varchar(30) Not Null,
EPrenoms Varchar(80) Null )
GO
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 21
CHAPITRE 4 : EXTRACTION DE DONNES

Lextraction ou slection de donnes se base sur une requte. Une
requte est une demande de donnes stockes dans SQL Server
2000.
I) Principes de base des requtes
Une requte peut tre mise de plusieurs manires :
- un utilisateur MS Query ou Access peut utiliser une interface
utilisateur graphique (GUI, graphical user interface) pour
extraire d'une ou plusieurs tables de SQL Server les
donnes qu'il veut utiliser ;
- un utilisateur de l'Analyseur de requtes ou de l'utilitaire osql
peut mettre une instruction SELECT ;
- une application Microsoft Visual Basic peut mapper les
donnes d'une table SQL Server un contrle associ, tel
qu'une grille.
L'instruction SELECT extrait les donnes de SQL Server et les
renvoie l'utilisateur dans un ou plusieurs jeux de rsultats. Un jeu
de rsultats est une prsentation, gnralement sous forme de
tablueau, des donnes extraites par l'instruction SELECT. De mme
qu'une table SQL, le jeu de rsultats se compose de colonnes et de
lignes. La syntaxe complte de l'instruction SELECT est complexe,
mais en voici les principales clauses :
SELECT colonne [, colonne2]
FROM table [,table2]
[WHERE Condition]
[ORDER BY colonne [ASC | DESC] [,]]
II) Utilisation de la clause SELECT
La clause SELECT dfinit la liste des colonnes du jeu de rsultat. La
liste est une srie de colonnes de tables ou dexpressions.
Exemple:
SELECT FactID, FactDate, FactMontantHT*1.18
FROM Facture
GO
Le mot-cl * permet de slectionner toutes les colonnes de la
table.
Exemple :
SELECT *
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 22
FROM Facture
Le mot-cl IDENTITYCOL permet de dsigner la colonne
soumise la proprit Identity.
Exemple :
SELECT Identitycol, FactDate
FROM Facture
Le mot-cl AS permet de dfinir un alias (nom plus parlant) pour
une colonne. Il peut tre remplac par un simple espace.
Exemple :
SELECT FactID AS "Numero Facture",
FactDate AS "Date de Facturation",
FactMontantHT "Montant Total HT",
FactMontantHT*1.18 "Montant Total TTC"
FROM Facture
III) Utilisation de la clause FROM
La clause FROM permet de spcifier les tables do sont extraites
les donnes. Elle est obligatoire dans toutes les instructions
SELECT sauf dans celles qui ne renvoient que des constantes.
Exemple :
SELECT Getdate()
GO
SELECT * FROM Article
IV) Utilisation de la clause WHERE
La clause WHERE permet de spcifier un critre de recherche que
les lignes devront respecter pour tre slectionnes.
Exemple :
SELECT *
FROM Facture
WHERE FactDate >= '1/1/04'
La condition de recherche est une combinaison dun ou plusieurs
oprateurs logiques. En plus des oprateurs de comparaison
standard, on peut aussi utiliser les suivants :
Expression [NOT] BETWEEN Valeur1 AND Valeur2
Expression IS [NOT] NULL
Expression [NOT] LIKE Chaine1
Loprateur LIKE permet deffectuer des comparaisons sur des
chanes de caractres sans respecter la casse et en utilisant les
caractres gnriques suivants :
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 23
- % : toutes chanes de 0 ou plusieurs caractre. Exemple:
LIKE %ordinateur%
- _ : 1 caractre. Exemple: LIKE _offi
- [] : un intervalle ou une liste de caractre. Exemple: LIKE
200[0-5] ou LIKE 200[012345]
- [^ ] :hors de lintervalle ou de la liste de caractre.
V) Utilisation de la clause ORDER BY
La clause ORDER BY spcifie lordre de tri affect aux colonnes
renvoyes dans une instruction SELECT. Largument ASC indique
un ordre de tri croissant. Cest lordre de tri par dfaut. Largument
DESC indique un ordre de tri dcroissant. La valeur NULL est
toujours considre comme la plus petite des valeurs.
Exemple :
SELECT EClasse, ENom, EDateNaissance
FROM Etudiant
ORDER BY EClasse ASC, EDateNaissance DESC
VI) Techniques avances daccs aux donnes
Le mot-cl DISTINCT permet dliminer les doublons dans le jeu de
rsultat dune instruction SELECT.
Exemple :
SELECT DISTINCT Type
FROM Titles
/* Affiche une liste de diffrent type de livres
sans doublons */
Le mot-cl TOP permet de limiter le nombre de lignes renvoyes
dans le jeu de rsultat dune instruction SELECT. Sa syntaxe est la
suivante :
SELECT TOP N [Percent]
N indique le nombre absolu de lignes renvoyes ou le pourcentage
si PERCENT est prcis.
Exemple :
SELECT TOP 10 *
FROM Titles
/* Affiche la liste des 10 premiers ouvrages de la
table Titles */

Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 24
CHAPITRE 5 : REGROUPEMENT ET SYNTHSE DE DONNES

Ce chapitre vous permet d'acqurir les comptences ncessaires
pour regrouper et synthtiser des donnes en utilisant des fonctions
d'agrgation.
I) Utilisation des fonctions dagrgation
Les fonctions dagrgation (SUM, AVG, MIN, MAX et COUNT)
gnrent des valeurs de synthse dans le jeu de rsultat.
1. Les fonctions Min et Max
Les fonctions Min et Max renvoient respectivement la valeur
minimale et la valeur maximale dune colonne ou dune expression.
La syntaxe est la suivante :
MIN/MAX ([ALL/DISTINCT] Expression)
Largument ALL indique que la fonction sapplique toutes les
valeurs. Cest largument par dfaut. Largument DISTINCT permet
de spcifier que seules les valeurs uniques sont traites par la
fonction.
NB : Dans le cas de MIN et MAX, largument DISTINCT na aucun
effet sur le rsultat de la fonction.
Exemple :
USE PUBS
SELECT MAX(PRICE)
FROM TITLES
2. Les fonctions SUM et AVG
Les fonctions SUM et AVG renvoient respectivement la somme et la
moyenne des valeurs dune colonne ou dune expression de type
numrique.
La syntaxe est la suivante :
SUM/AVG ([ALL/DISTINCT] Expression)
Largument ALL indique que la fonction sapplique toutes les
valeurs. Cest largument par dfaut. Largument DISTINCT permet
de spcifier que seules les valeurs uniques sont traites par la
fonction. Les fonctions SUM et AVG ne tiennent pas compte des
valeurs NULL .
Exemple:
SELECT SUM(NOTE)
FROM ETUDIANT
GO
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 25
SELECT AVG(NOTE)
FROM ETUDIANT
GO
3. La fonction COUNT
La fonction COUNT retourne le nombre dlments dune colonne
ou dune expression.
La syntaxe est la suivante :
COUNT ([ALL/DISTINCT] Expression)
Ou
COUNT (*)
Largument ALL indique que la fonction sapplique toutes les
valeurs lexclusion des valeurs NULL . Cest largument par
dfaut. Largument DISTINCT permet de spcifier que seules les
valeurs uniques sont traites par la fonction, lexclusion des
valeurs NULL . Largument * permet de spcifier que toutes les
valeurs sont prises en compte, y compris les valeurs NULL
Exemple :
USE PUBS
SELECT COUNT(*)
FROM TITLES
NB : Dans une instruction SELECT de base, lorsque vous utilisez
une fonction dagrgation dans une colonne, vous devez utiliser les
fonctions dagrgation pour toutes les colonnes ou alors procder
un regroupement avec GROUP BY.
Exemple :
USE PUBS
SELECT MIN(Price) Minimum,
MAX(Price) Maximum,
AVG(Price) Moyenne
FROM TITLES
II) Regroupement avec GROUP BY
La clause GROUP BY est utilise pour produire des valeurs
dagrgation regroupes selon une expression.
Syntaxe :
GROUP BY [ALL] Expression [,]
Exemple :
USE PUBS
SELECT Type, Min(Price), Max(Price)
FROM TITLES
GROUP BY Type
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 26
ORDER BY Type
GO
/*Cet exemple affiche la liste des type de livre
avec pour chaque type, le prix maximum, le prix
minimum et la moyenne de prix */
La clause ORDER BY permet dordonner le jeu de rsultat aprs le
regroupement des donnes.
La clause HAVING dfinit les critres de slections pour la clause
GROUP BY. Le critre HAVING sapplique aprs le regroupement
des donnes.
La clause WHERE peut tre utilise, mais elle spcifie des critres
de slections qui sappliquent avant le regroupement des donnes.
La syntaxe de HAVING est similaire celle de WHERE la seule
diffrence quelle peut contenir des fonctions dagrgations.
Exemple :
USE PUBS
SELECT Type, Min(Price), Max(Price)
FROM TITLES
GROUP BY Type
HAVING Max(Price)>1000
GO
Remarque : Si une colonne de regroupement contient une valeur
nulle, cette ligne devient aussi un groupe dans le jeu de rsultat. Si
vous utilisez largument ALL avec GROUP BY, le jeu de rsultats
contiendra tous les groupes produits y compris ceux qui ne satisfont
pas au critre de recherche spcifi dans la clause WHERE.
III) Synthse avec COMPUTE
La clause COMPUTE permet de gnrer une valeur de synthse
apparaissant aprs le jeu de rsultat de linstruction SELECT.
Syntaxe :
COMPUTE { {AVG | SUM | MIN | MAX | COUNT } |
Expression [,] } [BY Expression]
Exemple :
USE PUBS
SELECT Type, Price
FROM TITLES
ORDER BY Type
COMPUTE Min(Price), Max(Price) BY Type
NB : La clause ORDER BY devient obligatoire ds que vous utilise
COMPUTE BY.
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 27
CHAPITRE 6 : JOINTURE DES TABLES

Pour retourner des donnes provenant de deux ou plusieurs tables,
vous devez utiliser une jointure entre ces tables.
I) Gnralits
Une jointure se base sur les relations entre les tables pour
slectionner les enregistrements.
Il existe deux catgories de jointures :
- les jointures internes : elles retournent les enregistrements
uniquement quand les deux tables respectent les conditions
de la jointure ;
- les jointures externes : elles retournent tous les
enregistrements dau moins une des deux tables.
II) Les jointures internes
Elles sont spcifies dans la clause FROM. Dans une jointure
interne, les valeurs des colonnes jointes sont compares laide
dun oprateur de comparaison, qui est gnralement loprateur
dgalit = . Une jointure interne est introduite par le mot-cl
INNER JOIN. La syntaxe est la suivante :
FROM TABLEA [INNER] JOIN TABLEB
ON CONDITION
Exemple:
SELECT P.nom, F.prenoms
FROM PERE P JOIN FILS F
ON P.numpere=F.numpere
/*Affiche la liste des fils qui ont un pre en
prcisant le nom du pre*/
Lusage des alias est fortement recommand avec les jointures.
Cela permet de rduire le code et de le rendre plus lisible. Dans le
cas o les tables jointes possdent des noms de colonnes
identiques, cette recommandation devient une obligation.
RQ : Une jointure interne peut tre crite en utilisant la clause
WHERE. Ce type de code devra nanmoins tre proscrit cause de
lexcs de travail quil gnre pour sexcuter.
Exemple:
SELECT P.nom, F.prenoms
FROM PERE P,FILS F
WHERE P.numpere=F.numpere
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 28
/*Affiche les liste des fils qui ont un pre en
prcisant le nom du pre. Peu performant*/
III) Les jointures externes
Les jointures externes renvoient toutes les lignes dau moins une
des tables mentionnes dans la clause FROM et renvoient les lignes
de lautre table qui rpondent la condition mentionne par la
clause ON. La syntaxe est la suivante :
FROM TABLEA {LEFT|RIGHT|FULL} [OUTER] JOIN TABLEB
On distingue trois types de jointure externe :
- la jointure externe gauche : introduite par la clause LEFT
OUTER JOIN. Elle retourne tous les enregistrements qui
respectent la condition ainsi que tous les enregistrements de
la table gauche du FROM qui ne respectent pas la
condition ;
Exemple:
SELECT P.nom, F.prenoms
FROM PERE P LEFT JOIN FILS F
ON P.numpere=F.numpere
/*Affiche la liste de TOUS les pres et prcise le
prnom des fils lorsquils existent*/
- la jointure externe droite : introduite par la clause RIGHT
OUTER JOIN. Elle retourne tous les enregistrements qui
respectent la condition ainsi que tous les enregistrements de
la table droite du FROM qui ne respectent pas la
condition ;
- la jointure externe complte : introduite par la clause FULL
OUTER JOIN. Elle retourne tous les enregistrements qui
respectent la condition ainsi que tous les enregistrements
des deux tables qui ne respectent pas la condition.
Une jointure croise est un cas spcial de jointure qui permet
d'obtenir le produit cartsien des tables impliques dans la jointure.
Elle est introduite par la clause CROSS JOIN.

Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 29
CHAPITRE 7 : UTILISATION DES SOUS-REQUTES

Une sous-requte est une requte SELECT qui est imbrique
dans une autre requte. Elle peut tre utilise partout o lon peut
utiliser une expression.
Exemple:
SELECT nom+ +prenoms AS [Nom Complet]
FROM ClasseA
WHERE moyenne >= (SELECT AVG(moyenne)
FROM ClasseA)
ORDER BY moyenne DESC
/*Affiche par ordre dcroissant de moyenne, le nom
des tudiants qui ont eu une note suprieure ou
gale la moyenne de la classe*/
I) Les rgles des sous-requtes
Lutilisation dune sous-requte obit plusieurs rgles, dont les
principales sont les suivantes :
- une sous-requte prcde dun oprateur de comparaison
ne doit retourner quune seule valeur sauf si elle est
introduite par le mot-cl ANY, ALL ou EXISTS ;
- les clauses COMPUTE, INTO et DISTINCT ne peuvent pas
tre utilises dans une sous-requte ;
- ORDER BY ne peut tre utilis quavec le mot-cl TOP dans
une sous-requte ;
- les types de donnes ntext, text et image ne sont pas
autoriss dans la liste de slection dune sous-requte.
II) Les types de sous-requtes
En plus des oprateurs de comparaisons, les sous-requtes
peuvent tre introduites par divers mots-cls, dans la clause
WHERE.
1) le mot-cl IN
Le mot-cl IN permet de dterminer si une valeur donne appartient
lune liste de valeur. Sa syntaxe est la suivante :
WHERE Expression [NOT] IN (sous_requete)
Exemple:
SELECT nom
FROM Etudiant
WHERE numetudiant IN ( SELECT numetudiant
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 30
FROM Boursier)
/*Affiche la liste des tudiants boursiers*/
2) les mots-cls ANY et ALL
Le mot-cl ALL spcifie tous les lments retourns tandis que le
mot-cl ANY spcifie lun dentre eux. La syntaxe est la suivante :
WHERE Expression Op_de_comparaison {ANY | ALL}
(sous_requete)
Ainsi,
>ALL (1,2,3) est quivalent >3
>ANY (1,2,3) est quivalent >1
Exemple :
SELECT nom
FROM ClasseA
WHERE moyenne > ALL ( SELECT moyenne
FROM ClasseB)
/*Affiche la liste des tudiants de la classe A qui
ont une moyenne suprieure toutes celles des
tudiants de la classe B*/
RQ : le mot-cl SOME est quivalent au mot-cl ANY et existe pour
la compatibilit ascendante.
3) le mot-cl EXISTS
Le mot-cl EXISTS retourne une valeur boolenne qui est vraie
lorsque la sous-requte renvoie des lignes et fausse dans le cas
contraire. La syntaxe est la suivante :
WHERE Expression [NOT] EXISTS (sous_requete)
Exemple :
SELECT nom, EXISTS(SELECT *
FROM Stage S
WHERE S.NumEtudiant=E.NumEtudiant)
FROM Etudiant E
/*Affiche la liste des tudiants avec une colonne
supplmentaire indiquant si ltudiant dj
effectu un stage*/
III) Combinaisons de rsultats de requtes
La combinaison de rsultats de requtes consiste transformer
deux ou plusieurs jeux de rsultats en un seul jeu de rsultat. Les
jeux de rsultats combins doivent tous avoir la mme structure
(mme nombre de colonnes et mme type de donnes)
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 31
La combinaison se ralise laide du mot-cl UNION . Sa
syntaxe est la suivante :
{instruction_select_1}
UNION [ALL]
{instruction_select_2}
UNION [ALL]
.
.
.
ALL indique que toutes les lignes doivent tre combines, y compris
les doublons.
Exemple :
SELECT nom, fonction
FROM Employe
UNION ALL
SELECT nom, fonction
FROM Temporaire
UNION ALL
SELECT nom,Stagiaire
FROM Stagiaire
/*Affiche la liste de tout le personnel, y compris
les agents temporaires et les stagiaires. Les
stagiaires nayant de fonction prcise, la fonction
Stagiaire leur est affecte.*/

Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 32
CHAPITRE S : Modification des donnes

Une fonctionnalit importante de SQL Server est sa capacit
pouvoir modifier les donnes stockes. Le langage SQL propose
plusieurs instructions pour ajouter, modifier et supprimer les
donnes dans une base de donnes.
I) Ajout de donnes
Linstruction INSERT permet dajouter une ou plusieurs lignes
dans une table. Sa syntaxe est la suivante :
INSERT [INTO] nom_table [(liste_colonne)]
{VALUES ({default | expression}) | expression }
Exemple:
INSERT Etudiant (nom, prenoms)
VALUES (KOKO,Charles)
/*Ajoute une ligne la table Etudiant avec le nom
KOKO et le prnom Charles*/
INSERT Etudiant (nom, prenoms)
SELECT nom, prenoms
FROM Bachelier
WHERE Moyenne >= 12
/* Ajoute la table Etudiant, le nom et le prnom
des bacheliers dont la moyenne est suprieure ou
gale 12 */
Dans la liste des colonnes, une colonne peut ne pas tre prcises
si lune des conditions suivantes est respecte :
- elle est incrmente automatiquement
- elle possde une valeur par dfaut
- elle autorise les valeurs Null
Exemple :
CREATE TABLE Voiture (
Numero int identity primary key,
Immatriculation char(8) unique,
DateArrivee datetime default(01/01/2004))
GO
/*Cre une table nomme voiture*/
INSERT Voiture
VALUES(3000AA01,30/01/2004)
/*Ajoute une ligne la table voiture. On ne
prcise pas de valeur pour la colonne soumise la
proprit Identity*/
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 33
GO
INSERT Voiture(Immatriculation)
VALUES (3001AA01)
/*Ajoute une ligne la table voiture en utilisant
la valeur par dfaut dfinit pour la colonne
DateArrivee*/
II) Modification de donnes
Linstruction UPDATE permet de changer les valeurs dune ou
plusieurs lignes dans une table. Sa syntaxe est la suivante :
UPDATE nom_table
SET {nom_colonne={expression | default}[,]}
[FROM table_source]
[WHERE condition]

Exemple :
UPDATE Etudiant
SET nom=UCASE(nom),moyenne=moyenne+1
WHERE classe=DSSGL
/*Change le nom en majuscule et ajoute 1 la
moyenne de tous les tudiants de la classe DSSGL*/
III) Suppression de donnes
Linstruction DELETE permet de supprimer une ou plusieurs
lignes dans une table. Sa syntaxe est la suivante :
DELETE nom_table
[FROM table_source]
[WHERE condition]
Exemple :
DELETE Etudiant
WHERE Moyenne Is Null
/*Supprime tous les tudiants qui nont pas de
moyenne*/
RQ : Pour supprimer tous les enregistrements dune table dans SQL
Server 2000, linstruction TRUNCATE nom_table peut tre plus
efficace que DELETE nom_table car cette dernire utilise des
mcanismes pour sauvegarder les donnes avant de les supprimer.
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 34
CHAPITRE 9 : Prsentation des objets de programmation

Les objets de programmation vont permettre d'afficher et de
manipuler des donnes tout en masquant la complexit de la
structure de la base de donnes.
I) Prsentation des vues
Une vue peut tre considre comme une requte enregistre. Ainsi
vous pouvez rutiliser une instruction sans avoir la redfinir.
1. Avantage des vues
Une vue vous permet d'effectuer les tches suivantes :
- limiter l'accs d'un utilisateur certaines lignes d'une table ;
- limiter l'accs d'un utilisateur certaines colonnes d'une
table ;
- joindre les colonnes de diffrentes tables.
2. Gestion des vues
Linstruction CREATE VIEW permet de crer une vue. Sa syntaxe
est la suivante :
CREATE VIEW Nom_vue [(NomColonne[, n.])]
--instruction SELECT
Exemple :
CREATE VIEW TitleView
AS
SELECT title, author
FROM titles
GO
Lorsque vous crez des vues, tenez compte des restrictions
numres ci-dessous :
- l'instruction CREATE VIEW ne peut pas inclure les clauses
COMPUTE ou COMPUTE BY ;
- l'instruction CREATE VIEW ne peut pas inclure la clause
ORDER BY, sauf si elle est utilise avec une clause TOP
dans l'instruction SELECT.
Une vue peut tre utilise partout o on peut une table.
Exemple :
SELECT * FROM TitleView
GO
INSERT TitleView VALUES ('Le Berger','Bernard')
GO
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 35
Linstruction ALTER VIEW permet de modifier une vue.
ALTER VIEW TitleView
AS
SELECT TOP 100 PERCENT title, author
FROM titles
ORDER BY title
GO
Linstruction DROP VIEW permet de supprimer une vue.
Exemple :
DROP VIEW TitleView
GO
II) Prsentation des procdures stockes
Une procdure stocke est un ensemble nomm d'instructions
Transact-SQL, prcompile et stocke sur le serveur. Les
procdures stockes constituent une mthode privilgi pour
encapsuler les tches rptitives afin de les excuter efficacement.
Elles prennent en charge les variables dclares par l'utilisateur, le
contrle de flux et d'autres fonctionnalits de programmation
avances.
1. Avantage des procdures stockes
Les procdures stockes offrent de nombreux avantages :
- performance : chaque fois quune requte Transact-SQL est
excute, le serveur dtermine si la syntaxe est correcte puis
construit un plan dexcution avant dexcuter la requte.
Les procdures stockes sont plus performantes parce que
le serveur vrifie la syntaxe la cration. La premire fois
que la procdure stocke est excute, le serveur cr le
plan dexcution et compile la procdure. Les excutions
ultrieures de cette procdure stocke seront plus rapides
parce que le serveur ne fera pas de nouvelles vrifications
sur la syntaxe et la construction du plan dexcution ;
- rutilisabilit : Une fois que la procdure stocke est cre,
vous pouvez lappeler nimporte quel moment. Ceci permet
une modularit et encourage la rutilisation de votre code ;
- La simplification : Elles peuvent partager une logique
d'application avec d'autres applications, contribuant ainsi
garantir la cohrence des accs aux donnes et de leurs
modifications. Elles peuvent encapsuler une fonctionnalit
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 36
d'entreprise. Les rgles et politiques de fonctionnement
encapsules dans les procdures stockes peuvent tre
modifies au mme endroit. Tous les clients peuvent utiliser
les mmes procdures stockes afin de garantir la
cohrence des accs aux donnes et de leurs modifications ;
- Accs Rseau : elles contribuent la rduction du trafic sur
le rseau. Au lieu d'envoyer des centaines d'instructions
Transact-SQL sur le rseau, les utilisateurs peuvent
effectuer une opration complexe l'aide d'une seule
instruction, rduisant ainsi le nombre de demandes
changes entre le client et le serveur.
2. Gestion des procdures stockes
Linstruction CREATE PROCEDURE permet de crer une procdure
stocke. Sa syntaxe est la suivante :
CREATE PROC[EDURE] nom_procedure
[@Paramtre type_donnes [=default] [ OUTPUT ]][,]}
AS
[BEGIN]
--instruction
--instruction
--
[END]
Exemple :
CREATE PROC psmoyenne_etudiant
@Etudiantnum int,
@Moyetudiant real OUTPUT
AS
BEGIN
SELECT @Moyetudiant = AVG(Evaluation)
FROM Note
WHERE Etudiantnum = @Etudiantnum
END
Linstruction EXECUTE permet dexcuter une procdure. Sa
syntaxe est la suivante :
[[EXEC[UTE]][@return_status=] nom_procedure
[[@parameter=] {value|@variable[OUTPUT]|[DEFAULT]]
Exemple :
DECLARE @Moyenne real
EXEC ps_moyenne_etudiant
@Etudiantnum=10,
@Moyetudiant = @Moyenne OUTPUT
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 37
PRINT @Moyenne
GO
III) Prsentation des fonctions
Une fonction est semblable une procdure stocke la diffrence
quelle retourne toujours une valeur. Sa syntaxe est la suivante :
CREATE FUNC[TION] nom_fonction (
[ @paramtre type_donnes [ = valeur_dfaut] [,] )
RETURNS type_donnes_sortie
[AS]
BEGIN
--corps_fonction
RETURN expression
END
Exemple :
CREATE FUNCTION fnmoyenne (@Etudiantnum int)
RETURNS real
AS
BEGIN
DELCARE @Moyetudiant
SELECT @Moyetudiant = AVG(Evaluation)
FROM Note
WHERE Etudiantnum = @Etudiantnum
RETURN @Moyetudiant
END
Une fonction sutilise comme une procdure stocke, mais aussi
comme une table.
Exemple :
SELECT * From dbo.fnmoyenne (10)
GO
Les instructions ALTER FUNCTION et DROP FUNCTION
permettent respectivement de modifier et de supprimer une fonction.
IV) Prsentation des dclencheurs
Les dclencheurs ou triggers servent tendre les mcanismes de
gestion de l'intgrit des contraintes trs complexes et permettre
le contrle de saisie. Il s'agit de code dclench lors de certains
vnements de la base de donnes. Un dclencheur est toujours
rattach une table ou une vue.
La syntaxe de cration dun dclencheur est la suivante :
CREATE TRIGGER nom_trigger
ON table_ou_vue
Pigier : Requtes Transact-SQL dans Microsoft SQL Server 2000

Page 38
{FOR | AFTER}|INSTEAD OF
[INSERT][,][UPDATE][,][DELETE]
AS
[BEGIN)
--corps trigger
[END]
Un trigger peut tre cr pour se dclencher l'insertion de
donnes (INSERT), la suppression de donnes (DELETE) ou la
mise jour (UPDATE). Il peut galement tre dclench aprs
l'excution de la requte (AFTER et FOR pour la compatibilit
ascendante), ou la place de l'excution de la requte (INSTEAD
OF).
Les pseudo tables INSERTED et DELETED contiennent les
donnes respectives de l'insertion ou la mise jour (INSERTED) ou
bien de la suppression (DELETED). On peut les utiliser dans des
requtes comme des tables ordinaires. La structure de ces tables
est calque sur la structure de la table ou vue sur laquelle repose le
trigger.
CREATE TRIGGER NomEnMajuscule
ON TableEtudiant
FOR INSERT, UPDATE
AS
UPDATE INSERTED
SET NOM=UPPER(NOM)

You might also like