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…
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) :
SELECT T.MonChamp1, T.MonChamp2 FROM MaTable T
SELECT T.MonChamp1, T.MonChamp2 FROM MaTable AS T
Quand on sélectionne des données avec jointure entre deux tables A et B :
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
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
Sélectionne tous les enregistrements des 2 tables
sum, avg, count, min, max
distinct
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 INTO MaTable1 (MonChamp1, MonChamp2) SELECT MonChamp1, MonChamp2 FROM MaTable2 WHERE MonChamp3 = XXX
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
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
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.
É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