Blog de Laurent Valente

Responsable technique Microsoft , Akka technologies

Laurent Valente

moi

Consulatnt technique, Expert Microsoft chez AKKA Technologie.

J'accompagne les équipes sur les différents projets Microsoft.

Ma carte de visite Microsoft

Mon CV

Mon transcript

[Sql Server] Saga transact-SQL Episode 2 : Les éléments de syntaxe Transact SQL

 

Les instructions DML 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 [].

Posted: Jan 08 2009, 17:17 by laurentv | Comments (17) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Privé | SQL Server

Comments

whack your boss said:

Superb post. Bookmarked it already. take care, Samantha.

# December 01 2009, 17:09

ray ban sale said:

After reading the article, I feel that I need more information on the topic. Can you suggest some resources please?, Excellent post!

# August 05 2010, 10:23

nike sb said:

Really trustworthy blog. Please keep updating with great posts like this one. I have booked marked your site and am about to email it to a few friends of mine that I know would enjoy reading..

# August 20 2010, 10:21

vibram five fingers said:

I am the first time on this site and am really enthusiastic about and so many good articles. I think it’s just very good.
Always yours

# August 20 2010, 10:22

sennheiser headphones said:

Hey, now this is a cool one. Infact, there used to be more footprints like this one. Still you can find some. Hint- Install other dofollow plugins to get those phrases” There was one something like ” comments may be nofollow free” I had that on my blog. Thanks and continue giving out secret tips like this one.

# August 27 2010, 04:13

Jordan True Flight said:

Jordan series shoes everybody have no don't smell, everyone was our dream, a pair. Crazy continues, special continues, we sincerely invite you to visit our shopping heaven, I hope we have a good start from here. Finally I wish you good mood every day.

# September 10 2010, 04:05

creative recreation said:

The clearness in your publish is simply spectacular and i can take for granted you are an professional on this discipline. Youve received a style here thats not too flashy, but helps make a statement as major as what youre declaring. Wonderful career, in fact.

# September 16 2010, 10:44

supra shoes said:

I come across a blog that's both informative and entertaining, and let me tell you, you've hit the nail on the head. Your blog is important; the issue is something that not enough people are talking intelligently about.

# January 06 2011, 04:29

Bill B said:

Valuable info. Exactly what I was looking for. i'll check back soon again.

# June 12 2011, 02:56

Cute Love Quotes said:

A powerful share, I just given this onto a colleague who was doing slightly analysis on this. And he the truth is bought me breakfast because I discovered it for him.. smile. So let me reword that: Thnx for the treat! But yeah Thnkx for spending the time to discuss this, I feel strongly about it and love reading extra on this topic. If attainable, as you become expertise, would you thoughts updating your weblog with more particulars? It's highly useful for me. Large thumb up for this blog post!

# July 31 2011, 16:45

cheap essay writing said:

Many guys opt for the proofreading service. They do right, just because it aids them very much!

# August 07 2011, 09:16

mutuelle said:

Very good data, I’m always mastering something new, and invest a lot of time reading through articles lately.

# November 29 2011, 23:20

complementaire sante said:

Very nice article. Thanks for sharing.

# December 01 2011, 17:33

social bookmarking services said:

You should understand that we created our social bookmarking service to reduce your efforts of optimization!

# December 14 2011, 11:54

dissertation said:

I do know that this is more effortless to purchase the dissertation thesis and dissertation about this good post, than to do by own efforts.

# December 16 2011, 23:28

opticien pour enfants said:

Merci beaucoup pour ce post. Est-il possible de télécharger votre article en pdf. Je ne m'y connais pas trop dans ce domaine, moi c'est plutôt les opticiens , mais je trouve que c'est un très bon blog !.
Léa.

<a href="optique.evioo.com/opticien-en-ligne.html"> opticien pour enfants

# December 27 2011, 10:52

northface said:

<p><a href="...rthfacehonsale.org"><strong>north" rel="nofollow">...rthfacehonsale.org"><strong>north face shop</strong></a> the application of good, <a href="...rthfacehonsale.org"><strong>north" rel="nofollow">...rthfacehonsale.org"><strong>north face outlet</strong></a> diction properly make people who read up very  comfortable,<strong> <a href="http://www.northfacehonsale.org/womens-north-face-apex-bionic-c-77.html">the" rel="nofollow">www.northfacehonsale.org/...c-77.html">the  north face apex</a></strong> plus beautiful  sentences,<strong> <a href="http://www.northfacehonsale.org/womens-north-face-down-c-79.html">northface" rel="nofollow">www.northfacehonsale.org/womens-north-face-down-c-79.html">northface  down</a></strong> can reflect the value of  more articles <strong><a href="http://www.northfacehonsale.org/mens-north-face-down-c-71.html">down" rel="nofollow">www.northfacehonsale.org/...-71.html">down  jacket</a></strong>.<strong> </strong></p>
http://www.northfacehonsale.org/

# December 28 2011, 02:44

Add comment




biuquote
  • Comment
  • Preview
Loading

captcha

*