Cette page décrit Calíope 1.7, la version que je construis en ce moment. La 1.6 est sur l'App Store pour Mac, iPad, iPhone, Apple Watch, Apple TV et Apple Vision Pro. Le changelog indique dans quelle version chaque fonction est arrivée.
Ajoute un bouton « Ouvrir dans Calíope » à chaque sujet. Ne fonctionne qu'avec l'app installée.
Naviguez parmi les tables, vues, index, champs, routines, déclencheurs et événements.
Où le trouver : Espace de travail › Outils › Catalogues
Ouvrez Catalogues depuis la barre de navigation du workspace. Sélectionnez une base de données dans le sélecteur en haut. Les sous-onglets affichent les différentes catégories d'objets.
ClickHouse
Avec ClickHouse, il n'y a pas d'onglets Déclencheurs ni Événements, et une note sous les onglets dit ce qui en tient lieu. Index s'appelle Clés : pour chaque table, la clé de tri, la clé de partition, la clé primaire si elle diffère, la clé d'échantillonnage, les index de saut avec leur type et leur granularité, et les projections, sans cardinalité ni Nouvel index. Entre Vues et Clés se trouve Vues matérialisées : la liste dit où écrit chacune —Interne, si la cible a été créée par le serveur— et quand elle se rafraîchit, et dessous vient la fiche de celle sélectionnée : de quelle table elle lit, dans quelle table elle écrit et sous quel nom l'interroger, la place qu'occupe la cible et son nombre de lignes, quand la dernière ligne a été écrite et, si elle se rafraîchit seule, sa programmation, son état et le dernier et le prochain rafraîchissement, avec le fuseau écrit. Routines liste les fonctions de l'utilisateur.
Oracle
Avec Oracle le sélecteur liste des schémas : ceux qui ont un objet visible par votre compte, plus le vôtre même vide, ceux d’Oracle compris (SYS, MDSYS…). Tables montre celles de l’utilisateur —sans les tables internes d’un index spatial ni d’une vue matérialisée—, avec les lignes de la dernière statistique (NUM_ROWS) et les types tels qu’Oracle les écrit (NUMBER(10,0), VARCHAR2(100 CHAR)). Vues inclut les vues matérialisées. Routines liste procédures, fonctions et packages —avec leur spécification et leur corps dans le panneau DDL— et met INVALID après le type de celle qui ne compile pas ; Déclencheurs met DISABLED après celui qui est désactivé. Dans Index, un index sur fonction montre son expression, et un index de domaine ou anormal, son type (DOMAIN · MDSYS.SPATIAL_INDEX_V2, NORMAL · INVISIBLE, UNUSABLE). Il y a un onglet de plus, Séquences, avec minimum, maximum, pas, cycle, cache et Suivant sur disque : le prochain numéro que le serveur écrira, pas le dernier qu’il a remis, qui avec un cache peut avoir jusqu’à un bloc de retard. Il n’y a pas d’onglet Événements.
Affiche le CREATE TABLE, CREATE VIEW ou CREATE PROCEDURE et permet de le modifier et de l'appliquer.
Où le trouver : Catalogues › clic droit › Voir DDL
Ouvrez le menu contextuel —clic droit sur macOS, appui long sur iPad— de n'importe quel objet dans la liste des catalogues et sélectionnez Voir le DDL. Le panneau inférieur affiche le DDL complet avec coloration syntaxique et sélection de texte partout.
Modifier le DDL :
Appuyez sur Ouvrir dans ItemEditor (bouton en haut du panneau DDL) pour ouvrir l'éditeur dans une feuille modale avec le DDL pré-chargé. C'est le même éditeur sur toutes les plateformes, avec coloration syntaxique.
Modifiez le DDL librement et appuyez sur Appliquer pour l'envoyer au serveur. Le bouton Réinitialiser annule vos modifications et revient au DDL original. Si le ALTER ou CREATE échoue, un message rouge apparaît dans la barre inférieure avec l'erreur du serveur.
Disponible sur macOS, iPad, iPhone et Apple Vision Pro.
Apple Vision Pro : le menu contextuel s'ouvre en regardant la ligne et en pinçant sans relâcher.
Oracle
Avec Oracle le panneau montre ce que le serveur écrit avec DBMS_METADATA.GET_DDL : noms cités et qualifiés, EDITIONABLE là où il s’applique, l’identité entière et, pour une table, ses index, ses commentaires et ses clés étrangères à la fin, en ALTER TABLE. Si votre compte ne peut pas lire le DDL d’un objet d’un autre schéma —il lui manque SELECT_CATALOG_ROLE—, un commentaire le dit et Ouvrir dans ItemEditor n’est pas proposé. Les séquences ont aussi Voir DDL.
Créez une table directement depuis la barre d'outils des Catalogues.
Où le trouver : Catalogues › Nouvelle table
Dans la barre d'outils des Catalogues, utilisez le bouton Nouvelle table pour ouvrir le Constructeur de tables dans un nouvel onglet. Vous pouvez aussi ouvrir le menu contextuel d'une table existante — clic droit sur macOS, appui long sur iPad — et choisir Concevoir la table pour la modifier.
Le constructeur répartit le travail entre les onglets de sa barre : Colonnes, Index, Clés étrangères —là où le moteur en a— et Options. Ce que propose chacun avec le moteur de votre session, les rubriques du Constructeur de tables le détaillent.
La section Aperçu SQL en bas affiche en temps réel le DDL qui sera exécuté. Cliquez sur Créer la table (ou Appliquer les modifications en mode édition) pour envoyer le DDL au serveur.
Apple Vision Pro : le menu contextuel s'ouvre en regardant la ligne et en pinçant sans relâcher.
Accédez aux éditeurs visuels de chaque type d'objet depuis la barre d'outils.
Où le trouver : Catalogues › Nouvelle vue / Nouvel index / Nouvelle routine / Nouveau déclencheur / Nouvel événement
La barre d'outils des Catalogues comprend des boutons dédiés pour créer chaque type d'objet :
- Nouvelle vue — ouvre l'éditeur de vues
- Nouvel index — ouvre l'éditeur d'index
- Nouvelle routine — ouvre l'éditeur de fonctions et de procédures stockées
- Nouveau déclencheur — ouvre l'éditeur de déclencheurs
MySQLMariaDBAurora
- Nouvel événement — dans l'onglet Événements, ouvre l'éditeur d'événements du planificateur
SQL ServerPostgreSQL
Il n'y a ni onglet Événements ni Nouvel événement : le serveur n'a pas de planificateur d'événements.
Chaque éditeur génère le DDL correspondant (CREATE VIEW, CREATE INDEX, CREATE PROCEDURE, etc.) dans le dialecte du serveur auquel vous êtes connecté, et l'exécute sur le serveur après confirmation. Chacun ne propose que ce que ce serveur sait écrire : les sujets suivants disent ce qui change d'un moteur à l'autre.
ClickHouse
Avec ClickHouse, il n'y a que Nouvelle vue : ni Nouvel index —l'onglet est Clés, et un index de saut s'ajoute depuis le Constructeur de tables—, ni Nouvelle routine, ni Nouveau déclencheur, ni onglet Événements.
Oracle
Avec Oracle il y a Nouvelle vue et Nouvel index. Il n’y a ni Nouvelle routine ni Nouveau déclencheur : Catalogues montre le code PL/SQL des procédures, fonctions, packages et déclencheurs, mais ne le modifie pas. Il n’y a pas non plus d’onglet Événements.
Modifiez des objets existants avec l'éditeur visuel ou directement dans l'éditeur SQL.
Où le trouver : Catalogues › clic droit › Modifier (formulaire visuel) / Ouvrir dans ItemEditor
Ouvrez le menu contextuel d'une vue, d'une routine, d'un déclencheur ou d'un événement dans l'onglet correspondant des Catalogues — clic droit sur macOS, appui long sur iPad. Outre Voir le DDL, il propose deux façons de modifier :
- Modifier (formulaire visuel) — ouvre l'éditeur graphique avec les champs pré-remplis
- Ouvrir dans ItemEditor — ouvre le DDL complet de l'objet dans l'éditeur SQL pour modification manuelle
Les modifications effectuées dans le formulaire visuel génèrent un ALTER ou DROP + CREATE selon le type d'objet.
Oracle
Avec Oracle, les procédures, les fonctions, les paquetages et les déclencheurs se lisent mais ne se modifient pas depuis Catalogues : Modifier (formulaire visuel) n’apparaît pas. Voir le DDL affiche leur PL/SQL complet —la spécification et le corps d’un paquetage ensemble—, et Ouvrir dans ItemEditor l’emmène dans l’éditeur SQL, où vous le modifiez et l’exécutez vous-même. Il n’y a pas d’onglet Événements : le planificateur d’Oracle est laissé de côté.
ClickHouse
Avec ClickHouse, les fonctions utilisateur se lisent mais ne se modifient pas depuis Catalogues : Modifier (formulaire visuel) n’apparaît pas, et Ouvrir dans ItemEditor emmène leur DDL dans l’éditeur SQL.
Apple Vision Pro : le menu contextuel s'ouvre en regardant la ligne et en pinçant sans relâcher.
Générez automatiquement des lignes de test pour une table.
Où le trouver : Catalogues › clic droit › Peupler avec des données factices
Ouvrez le menu contextuel d'une table dans l'onglet Tables des Catalogues — clic droit sur macOS, appui long sur iPad — et sélectionnez Remplir avec des données fictives. Calíope générera des instructions INSERT exemples adaptées aux types de colonnes de la table.
Apple Vision Pro : le menu contextuel s'ouvre en regardant la ligne et en pinçant sans relâcher.
Mots-clés : données fictives, dummy data, seed, test data, remplir, fake data
Empêche les modifications accidentelles des objets du catalogue.
Où le trouver : Catalogues › Lecture seule
Catalogues s'ouvre en Lecture seule : le commutateur de sa barre est activé et les boutons de création et de suppression sont désactivés. Désactivez-le pour créer ou supprimer des objets, et réactivez-le quand vous explorez une base de données de production. Si la connexion porte une étiquette d’environnement en lecture seule, le commutateur n’apparaît pas, ni les boutons de création et de suppression : cette session ne peut pas écrire, il n’y a donc rien à déverrouiller.
Mots-clés : lecture seule, read only, protéger, production
Créez ou modifiez une vue ; les options proposées dépendent du moteur.
Où le trouver : Catalogues › Nouvelle vue / Modifier la vue
L'Éditeur de vues s'ouvre lorsque vous appuyez sur Nouvelle vue, ou depuis le menu contextuel d'une vue existante — clic droit sur macOS, appui long sur iPad — avec Modifier (formulaire visuel). Il génère automatiquement le DDL CREATE VIEW.
Champs disponibles :
- Nom — nom de la vue dans la base de données sélectionnée.
- Le bouton bascule de remplacement — lorsqu'il est activé, le DDL généré remplace la vue si elle existe déjà, sans avoir à la supprimer au préalable. Le bouton porte le nom de la clause qu'il écrit :
MySQLMariaDBAuroraPostgreSQLOracle
OR REPLACE — CREATE OR REPLACE VIEW.
SQL Server
OR ALTER — CREATE OR ALTER VIEW.
MySQLMariaDBAurora
- Algorithme — contrôle la façon dont le serveur traite la vue :
- UNDEFINED (par défaut) — le serveur choisit l'algorithme optimal.
- MERGE — fusionne la requête de la vue avec la requête externe. Plus efficace.
- TEMPTABLE — matérialise la vue dans une table temporaire avant d'appliquer les filtres externes.
- SQL Security — définit les privilèges avec lesquels la vue s'exécute :
- DEFINER (par défaut) — s'exécute avec les privilèges de l'utilisateur qui l'a créée.
- INVOKER — s'exécute avec les privilèges de l'utilisateur qui l'interroge.
- CHECK OPTION — valide que les lignes modifiées via la vue restent visibles dans celle-ci :
- LOCAL — vérifie uniquement la condition de cette vue.
- CASCADED — vérifie également les conditions des vues sous-jacentes.
- SQL SELECT — l'éditeur de texte avec la requête SELECT qui définit le contenu de la vue.
Appuyez sur Appliquer pour exécuter le DDL sur le serveur.
SQL ServerPostgreSQLOracle
Il n'y a ni Algorithme ni SQL Security : la feuille ne les affiche pas.
SQL ServerOracle
WITH CHECK OPTION n'a qu'une forme, celle que décrit CASCADED : choisir LOCAL écrit celle-là, et la feuille le dit.
Apple Vision Pro : le menu contextuel s'ouvre en regardant la ligne et en pinçant sans relâcher.
Mots-clés : vue, view, CREATE VIEW, OR REPLACE, algorithme, MERGE, TEMPTABLE, SQL SECURITY, DEFINER, INVOKER, CHECK OPTION, éditeur de vues
Créez ou modifiez des procédures stockées et des fonctions avec une interface visuelle.
Où le trouver : Catalogues › Nouvelle routine / Modifier la routine
L'Éditeur de routines s'ouvre lorsque vous appuyez sur Nouvelle routine ou modifiez une routine existante depuis l'onglet Routines des Catalogues. Il génère le DDL qui crée la procédure ou la fonction, ou remplace celle qui porte ce nom :
MySQLMariaDBAurora
Deux instructions, exécutées l'une après l'autre : DROP PROCEDURE IF EXISTS et CREATE PROCEDURE (ou DROP FUNCTION IF EXISTS et CREATE FUNCTION). MySQL n'a pas de CREATE OR REPLACE pour les routines, donc celle qui existe est d'abord supprimée : si la création échoue, elle n'est plus là.
PostgreSQL
CREATE OR REPLACE PROCEDURE ou CREATE OR REPLACE FUNCTION.
SQL Server
CREATE OR ALTER PROCEDURE ou CREATE OR ALTER FUNCTION.
Champs disponibles :
- Nom — nom de la procédure ou de la fonction.
- Type — choisissez entre PROCEDURE (procédure) ou FUNCTION (fonction).
- Paramètres — ajoutez des paramètres avec le bouton +. Chaque paramètre possède :
- Mode : IN (entrée), OUT (sortie), INOUT (entrée et sortie). Disponible uniquement pour les procédures.
- Nom du paramètre.
- Type de données (p. ex. INT, VARCHAR(100), DATETIME).
- Type de retour (fonctions uniquement) — le type de données retourné par la fonction (p. ex. INT, VARCHAR(255)).
- Corps — éditeur de texte avec le code de la routine. Il commence par un bloc BEGIN … END vide dans lequel écrire.
La section Options n'affiche que ce que le serveur sait écrire :
MySQLMariaDBAurora
- Déterministe — écrit DETERMINISTIC si la routine retourne toujours le même résultat pour les mêmes paramètres d'entrée. Important pour la réplication.
- Accès aux données — déclare le comportement de la routine vis-à-vis de la base de données :
- CONTAINS SQL — peut contenir du SQL mais ne lit ni n'écrit de données.
- NO SQL — ne contient pas d'instructions SQL.
- READS SQL DATA — lit des données mais ne les modifie pas.
- MODIFIES SQL DATA — peut insérer, mettre à jour ou supprimer des données.
PostgreSQL
Seulement Déterministe, et seulement pour les fonctions : il écrit IMMUTABLE — la fonction retourne toujours le même résultat pour les mêmes arguments et ne lit pas la base de données. Une procédure n'a pas cette option, et il n'y a pas d'Accès aux données : PostgreSQL n'a pas cette clause. Le corps s'écrit en PL/pgSQL (LANGUAGE plpgsql).
SQL Server
Il n'y a pas de section Options : SQL Server déduit lui-même si une fonction est déterministe, et n'a pas de clause d'accès aux données. Un paramètre qui n'est pas IN s'écrit @nom type OUTPUT, et le @ est ajouté si vous l'omettez.
Appuyez sur Appliquer pour exécuter le DDL sur le serveur.
Oracle
Avec Oracle cet éditeur ne s’ouvre pas : il n’y a ni Nouvelle routine ni modification d’une routine existante. Son code se voit dans le panneau DDL de Catalogues ; pour le changer, portez son CREATE OR REPLACE dans l’éditeur SQL.
Mots-clés : routine, procédure, fonction, PROCEDURE, FUNCTION, paramètres, IN, OUT, INOUT, deterministic, CONTAINS SQL, CREATE PROCEDURE, CREATE FUNCTION
Où le trouver : Catalogues › Nouveau déclencheur / Modifier le déclencheur
L'Éditeur de déclencheurs s'ouvre lorsque vous appuyez sur Nouveau déclencheur dans la barre d'outils des Catalogues, ou depuis le menu contextuel d'un déclencheur existant — clic droit sur macOS, appui long sur iPad — avec Modifier (formulaire visuel). L'arbre de schéma ne l'ouvre pas : son menu contextuel n'ouvre aucun des éditeurs de Catalogues.
Champs disponibles :
- Nom — nom du déclencheur.
- Timing — quand le déclencheur se déclenche par rapport à l'opération :
MySQLMariaDBAuroraPostgreSQL
- BEFORE — s'exécute avant l'opération. Permet de modifier les valeurs de NEW avant qu'elles soient écrites.
- AFTER — s'exécute après l'opération.
SQL Server
- AFTER — s'exécute après l'opération.
- INSTEAD OF — remplace l'opération par le code du déclencheur.
Il n'y a pas de BEFORE.
- Événement — l'opération qui déclenche le déclencheur :
- INSERT — lors de l'insertion d'une ligne.
- UPDATE — lors de la mise à jour d'une ligne.
- DELETE — lors de la suppression d'une ligne.
- Corps — éditeur de texte avec le code du déclencheur. Le corps de départ indique, en commentaires, où se trouvent les nouvelles lignes et les précédentes.
Appuyez sur Appliquer pour exécuter le DDL sur le serveur.
MySQLMariaDBAuroraPostgreSQL
Le déclencheur se déclenche une fois par ligne : NEW.colonne est la nouvelle valeur (dans INSERT et UPDATE) et OLD.colonne la précédente (dans UPDATE et DELETE).
PostgreSQL
Le code d'un déclencheur vit dans une fonction : Calíope crée la fonction <nom>_fn avec le corps et le déclencheur qui l'appelle, FOR EACH ROW. Le corps se termine par RETURN : dans un déclencheur BEFORE, la ligne qu'il renvoie est celle qui est écrite, et NULL ignore la ligne. Le corps de départ renvoie COALESCE(NEW, OLD), qui convient aux trois événements.
SQL Server
Le déclencheur se déclenche une fois par instruction, pas une fois par ligne, et les nouvelles lignes et les précédentes sont dans les tables inserted et deleted, pas dans NEW et OLD : le corps de départ le dit.
Apple Vision Pro : le menu contextuel s'ouvre en regardant la ligne et en pinçant sans relâcher.
Oracle
Avec Oracle cet éditeur ne s’ouvre pas : il n’y a ni Nouveau déclencheur ni modification d’un déclencheur existant. Son code se voit dans le panneau DDL de Catalogues ; pour le changer, portez son CREATE OR REPLACE TRIGGER dans l’éditeur SQL.
Créez ou modifiez des événements du planificateur d'événements MySQL.
Où le trouver : Catalogues › Nouvel événement / Modifier l'événement
L'Éditeur d'événements s'ouvre lorsque vous appuyez sur Nouvel événement dans la barre d'outils des Catalogues ou modifiez un événement existant. Nécessite que le planificateur d'événements MySQL soit activé (SET GLOBAL event_scheduler = ON).
Champs disponibles :
- Nom — nom de l'événement.
- État — contrôle si l'événement est actif :
- ENABLE — l'événement s'exécute selon sa programmation.
- DISABLE — l'événement est en pause.
- SLAVESIDE_DISABLED — désactivé sur une réplique de réplication.
- Type de planification :
- Une fois (AT) — s'exécute à une date et heure spécifiques. Utilisez le sélecteur de date/heure pour choisir le moment.
- Récurrent (EVERY) — se répète toutes les N unités de temps. Configurez le nombre et l'unité (SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR).
- Début (récurrent) — quand l'événement récurrent commence à s'exécuter.
- Les dates et heures sont à l’heure du serveur, sans fuseau horaire : le sélecteur affiche ce que le serveur a enregistré, pas l’heure de votre appareil.
- Date de fin (récurrent, facultatif) — activez le bouton bascule pour définir quand il cesse de s'exécuter.
- Corps — code SQL exécuté par l'événement. Peut être un bloc BEGIN … END avec plusieurs instructions.
Appuyez sur Appliquer pour exécuter le DDL sur le serveur.
Créez un index sur une table avec un type, une méthode et des colonnes configurables.
Où le trouver : Catalogues › Nouvel index / Créer un index
L'Éditeur d'index s'ouvre depuis l'onglet Index des Catalogues : avec une table sélectionnée, le bouton Nouvel index de la barre d'outils ; sur un index qui existe déjà, le menu contextuel — clic droit sur macOS, appui long sur iPad — avec Modifier (formulaire visuel). L'arbre de schéma ne l'ouvre pas.
Champs disponibles :
- Nom — nom de l'index sur la table.
- Type :
- INDEX — index standard, autorise les doublons.
- UNIQUE — index unique, rejette les valeurs dupliquées dans la colonne ou la combinaison de colonnes indexées.
MySQLMariaDBAurora
- FULLTEXT — recherche en texte intégral. Uniquement pour les colonnes CHAR, VARCHAR ou TEXT et le moteur MyISAM/InnoDB (MySQL 5.6+).
- SPATIAL — données géospatiales. Uniquement pour les colonnes de type spatial, avec MyISAM ou InnoDB (MySQL 5.7+, MariaDB 10.2+).
MySQLMariaDBAuroraPostgreSQL
- Méthode (pour INDEX et UNIQUE) :
- BTREE — arbre B, la méthode la plus courante. Prend en charge les comparaisons de plages, LIKE 'abc%', ORDER BY.
- HASH — table de hachage, prend uniquement en charge les comparaisons d'égalité exacte.
MySQLMariaDBAurora
Seul le moteur MEMORY respecte HASH.
PostgreSQL
Un index UNIQUE ne peut pas être HASH, donc avec UNIQUE la méthode est BTREE. Les autres méthodes (gin, gist, brin) ne sont pas proposées.
SQL ServerOracle
Il n'y a pas de Méthode : CREATE INDEX n'a pas de clause USING.
- Colonnes — ajoutez les colonnes qui composent l'index avec le champ de nom et, optionnellement, la longueur du préfixe (nombre de caractères à indexer ; utile pour les longues colonnes TEXT ou VARCHAR).
SQL ServerPostgreSQLOracle
Il n'y a pas d'index par préfixe : la colonne entière est indexée, et le DDL généré le dit dans un commentaire.
La clé primaire est gérée depuis l'onglet Colonnes du Constructeur de tables, et non depuis cet éditeur.
Appuyez sur Appliquer pour exécuter CREATE INDEX sur le serveur.
ClickHouse
Avec ClickHouse, cet éditeur ne s'ouvre pas : l'onglet est Clés et il n'a pas de Nouvel index. Un index de saut s'ajoute ou se retire dans le Constructeur de tables, dans son onglet Index.
Apple Vision Pro : le menu contextuel s'ouvre en regardant la ligne et en pinçant sans relâcher.
Oracle
Avec Oracle le type est INDEX ou UNIQUE, et l’index se crée dans le schéma de sa table. Supprimer un index qui soutient une contrainte UNIQUE supprime la contrainte, et l’index avec elle.
Le champ de recherche filtre par nom la liste de l’onglet ouvert et se vide quand vous changez d’onglet ; rafraîchir relit la base, et la liste se recharge d’elle-même quand un autre outil de Calíope la modifie.
Où le trouver : Espace de travail › Outils › Catalogues
Le champ de recherche de la barre de Catalogues filtre par nom la liste de l’onglet ouvert —tables, vues, index, routines et le reste— et se vide quand vous changez d’onglet.
Le bouton Rafraîchir relit la base. Vous en aurez rarement besoin : quand un autre outil de Calíope crée ou supprime un objet de cette base, la liste se recharge d’elle-même. Ce qui est modifié en dehors de Calíope apparaît après avoir rafraîchi.
Le menu contextuel d’une table, d’un index, d’une routine ou d’un événement propose de le supprimer ; la confirmation montre le DROP que le moteur exécutera.
Où le trouver : Espace de travail › Outils › Catalogues
Le menu contextuel d’une table, d’un index, d’une routine ou d’un événement propose de le supprimer. Avant de faire quoi que ce soit, Calíope montre l’instruction DROP que le moteur exécutera et vous demande de confirmer ; si la connexion porte une étiquette d’environnement qui demande confirmation, la boîte de dialogue la nomme.
Les vues, les triggers et les séquences ne se suppriment pas depuis Catalogues : supprimez-les depuis l’Éditeur SQL.
Avec le cadenas fermé, l’option apparaît désactivée ; dans une session qui ne peut que lire, elle n’est pas dessinée.