SQL Console
L'editeur SQL embarque dans KytheraDB. Tu tapes une requete, tu la lances, tu
vois le resultat dans un tableau. Plus quelques refinements specifiques :
autocomplete sur tes propres tables, lint syntaxe en direct, prevention des
DELETE ou UPDATE sans WHERE, et masquage automatique des colonnes
flaggees PII selon ton role.
C'est l'outil que tu utilises pour explorer ta donnee, debugger un cas client, ou tester une migration avant de la mettre en patch.
Ouvrir la console
Sidebar gauche → Terminal (icone terminal). Selectionne la connexion
active en haut. Si elle n'a pas encore ete analysee, lance d'abord une analyse
(bouton sur la card de connexion dans le Dashboard).
L'editeur prend tout l'espace ; le panneau de resultats apparait en bas apres execution.
Editeur — fonctionnalites
Autocomplete
Tape SELECT * FROM ab (deux caracteres minimum) → la liste deroulante propose tes tables.
Pareil pour les colonnes apres SELECT ou WHERE. L'autocomplete est nourri
par le dernier snapshot de la connexion active — si tu viens de creer une
table, lance d'abord une re-analyse.
Lint en temps reel
Le lint tourne en arriere-plan 800ms apres ta derniere frappe. Il appelle
l'endpoint /sql/analyze qui parse ta requete et te dit si :
- Le SQL est syntaxiquement invalide (souligne en rouge, message d'erreur sous l'editeur)
- Il manque un
WHEREsur unUPDATEouDELETE(souligne en orange, warning non bloquant) - Une table referencee n'existe pas (souligne en rouge)
- Un cast risque de tronquer (warning orange)
Tu peux executer malgre les warnings — c'est juste un signal visuel.
Raccourcis clavier
| Raccourci | Action |
|---|---|
Ctrl+Enter / Cmd+Enter | Executer la requete courante |
Ctrl+Espace | Forcer l'autocomplete |
Ctrl+/ | Commenter/decommenter la ligne |
Tab (selection multi-ligne) | Indenter |
Shift+Tab | Desindenter |
Multi-tabs
Bouton + en haut → nouvelle tab avec une nouvelle requete. Pratique pour
comparer plusieurs scripts en parallele sans perdre ton contexte. L'etat est
persiste en localStorage — refresh de la page = tabs conservees.
Execution — les 3 modes
1. Execute (le bouton vert "Execute")
Lance ta requete telle quelle. Le resultat s'affiche dans le panneau bas avec :
- Le tableau de donnees (max 1000 lignes par defaut)
- Le nombre de lignes retournees
- Le temps d'execution en ms
- Les colonnes masquees (cf. plus bas) si applicable
- L'option d'export CSV / JSON
Pour les SELECT, c'est simple. Pour les mutations (INSERT / UPDATE /
DELETE), KytheraDB applique des garde-fous (cf. section suivante).
2. Preview
Bouton "Preview" → simule la requete sans la commit. Utile pour les
mutations avant un Execute "for real".
KytheraDB ouvre une transaction, execute, recupere les lignes affectees + estime l'impact, puis rollback. Tu vois ce qui va changer sans rien modifier.
C'est ce qui fait que tu peux taper DELETE FROM users WHERE created_at < '2020-01-01'
sans crainte : Preview te dit "127 lignes seront supprimees", tu valides ou tu
modifies ta requete.
3. Explain
Bouton "Explain" → envoie un EXPLAIN (ou EXPLAIN ANALYZE selon ton
moteur) et formate le plan d'execution. Utile pour optimiser les requetes
lentes — KytheraDB met en surbrillance les scans sequentiels sur tables
larges, les boucles imbriquees, les indexes manquants.
Garde-fous d'execution
Par defaut, KytheraDB refuse certaines requetes dangereuses sans confirmation explicite :
| Requete | Comportement |
|---|---|
DELETE FROM <table> sans WHERE | Modal de confirmation obligatoire |
UPDATE <table> SET ... sans WHERE | Modal de confirmation obligatoire |
TRUNCATE | Modal + role admin requis |
DROP TABLE / DROP SCHEMA | Modal + role admin requis |
ALTER qui supprime une colonne | Modal + warning d'impact |
Les modaux te montrent le nombre de lignes affectees (estime) avant de te
laisser confirmer. Tu peux aussi desactiver les garde-fous pour une
session si tu sais ce que tu fais (/settings/sql-guard).
Masquage des colonnes sensibles
Si une colonne a ete flaggee PII par le GDPR Scanner ou via les Column Masks, elle est automatiquement masquee au resultat selon ton role :
| Ton role | Colonne users.email (PII low) | Colonne users.password_hash (PII high) |
|---|---|---|
super_admin | Vue claire | Vue claire |
admin | Vue claire | Vue claire |
qa | Vue claire | *** |
dev | e***@e***.com | *** |
viewer | *** | *** |
Le tableau de resultat affiche une banniere "X colonnes masquees" au-dessus.
Tu vois quelles colonnes ont ete masquees + pourquoi (header HTTP
X-Auralith-Masked-Columns).
Cela s'applique uniquement a l'affichage : la donnee reelle reste dans la base. Si tu as besoin de l'export pour un cas legal, demande une elevation a ton admin.
Copy / paste restrictions
Si ton org a configure une policy de copie restreinte (cf. Export Policy), KytheraDB peut :
- Bloquer le
Ctrl+Csur certaines colonnes (les masquer ne suffit pas juridiquement, faut empecher l'extraction) - Watermarker la session avec ton email + l'heure (visible dans les screenshots aussi)
- Logger chaque tentative de copie (audit log)
C'est typiquement active sur les connexions taggees prod. Tu vois une
indication visuelle "Mode restriction" en haut a droite de la console.
Audit log
Toute requete executee est loggee dans audit_logs avec :
- Ton ID user + email
- La requete SQL complete
- La connexion ciblee
- Le timestamp
- Le nombre de lignes affectees
- Le statut (success / error)
Visible dans Settings → Audit par les admins. Indispensable pour les audits de conformite (RGPD, SOC2).
Limites et bonnes pratiques
Limites techniques
- Max 1000 lignes retournees par requete (cap configurable jusqu'a 10000)
- Max 30s d'execution — au-dela KytheraDB cancel la requete
- Pas de
\copyouCOPY FROM STDIN— utilise les imports CSV a la place
Bonnes pratiques
- ✅ Toujours Preview avant Execute sur les mutations
- ✅ Utiliser
LIMIT 100quand tu explores une table inconnue - ✅ Verifier les indexes via Explain quand une requete prend > 1s
- ✅ Si tu veux exporter beaucoup de donnees, utilise l'Export dedie plutot que copier-coller le resultat
- ❌ Eviter les
SELECT *sur des tables larges en production — masquage et copy-restriction sont calcules par colonne
Connexe
- Schema viewer — explorer la structure avant de requeter
- Mass Patch — quand ta requete devient un script reutilisable
- GDPR Scanner — detecter les colonnes a masquer
- Export Policy — controler ce qui sort de la console