SQL SELECT *


Exemple

SELECT * renvoie toutes les colonnes dans le même ordre qu'elles sont définies dans la table.

Lorsque vous utilisez SELECT * , les données renvoyées par une requête peuvent changer chaque fois que la définition de la table change. Cela augmente le risque que différentes versions de votre application ou de votre base de données soient incompatibles.

De plus, la lecture de plus de colonnes que nécessaire peut augmenter la quantité d'E / S disque et réseau.

Vous devez donc toujours spécifier explicitement la ou les colonnes que vous souhaitez récupérer:

--SELECT *                                 don't
  SELECT ID, FName, LName, PhoneNumber  -- do
  FROM Emplopees;

(Lorsque vous effectuez des requêtes interactives, ces considérations ne s'appliquent pas.)


Cependant, SELECT * ne fait pas mal dans la sous-requête d'un opérateur EXISTS, car EXISTS ignore de toute façon les données réelles (il vérifie uniquement si au moins une ligne a été trouvée). Pour la même raison, il n'est pas utile de lister des colonnes spécifiques pour EXISTS, de sorte que SELECT * a plus de sens:

-- list departments where nobody was hired recently
SELECT ID,
       Name
FROM Departments
WHERE NOT EXISTS (SELECT *
                  FROM Employees
                  WHERE DepartmentID = Departments.ID
                    AND HireDate >= '2015-01-01');