Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 00:54

Ordre des clauses

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY

 

1-      EXTRAIRE

A – une colonne

SELECT [Nom]

FROM [Amis];

 

b- Plusieurs colonnes (les colonnes apparaissent dans le même ordre que dans la requête)

SELECT [ID],[Prenom],[Nom]

FROM [Amis];

 

c – toutes les colonnes

SELECT *

FROM [Amis];

 

Astuces :

-    il est préférable d’énumérer toutes les colonnes plutôt que d’utiliser *

-    Pour un accès plus précis aux tables [NomBase].[NomTable] et pour les colonnes [NomTable].[NomColonne]

-    Le SQL  est insensible à la casse(SELECT ou select c’est idem) par contre il n’en est pas de même pour les noms des tables,colonnes,…

2-  TRIER

A-  Sur une colonne

SELECT *

FROM [Amis]

ORDER BY [Nom]

 

B-  Sur plusieurs colonnes

SELECT *

FROM [Amis]

ORDER BY [Nom],[Prenom]

 

       c- Spécifier ordre de tri5(DESC de z à a,ASC ordre de tri par défaut donc inutile à spécifier)

SELECT *

FROM [Amis]

ORDER BY [Nom] DESC

 

3-  FILTRER

 

A-  Filtrage sur une condition

 

Opérateurs  de la clause where :

<> différent de

!= différent de

<=

>=

!> pas supérieur à

!< pas inférieur à

BETWEEN de l’une à l’autre valeurs spécifiées

IS NULL est de valeur nulle

 

 

SELECT [ProductId],[CategoryId],[Title],[NumberOfPages]

FROM [Products]

WHERE[NumberOfPages]> 100

 

SELECT [ProductId],[CategoryId],[Title],[NumberOfPages]

FROM [Products]

WHERE [NumberOfPages] BETWEEN 20 AND 200

 

SELECT [ProductId],[CategoryId],[Title],[NumberOfPages]

FROM [Products]

WHERE [Title]='La bonne cuisine'

 

SELECT *

FROM [Products]

WHERE [Title] IS NULL

 

B-  Filtrer sur plusieurs conditions Opérateur AND et OR

 

SELECT *

FROM [Products]

WHERE[NumberOfPages]<100 AND [Title]='La bonne cuisine'

SELECT *

FROM [Products]

WHERE[NumberOfPages]<100 OR [NumberOfPages]>300

 

Astuce : utiliser des parenthèses si plusieurs conditions en cas de probème d’évaluation

c- Opérateur IN

(exemple sélection de tous les produits de catégorie 2 et 5)

SELECT *

FROM [Products]

WHERE [CategoryId] IN (2,5);

 

Attention si les conditions sont des textes, les placer entre ‘’

exemple WHERE [Category] IN (‘Littérature’,’jeunesse’);

 

C-  Opérateur NOT (utile pour les clauses complexes)

(exemple sélectionne tous les produits sauf ceux dont la category est 5)

SELECT *

FROM [Products]

WHERE NOT[CategoryId]=5

 

D-  LIKE et Caractères de substitution

 

_ remplace un caractère

% Remplace plusieurs carcatères

[] les crochets servent à psécifier pour un emplcement donné un ensemble de caractères possibles

^ caractère d’exclusion

 

Exemple : sélectionne tous les produits dont le titre commence par un L

SELECT *

FROM [Products]

WHERE [Title] LIKE 'L%'

 

Exemple sélectionne tous les produits commençant par C ou L

SELECT *

FROM [Products]

WHERE [Title] LIKE '[CL]%'

 

4-  CHAMPS CALCULES

A-  Concaténation

Exemple on place les titres entre parenthèses

SELECT '(' + [Title] + ')'

FROM [Products];

 

Astuce : il existe des fonctions comme RTRIM()

 

B-  Alias

Exemple on donne un nom à la colonne créée par concaténation et on reutilise cet alias(ici pour trier)

 

SELECT '(' + [Title] + ')' AS My_Title

FROM [Products]

ORDER BY My_Title;

 

C – Calculs arithmétiques

 

Exemple pour chaque article on calcule le prix par la quantité

SELECT [SalesDetailId],[Amount]*[Quantity] As Result

FROM [SalesDetails]

 

5-  LES FONCTIONS

 

Fonctions de texte ,de date et heure,numériques

http://msdn.microsoft.com/fr-fr/library/ms181984.aspx

 

Fonctions d’agregation

AVG(),COUNT(),MAX(),MIN(),SUM()

 

SELECT COUNT(*) As Result

FROM [Categories];

 

Astuce ALL par défaut et DISTINCT

 

6-  GROUPER

 

affiche le nombre de produits par categorie

SELECT COUNT(*) As Result

FROM [Products]

GROUP BY CategoryId

 

  + HAVING : filtrer

SELECT COUNT(*) AS Result

FROM [Products]

GROUP BY CategoryId

HAVING COUNT(*)>1

 

7-  SOUS REQUETES

// TODO

 

    8 – JOINTURES

Ici on affiche chaque roduit avec le nom de la catégorie au lieu de la clé

 

SELECT[Products].[ProductId],[Products].[Title],[Products].[NumberOfPages],[Categories].[Name]

FROM [Products],[Categories]

WHERE [Products].[CategoryId]=[Categories].[CategoryId]

 

Astuce si plusieurs jointures, utiliser AND

 

Jointure interne >>

SELECT[Products].[ProductId],[Products].[Title],[Products].[NumberOfPages],[Categories].[Name]

FROM [Products] INNER JOIN [Categories]

ON [Products].[CategoryId]=[Categories].[CategoryId]

 

9 – UNION et UNION ALL

SELECT [CustomerId],[CountryId],[FirstName],[LastName],[CompanyName],[Address]

FROM [Customers]

WHERE [CountryId]=3

UNION

SELECT [CustomerId],[CountryId],[FirstName],[LastName],[CompanyName],[Address]

FROM [Customers]

WHERE [CountryId]=4

 

Astuce : union all n’élimine pas les doublons

Partager cet article

Repost 0
Published by Romagny13 - dans SQL
commenter cet article

commentaires