Table des matières
Rappel sur les requêtes courantes en SQL (général). Dans le cas de SQL spécifique, il sera mentionné s'il s'agit de SQL Server, MySQL, PostgreSQL, etc…
SELECT
Sélections de base
Sélection de l'ensemble des champs d'une table :
SELECT * FROM MaTable
Sélection de champs précis :
SELECT MonChamp1, MonChamp2 FROM MaTable
Utilisation des Alias (utile pour les jointures) :
- SQL Server, PostgreSQL
SELECT T.MonChamp1, T.MonChamp2 FROM MaTable T
- MySQL
SELECT T.MonChamp1, T.MonChamp2 FROM MaTable AS T
Sélections avec jointure
Quand on sélectionne des données avec jointure entre deux tables A et B :
- On met en correspondance les données des deux tables en se basant sur un ou plusieurs champs qu'elles ont en commun
- Dans le cas d'un LEFT, RIGHT ou OUTER JOIN, si on remonte des enregistrement de la table A alors qu'ils n'ont pas de correspondance dans la table B, alors les données de B que la requête est censée remonter seront remplacées par la valeur NULL.
LEFT/RIGHT
Sélectionne tous les enregistrements de la table située à gauche du LEFT JOIN (ou à droite du RIGHT JOIN), et seulement ceux de la table de droite qui ont une correspondance dans la table de gauche.
SELECT T1.MonChamp1, T2.MonChamp2 FROM MaTable1 T1 LEFT JOIN MaTable2 T2 ON T1.MonChamp3 = T2.MonChamp4
INNER
Sélectionne seulement les enregistrements de chaque table qui a une correspondance dans l'autre table
SELECT T1.MonChamp1, T2.MonChamp2 FROM MaTable1 T1 INNER JOIN MaTable2 T2 ON T1.MonChamp3 = T2.MonChamp4
OUTER
Sélectionne tous les enregistrements des 2 tables
Agrégation
sum, avg, count, min, max
distinct
Concaténation de plusieurs lignes
Cette technique permet de concaténer dans une même case toutes les valeurs de MonChamp2
issues de la table Matable2
et correspondant à chaque MonID
sélectionné de la table MaTable1
.
Testé sous : SQL Server.
SELECT MonID, ( SELECT MonChamp2 AS [text()] FROM MaTable2 T2 WHERE T2.MonID = T1.MonID FOR XML PATH(''), TYPE ).value('/', 'NVARCHAR(MAX)') FROM ( SELECT DISTINCT MonID FROM MaTable1 ) T1
INSERT
INSERT de base
INSERT INTO MaTable1 (MonChamp1, MonChamp2) SELECT MonChamp1, MonChamp2 FROM MaTable2 WHERE MonChamp3 = XXX
INSERT JOIN
UPDATE
UPDATE de base
Mise à jour d'une table avec une valeur donnée et en fonction de certaines conditions.
UPDATE MaTable SET MonChamp1 = MaValeur1, MonChamp2 = MaValeur2 WHERE MonChamp3 = MaValeur3
UPDATE JOIN
Mise à jour d'une table à partir des données d'une autre table. Testé sous : SQL Server.
UPDATE MaTable1 SET MaTable1.MonChamp1 = T2.MaValeur2 FROM MaTable1 T1 INNER JOIN MaTable2 T2 ON T1.MonChamp3 = T2.MonChamp3
DELETE
DELETE de base
Pour vider entièrement une table (voir aussi TRUNCATE, plus bas) :
DELETE FROM MaTable
Ou pour ne supprimer que certaines lignes :
DELETE FROM MaTable WHERE MonChamp=MaValeur
Attention aux éventuelles contraintes de clé, ou aux Delete Cascade avant de supprimer.
DELETE JOIN
TRUNCATE
Équivalent au Delete global, il est parfois plus rapide, mais ne permet pas de filtrer : il vide purement et simplement la table.
TRUNCATE TABLE MaTable