Rédiger une requête rapide est facile. En revanche, maintenir une requête qui s’est étoffée jusqu’à compter quinze jointures et une poignée d’alias devient vite fastidieux. Il suffit de renommer un alias de table pour devoir traquer manuellement chaque occurrence. L'éditeur SQL de Navicat 18 s'attaque précisément à ce genre de difficultés grâce à trois nouvelles fonctionnalités : la refactorisation, la détection des erreurs en temps réel et Code Insight.
Refactoring : Renommer un symbole
La fonctionnalité phare ici est « Renommer un symbole », qui s'appuie sur un analyseur SQL réécrit. Contrairement à certains des nouveaux outils de Navicat 18, celui-ci est entièrement déterministe. Il n'y a pas d'IA impliquée et aucune ambiguïté quant à son fonctionnement. L'analyseur comprend suffisamment bien la structure de votre requête pour repérer toutes les occurrences d'un identifiant donné et les mettre à jour simultanément, en toute sécurité, en une seule opération.
Imaginons que vous travailliez sur la base de données d'exemple Sakila de MySQL avec une requête telle que :
SELECT c.customer_id,
c.first_name,
c.last_name,
SUM(p.amount) AS total_spend
FROM customer c
LEFT JOIN payment p ON p.customer_id = c.customer_id
GROUP BY c.customer_id
ORDER BY total_spend DESC
LIMIT 1;
Si « c » ne vous semble pas assez explicite, survolez l'alias, faites un clic droit (ou un clic avec la touche Ctrl sur macOS) et sélectionnez Refactoriser > Renommer un symbole...
Les points de suspension après « Renommer un symbole » indiquent qu'une boîte de dialogue va s'ouvrir. Dans la boîte de dialogue « Renommer un symbole », vous pouvez saisir un nouveau nom.
Dès que vous cliquez sur le bouton OK, toutes les occurrences de « c » dans l’instruction — que ce soit dans la liste SELECT, la clause FROM, la condition JOIN ou le GROUP BY — sont mises à jour simultanément, ce qui vous évite de vous retrouver avec une requête partiellement renommée et une erreur de syntaxe. La même commande permet également de renommer un identifiant d’objet, et pas uniquement un alias.
Détection des erreurs en temps réel
Plutôt que d'attendre qu'une exécution échoue pour vous signaler un problème, l'éditeur SQL vérifie désormais votre script en continu pendant que vous le saisissez. Les fautes de frappe, les références à des colonnes ou des tables inexistantes ainsi que les noms de colonnes ambigus dans une requête impliquant plusieurs tables sont immédiatement signalés directement dans le code, au lieu d'apparaître sous forme d'erreur de base de données obscure après le lancement de l'exécution. Pour une requête portant sur plusieurs tables jointes, cela peut à lui seul vous éviter plusieurs cycles d’essais et d’erreurs.
Voici la même requête que ci-dessus avec une colonne mal nommée. Si l’on passe le pointeur de la souris sur n’importe quel texte souligné en orange, un message d’avertissement s’affiche :
La fonction « SUM » est également soulignée en rouge. Le survol de cet élément avec la souris fait apparaître un message d'erreur :
Ces deux messages contextuels offrent la possibilité d'utiliser la fonction « Corriger avec l'IA ». Comme son nom l’indique, l’outil « Corriger avec l’IA » utilise l’intelligence artificielle pour corriger tous les avertissements et toutes les erreurs d’une requête. Les modifications proposées s'affichent ensuite dans une boîte de dialogue :
Nous pouvons choisir l’une des trois options suivantes pour appliquer le code dans l’éditeur :
- Ajouter à l’éditeur : ajoute le code à la fin du contenu existant.
- Remplacer tout dans l’éditeur : efface le contenu existant et le remplace intégralement par le nouveau code.
- Remplacer la sélection dans l'éditeur (option par défaut) : supprime le contenu sélectionné et le remplace par le nouveau code.
Code insight
Code Insight complète ce trio avec trois fonctionnalités plus modestes mais réellement utiles : le survol d'un identifiant affiche ses métadonnées (type de données, nullabilité, etc.) sans quitter l'éditeur ; un clic sur un identifiant met en surbrillance toutes ses autres occurrences dans le script, ce qui est pratique pour suivre une colonne au fil d'une requête longue ; enfin, un Ctrl+Clic sur une table ou une colonne permet d'accéder directement à l'outil de conception ou à l'éditeur de données correspondant à cet objet.
Pourquoi ces fonctionnalités font la différence
Ensemble, ces trois fonctionnalités transforment votre rythme de travail quotidien avec SQL : vous passez moins de temps à répercuter manuellement un renommage, moins de temps à déboguer une faute de frappe après coup et moins de temps à quitter votre contexte de travail pour rechercher le type d’une colonne. Pour tous ceux qui passent de nombreuses heures dans l'éditeur de requêtes, cela fait rapidement une différence !

