Gigantique ?
A cette échelle, il ne va rapidement rester de nous que les sondes Voyager... c'est déjà bien, compte tenu de ce qu'on a fait entre-temps sur Terre.
SQL est un langage particulier, basé sur les transactions entre tables de données structurées.
J'ai jamais beaucoup pratiqué avant cette année. Jusque-là c'était par curiosité et ça se limitait à des sélections et quelques jointures.
Il a fallu passer la vitesse supérieure pour le travail : un outil que j'utilise est basé sur le principe des mêta requêtes.
Si SQL nous permet de sélectionner des échantillons d'un tableau ou de faire des opérations complexes avec les jointures (externes, internes), les tests logiques (CASE WHEN ; IF ; IN ; EXISTS), il permet également de jouer une requête qui génère elle-même une requête. ohO !
Un exemple simple :
- Sélection simple sur le tableau MY_TABLE :
SELECT COLONNE, COUNT(1) FROM MY_TABLE WHERE COLONNE = 'ABC' GROUP BY COLONNE;
Le select permet de sortir le nombre de ligne qui ont le champ COLONNE égal à 'ABC'.
- Sélection générée :
SELECT DISTINCT 'SELECT COLONNE, COUNT(1) FROM MY_TABLE WHERE COLONNE = '||COLONNE||' GROUP BY COLONNE HAVING COUNT(*) = 3;' FROM MY_TABLE;
On peut aussi générer une chaîne de caractères qui contient une requête avec des termes spécifiques appartenant au tableau (le double pipe || est la syntaxe de concaténation des caractères en SQL).
Ici on obtient toutes les lignes avec un champ COLONNE en triplet.
Les requêtes générées seront du type :
SELECT COLONNE, COUNT(1) FROM MY_TABLE WHERE COLONNE = 'ABC' GROUP BY COLONNE HAVING COUNT() = 3;
SELECT COLONNE, COUNT(1) FROM MY_TABLE WHERE COLONNE = 'BCD' GROUP BY COLONNE HAVING COUNT() = 3;
SELECT COLONNE, COUNT(1) FROM MY_TABLE WHERE COLONNE = 'CDE' GROUP BY COLONNE HAVING COUNT(*) = 3;
...
avec autant de lignes qu'il y a de valeurs COLONNE distinctes dans MY_TABLE.