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
====== CREATE ======