Outils pour utilisateurs

Outils du site


sql:base

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

sql/base.txt · Dernière modification : le 17/10/2012 à 18:07 de Yosko