mars
2012
Les instructions DML (select, insert, update,delete)sont constituées de divers éléments de la syntaxe Transact-SQL, nous allons les détaillés.
Directives de lot
Une directive de lot indique à SQL server d’analyser et d’exécuter toutes les instructions qu’elle contient. Il existe 2 méthodes de base pour transmettre des lots à sql server :
GO
Sql interprète l’instruction GO comme signal pour envoyer les instructions transact sql actuelles à SQL server. Une commande GO délimite des lots d’instruction transact sql. La commande GO n’est pas une véritable instruction transact SQL.
Quand vous utilisez GO tenez compte de ce qui suit.
- Le lot d’instruction en cours est formé de toutes les instructions entrées depuis la dernière commande GO ou depuis le début de la session
- Une instruction transact ne peut pas figurer sur la même ligne qu’une instruction GO bien que la ligne puisse contenir des commentaires.
- La portée des variables locales est limitée à un lot. De ce fait une référence à une telle variable ne peut être faite après une commande GO.
EXEC
Cette instruction est utilisée pour éxécuter une fonction définie par l’utilisateur, une procédure stockée et peut contrôler l’exécution d’une chaine de caractère dans un lot transact. Les paramètres peuvent être transmis sous forme d’arguments et un état de retour peut être attribué
Commentaires
Les commentaires sont des chaines de textes non exécutables.
Pour une ligne on la fait précéder de 2 traits d’union exemple – commentaires.
Pour plusieurs lignes on encadre le texte de /* et */ exemple : /* commentaires */.
Identificateurs
SQL server fournit une série de règles de dénomination standard pour les identificateurs d’objet :
Les Identificateur Standard peuvent contenir de 1 à 128 caractères, notamment des lettres et des symboles ( _ ,@ ou #). Et des nombres. Aucun espace n’est autorisé dans le nom des identificateurs standards. Les règles d’utilisation des identificateurs sont décrites ci-dessous.
- Le premier caractère doit être une lettre comprise entre a et z ou A et Z.
- Les identificateurs commençant par un symbole ont un usage spécial.
o Un identificateur commençant par le symbole @ représente une variable locale ou un paramètre.
o Un identificateur commença nt par un # représente une table ou une procédure temporaire.
o Un identificateur commençant par un ## représente un objet temporaire global.
Les noms d’objets temporaires locaux ne doivent pas dépasser 116 caractères y compris le #.
Les identificateurs délimités permettent d’appeler des identificateurs qui ne respectent pas les règles précédemment définies.
Exemple : select * from [ 1 toto table]
Variables
Les variables sont des éléments du langage auxquels sont affectés des valeurs. Une variable locale est définie par l’utilisateur dans une instruction DECLARE, se voit affecter une valeur initiale dans une instruction SET ou SELECT, puis est utilisée dans une instruction, le lot ou la procédure dans laquelle elle a été déclarée. Le nom d’une variable locale est précédée du caractère @, tandis que le nom d’une variable globale est précédé de @@.
Exemple :
Declare @mavariable varchar (100)
set @mavariable= ‘AKE coucou’
print @mavariable
select * from matable where moncommentraire=@mavariable
Fonctions système
Vous pouvez utiliser les expressions systèmes chaque fois qu’une expression est autorisée dans une instruction SELECT. Transact est doté de nombreuses fonctions qui renvoient des résultats, elles sont notées en rose dans l’éditeur de requête.
Exemple :
Select AVG (prixunitaire) as avgprice from products
GO
select ‘ANSI : ‘, convert(varchar(30),GetDATE(),102)
union
select ‘Européen : ‘, convert(varchar(30),GetDATE(),113)
GO
select user_name(), app_name()
Opérateurs
Les opérateurs sont des symboles qui effectuent des calculs mathématiques, des concaténations de chaînes et des comparaisons. Ils peuvent être combinés et utilisés dans des conditions de recherche.
- Les opérateurs arithmétiques effectuent des calculs sur des colonnes numériques ou sur des constantes. On multiplication(*), division (/), et modulo (%)(le reste de la division d’entiers) et les opérateurs additifs (addition (+) et soustraction (-).
- Les opérateurs de comparaison comparent 2 expressions. Des comparaisons peuvent être effectuées entre des variables, colonne et expressions de même type.
On a égal (=), supérieur(>), inférieur(<) , supérieur ou égal (>=), inférieur ou égal(<=) , différent (<>).
- Les operateurs de concaténation de chaine(+) concatène des valeurs de chaîne. La chaîne vide n’est jamais évaluée comme une valeur NULL.
- Les opérateurs Logiques And, OR, et NOT relient des conditions de recherche dans des clauses WHERE
- Le niveau de priorité est le suivant : groupement () ->multiplicatif */% ->additif +- ->concaténation de chaîne + ->NOT -> AND -> OR. SQL SERVER traite en premier l’expression ayant le niveau d’imbrication le plus élevé. En outre, si tous les opérateurs arithmétiques d’une expression partagent le même niveau de priorité, l’ordre va de droite à gauche.
Expressions
L’exemple suivant calcule la quantité de produits dans une commande en multipliant le prix unitaire par la quantité commandée, puis filtre le résultat pour ne retourner que les lignes qui ont une valeur supérieure à 10 000
Select orderId, ProductId, (Unitprice * Quantity) as montant from [order details] where (unitprice * quantity) > 10000
Eléments de langage de contrôle de flux
Transact prend en charge plusieurs éléments de langage qui contrôlent le flux de la logique dans les instructions. Il contient aussi l’instruction CASE qui vous permet d’utiliser une logique conditionnelle sur une seule ligne à la fois dans une instruction SELECT ou UPDATE.
Niveau Instruction :
Les éléments de langage suivants vous permettent de contrôler le flux de la logique d’un script :
Blocs Begin… end -> ces éléments délimitent une série d’instructions Transact pour les traiter sous forme d’une unité.
Blocs If…Else ->Ces éléments indiquent que SQL server doit exécuter la première alternative si une certaine condition est vraie. Dans le cas contraire, SQl server doit exécuter la deuxième alternative.
Construction WHILE -> Ces éléments exécutent une instruction de façon répétée tant que la condition spécifiée est vraie. Les instructions BREAK et CONTINUE contrôlent le fonctionnement des instructions dans une boucle WHILE.
Exemple :
if EXISTS (select * from matable where monid=10)
begin
print ‘il y a des lignes’
End
else
begin
print ‘pas de ligne’
end
Niveau ligne
Une expression CASE répertorie les prédicats, affecte une valeur à chacun d’eux, puis les teste. Si l’expression renvoie une valeur vraie, l’expression CASE la renvoie dans la clause WHEN. Si l’expression renvoie une valeur fausse et que vous avez spécifié une clause ELSE, SQL renvoie la valeur dans cette clause.
declare @n tinyint
set @n=5
if (@n between 4 and 6)
Begin
While (@n>0)
begin
select @n as ‘nombre’,
case
when (@n%2)=1
then ‘Impair’
else ‘PAIR’
end as ‘Type’
set @n=@n - 1
end
end
else
print ‘analyse impossible’
Mots clés réservés
SQL server réserve un certain nombre de mot clé à son usage personnel si néanmoins vous devez utiliser certain de ces mot pour un usage qui n’est pas celui définit il suffit de les délimiter par des crochets [].
Articles récents
- [SharePoint 2010]Faire un workflow approbation sous SharePoint foundation 2010
- [SQL Server]Saga transact-SQL Episode 6 : Les sous requêtes
- [SQL Server]Saga transact-SQL Episode 5 : Les jointures de tables
- [SQL Server]Saga transact-SQL Episode 4 : Grouper et organiser les données
- [SQL Server]Saga transact-SQL Episode 3 : Retrouver les données avec un SELECT