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