Passer au contenu principal

SQL Formatter

Un outil pour formater les requêtes SQL pour une meilleure lisibilité et les compresser. Nettoyez les requêtes complexes et unifiez le style de codage SQL au sein de votre équipe !

Examples:
Formatted SQL will appear here...

💡 Tips

  • 복잡한 쿼리를 읽기 쉽게 포맷팅하세요
  • 팀 내 SQL 코딩 스타일을 통일하세요
  • Compress 기능으로 쿼리를 한 줄로 만들 수 있습니다
  • 여러 SQL 문을 한 번에 포맷팅할 수 있습니다

Fonctionnalités principales

1. Formatage SQL

  • Indentation appropriée pour les mots-clés, colonnes et noms de tables
  • Sauts de ligne pour améliorer la lisibilité
  • Application d'un style de codage cohérent

2. Support de plusieurs dialectes SQL

  • SQL standard
  • MySQL
  • PostgreSQL
  • MariaDB
  • PL/SQL (Oracle)
  • T-SQL (SQL Server)
  • SQLite

3. Options de personnalisation

  • Style d'indentation (2 espaces, 4 espaces, Tab)
  • Capitalisation des mots-clés
  • Ajustement de l'espacement entre les lignes

4. Fonction de compression

  • Suppression des espaces inutiles
  • Compression sur une seule ligne

Exemples d'utilisation

Avant le formatage

SELECT u.id,u.name,u.email,o.order_id,o.total FROM users u LEFT JOIN orders o ON u.id=o.user_id WHERE u.active=1 AND o.total>100 ORDER BY o.total DESC LIMIT 10;

Après le formatage

SELECT
u.id,
u.name,
u.email,
o.order_id,
o.total
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE
u.active = 1
AND o.total > 100
ORDER BY
o.total DESC
LIMIT
10;

Cas d'utilisation

1. Revue de code

-- Formater les requêtes complexes pour faciliter la revue
WITH monthly_sales AS (
SELECT
DATE_TRUNC('month', order_date) AS month,
SUM(total) AS revenue
FROM
orders
GROUP BY
DATE_TRUNC('month', order_date)
)
SELECT
month,
revenue,
LAG(revenue) OVER (
ORDER BY
month
) AS prev_month_revenue
FROM
monthly_sales;

2. Documentation

-- Nettoyer le SQL pour le README ou la documentation
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_users_email ON users (email);

3. Débogage

-- Rendre lisibles les requêtes en une ligne des journaux
SELECT
p.id,
p.name,
c.name AS category,
COUNT(o.id) AS order_count
FROM
products p
INNER JOIN categories c ON p.category_id = c.id
LEFT JOIN order_items o ON p.id = o.product_id
WHERE
p.active = TRUE
GROUP BY
p.id,
p.name,
c.name
HAVING
COUNT(o.id) > 10;

4. CTE complexes (Common Table Expression)

WITH RECURSIVE subordinates AS (
SELECT
employee_id,
manager_id,
full_name,
1 AS level
FROM
employees
WHERE
manager_id IS NULL
UNION ALL
SELECT
e.employee_id,
e.manager_id,
e.full_name,
s.level + 1
FROM
employees e
INNER JOIN subordinates s ON s.employee_id = e.manager_id
)
SELECT
employee_id,
full_name,
level
FROM
subordinates
ORDER BY
level,
full_name;

Utilisation de la fonction de compression

Quand l'utiliser ?

  1. Analyse de journaux : Convertir les requêtes multilignes en une seule ligne pour la recherche grep
  2. Paramètres d'URL : Lors de l'inclusion de requêtes dans les URL
  3. Économie d'espace : Utiliser des requêtes simples en ligne dans le code

Exemple

-- Avant la compression (plusieurs lignes)
SELECT
id,
name
FROM
users
WHERE
active = TRUE;

-- Après la compression (une ligne)
SELECT id,name FROM users WHERE active=TRUE;

Meilleures pratiques

1. Style cohérent

Utilisez les mêmes paramètres de format au sein de l'équipe :

  • Indentation : 2 espaces
  • Mots-clés : MAJUSCULES
  • Espacement des lignes : 1

2. Utiliser des CTE pour les requêtes complexes

-- Bon : Séparé avec CTE
WITH active_users AS (
SELECT * FROM users WHERE active = TRUE
),
recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT
u.*,
COUNT(o.id) AS order_count
FROM
active_users u
LEFT JOIN recent_orders o ON u.id = o.user_id
GROUP BY
u.id;

3. JOIN au lieu de sous-requête

-- Mauvais : Sous-requête
SELECT
*
FROM
orders
WHERE
user_id IN (
SELECT
id
FROM
users
WHERE
active = TRUE
);

-- Bon : Utilisation de JOIN
SELECT
o.*
FROM
orders o
INNER JOIN users u ON o.user_id = u.id
WHERE
u.active = TRUE;

4. Liste explicite des colonnes

-- Mauvais : SELECT *
SELECT * FROM users;

-- Bon : Colonnes explicites
SELECT
id,
name,
email,
created_at
FROM
users;

Syntaxe SQL prise en charge

DDL (Data Definition Language)

CREATE TABLE, ALTER TABLE, DROP TABLE
CREATE INDEX, DROP INDEX
CREATE VIEW, DROP VIEW

DML (Data Manipulation Language)

SELECT, INSERT, UPDATE, DELETE
MERGE (certains dialectes)

Fonctionnalités avancées

-- CTE (Common Table Expression)
WITH cte_name AS (...)

-- Fonctions de fenêtre
ROW_NUMBER(), RANK(), LAG(), LEAD()

-- Jointures
INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN

-- Sous-requêtes
WHERE id IN (SELECT ...), FROM (SELECT ...) AS subquery

Astuces et conseils

1. Écrire les longues requêtes étape par étape

-- Étape 1 : SELECT de base
SELECT * FROM users;

-- Étape 2 : Ajouter JOIN
SELECT * FROM users u
JOIN orders o ON u.id = o.user_id;

-- Étape 3 : Condition WHERE
SELECT * FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = TRUE;

-- Étape 4 : Formater

2. Utiliser des commentaires

-- Interroger les statistiques de commandes des utilisateurs
SELECT
u.id,
u.name,
COUNT(o.id) AS total_orders, -- Total des commandes
SUM(o.total) AS total_revenue -- Revenu total
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY
u.id,
u.name;

3. Alias de tables cohérents

-- Utiliser la première lettre
FROM users u, orders o

-- Utiliser une abréviation significative
FROM users usr, orders ord

Notes importantes

  • Le formateur ne valide pas la syntaxe SQL
  • Il peut y avoir de légères différences entre les dialectes
  • La fonction de compression sacrifie la lisibilité (à utiliser uniquement si nécessaire)
  • Les commentaires sont préservés lors du formatage

Outils connexes

Raccourcis clavier

De nombreux éditeurs SQL fournissent des raccourcis de formatage :

  • VS Code : Shift + Alt + F
  • JetBrains : Ctrl + Alt + L
  • DBeaver : Ctrl + Shift + F