Requête SQL : trucs et astuces

Requête SQL : Trucs et astuces

Comme vous pouvez le voir dans le titre, j’aimerai parler du SQL, langage spécifique permettant de communiquer avec des bases de données.

J’utilise le SQL depuis des années, et j’ai eu l’occasion de le tester sur plein de projets différents.

J’ai découvert plein de trucs et astuces intéressant dans ce langage.

Requête complète

Ce qu’il faut savoir dès le début en SQL, c’est le schéma de la requête de base. Que ce soit pour MySQL, PosgreSQL ou autre, elle ne change pas.
La voici ci-dessous. vous pouvez la garder en exemple bien au chaud.

SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression
LIMIT count
OFFSET start

Obtenir les noms de colonne d’une table en 1 requête

Vous n’avez pas un accès direct à votre base de donnée, et vous devez savoir qu’elles sont les colonnes d’une table. Voici la requête qu’il vous faut.

SELECT column_name
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name='triggers'

L’exemple ci-dessus affichera les colonnes de la table triggers qui se situe dans la base de donnée INFORMATION_SCHEMA.

Compter le nombre de colonnes d’une table

Dans la même logique que la requête précédente, il vous faut le nombre de colonnes d’une table. On ne sais jamais, cela peut servir.

SELECT count(*)
FROM information_schema.COLUMNS
WHERE table_name='triggers';

L’exemple ci-dessous me retournera la réponse 22.

Enlever les conditions OR avec SQL IN

IN est un opérateur en SQL qui est utilisé dans la commande WHERE. Il peut être utilisé en remplacement d’une liste d’opérateur OR.
Je m’explique avec une requête utilisant l’opérateur OR :

SELECT langage
FROM technologie
WHERE langage = 'PHP'
OR langage = 'Javascript'
OR langage = 'CSS'

En utilisant l’opérateur IN, nous nous retrouvons avec la requête ci-dessous, qui est beaucoup plus réduite

SELECT langage
FROM technologie
WHERE langage IN ( 'PHP', 'Javascript', 'CSS' )

Copier le contenu d’une table dans une autre

La requête suivante permet de copier l’entièreté d’une table dans une deuxième. Elle créé cette deuxième table au passage.
Très intéressant lors de la sauvegarde de table.

CREATE TABLE old_post AS (SELECT * from post)

Il est possible aussi de copier partiellement une table, et d’enregistrer les infos dans une autre table. Voici la requête qu’il vous faut :

INSERT INTO old_post(a, b, c)
SELECT x, y, z FROM post ...

Liens externes

Site français sur le langage SQL – sql.sh
D’autres astuces en SQL sql.sh/categorie/astuces

N’hésitez pas à me proposer des trucs et astuces intéressantes sur ce thème. Je les partagerai dans cette article.