Magazine High tech

Introduction à la programmation SQL ; T-SQL

Publié le 29 juillet 2008 par Dave Lizotte

En 2008, de nos jours, il est rare de rencontrer des informaticiens qui n'ont pas entendu parler de SQL. Mais pour d'autres, il serait bien de faire attention à ne pas vous méprendres car certain d'entre vous croient à tord et à travers savoir ce qu'est SQL sous prétexte qu'un écervelé au gouvernement du Québec a décidé de nommer son logiciel interne ; SQL. Bref, à vous cher fonctionnaire, non vous ne savez pas utiliser SQL et encore moins ce qu'est SQL. Bref, fin de la parenthèse.
Dans les faits, SQL est un des gestionnaires de bases de données les plus utilisés au monde. Mais saviez-vous que SQL n'était pas qu'un simple gestionnaire de bases de données ?

En effet, SQL permet plus qu'une simple gestion de données. SQL permet en autre de générer des rapports, il peut aussi servir de relais pour vos courriers mais ce qui nous importes le plus aujourd'hui est la programmation SQL, ou plus précisément T-SQL (Transact SQL). Bref, comme n'importe quel langage, il vous sera possible de faire pratiquement tout ce que vous désirez grâce à T-SQL.

Pourquoi un langage de développement au sein d'une base de données ?

Avec le temps, SQL à vite montrer certaine limite. C'est alors que Microsoft à décidé d'intégré un langage au coeur de son gestionaire de bases de données afin de palier à ces lacunes. Le T-SQL permet ainsi d'écrire des programmes complet, capable de gérer des variables de boucles et autres structures de contrôle. De plus, il permet l'interaction avec les fonctions complexes du système permettant d'écrire de puissants scripts de maintenances et d'administration.

Introduction à T-SQL

Les conventions de nomenclatures :

  • Les variables : Débutent toutes par le caractère @, ex : @mavariable
  • Les variables systèmes : Débutent par une double @, ex : @@identity
  • Les curseurs : Ne sont pas précédés d'un @
  • Les procédures stockées : Débutent par sp_
  • Les procédures étendues : Débutent par xp
  • Les indexes : Débutent par IX_
  • Les clés primaires : Débutent par PK
  • Les clés étrangères : Débutent par FK
  • La mise en commentaire d'une ligne se fait à l'aide de --
  • La mise en commentaire d'un paragraphe se fait à l'aide de /* */

Les types d'objets :

  • Numeric : Type générique pour les nombres.
  • NVarChar : Stocke les chaînes de texte de taille variable, avec en plus les codes du jeu de caractère local, on peut par exemple stocker des caractères japonais.
  • VarChar : Similaire au Nvarchar, mais n'implémente pas les jeux de caractère locaux, il occupe donc moins d'espace.
  • NText : Stocke les chaînes de texte unicode de grange taille.
  • DateTime : Stocke les date, attention il faut les présenter sous le format AAAA-MM-JJ pour êtres sur que la date sera bien interprétée lors d'une insertion. Plusieurs fonctions permettent de modifier le format de la date pour l'affichage.
  • Image : Stocke des objets binaires de grande taille tel que des fichiers.
  • Real : Type générique pour les nombres réels.
  • Bit : Champ booléen / Logique (Vrai/Faux).
  • Sql_variant : Type un peu spécial est un fourre-tout. On peut stocker n'importe quel type dedans. Mais attention pour récupérer la valeur que l'on a stockée dedans il faudra impérativement la convertir au format souhaité. À utiliser avec modération!

Déclaration d'une variable :

Declare @MaVariable NVarChar(50)

Les opérateurs disponibles :

  • Addition : +
  • Soustraction : -
  • Multiplication : *
  • Division : /
  • Modulo : %
  • Comparaison : >=, !>, <=, !< , = ; !=
  • ET logique : &
  • OU logique : |
  • XOR : ^
  • Concaténation : +

Création d'une procédure stocker SP_, syntaxe de base :

CREATE PROCEDURE [base].[utilisateur].nom
 @parametre1 type,
 @parametre2 type
AS
BEGIN
 Code de la procédure
END

Affectation de variable :

Il existe 2 manières d'affecter une valeur à une variable :

Avec SET :

SET @maVariable = @Resultat

Avec un select :

Select @maVariable = maColonne FROM maTable WHERE maColonne = 'PcKULT.NET'

** Cette dernière ne fonctionne que dans le cas ou le resultat de la requête ne renvoie qu'un seul résultat.

Boucles et structures de contrôle :

If…Else

IF condition
BEGIN
 {code}
END
ELSE
BEGIN
 {code}
END

CASE 

CASE
 WHEN condition THEN code
 WHEN condition2 THEN autre code
END

Boucle While

WHILE condition
 Bloc de code
 

Les curseurs :

Les curseurs représentent une fonctionnalité très importante en T-SQL. Ce dernier permet le traitement des jeux d'enregistrement multi ligne. Nous allons donc voir comment créer un curseur simple et l'utiliser.

Déclarer un curseur :

DECLARE usager_Cursor CURSOR FOR
 SELECT Prénom, Nom FROM MaBD.dbo.Usager WHERE Username like 'P%'

On déclare le curseur en lui spécifiant la requête à exécuter. Il faut ensuite l'ouvrir.

OPEN usager_Cursor

On peut maintenant parcourir les enregistrements du curseur.

FETCH NEXT FROM usager_Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
   FETCH NEXT FROM usager_Cursor
END

Le premier FETCH NEXT permet de se placer sur le premier enregistrement contenu dans le curseur, la variable système @@FETCH_STATUS nous donne ensuite l'état du curseur. Tant que celui-ci n'est pas à zéro, nous n'avons pas atteint le dernier enregistrement et nous pouvons continuer à parcourir le curseur. Il est bien entendu possible de mettre le résultat dans des variables au moyen de FETCH NEXT. Une fois le travail terminé il faut fermer et détruire le curseur afin de libérer l'espace occupé par ce dernier.

CLOSE usager_Cursor
DEALLOCATE usager_Cursor

Les curseurs sont bien utile, mais il utilise une grand quantité de ressource mémoire et CPU, donc utiliser les avec modérations.



Ajouter cette page à votre Digg-Like préféré
Reddit!
Del.icio.us!
JoomlaVote!
Google!
Live!
Facebook!
Technorati!
StumbleUpon!
Spurl!
Furl!
Blogmarks!
Yahoo!
FeedMeLinks!
&<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><&><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>&<><>&<><><><><><><><><><><><><><><><><>&<><><><><><><><><><><>
busy

Retour à La Une de Logo Paperblog

A propos de l’auteur


Dave Lizotte 57 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte