Aide PostgreSQL
Transcription
Aide PostgreSQL
PostgreSQL Interpréteur de commande postgreSQL Il est nécessaire d’être sur codd pour appeler l’interpréteur de commande postgreSQL. La commande pour lancer l'interpréteur postgreSQL est psql. Le nom de la base à laquelle vous vous connecté est BD<login turing sans le 1>. Votre identifiant et votre mot de passe sont votre identifiant turing moins le 1 devant. Exemple pour l’utilisateur 1martinp $> psql -U martinp BDmartinp mot de passe: martinp Quelques commandes : \q : quitter postgreSQL \d <table> : équivalent du DESCRIBE de sqlplus. Affiche le nom des colonnes et leur type pour une table postgres \h : liste des commandes SQL \h <nom commande> : permet d'afficher la syntaxe complète d'une commande \? : liste des commandes de l'interpréteur postgreSQL \cd <rep> : changement de répertoire \i <file> : exécuter les commandes d'un fichier SQL Documentation postgreSQL http://docs.postgresqlfr.org/8.0/ Changement de mot de passe ALTER USER <login> WITH PASSWORD '<nouveau mot de passe>'; Dictionnaire de donnée Les tables du dictionnaire commencent par pg_. Pour obtenir la liste complète des tables consulter http://docs.postgresqlfr.org/8.0/catalogs.html Pour obtenir la liste des tables, on peut aussi utiliser: \d : affiche les tables créées par l'utilisateur. \dS : affiche toutes les tables de la base. Différences ORACLE et POSTGRESQL Tests de fonction La table DUAL n'existe pas sous postgreSQL. Pour tester des fonctions ou afficher la valeur de variables, il suffit de faire des requêtes SQL sans clause FROM : exemple: SELECT initcap('mARTIN'); -> 'Martin' Différence entre les types oracle et postgreSQL Type numérique INTEGER existe pour les deux SGBD. Oracle: NUMBER(p,s) <-> postgreSQL: Type caractère CHAR(n), pour les chaînes de taille fixe, existe pour les deux SGBD. Oracle: VARCHAR2(n) <-> postgreSQL: NUMERIC(p,S) VARCHAR(N) Type date Le type DATE Oracle contient une date précise à la seconde près. Le type DATE postgreSQL contient une date précise au jour près. Le type date Oracle est similaire au type TIMESTAMP de postgreSQL. Opérations autorisés sur les dates Comme sous Oracle, il est possible de soustraire ou d'ajouter des jours à une date ex: -> SELECT date '29-nov-2008' + 1; 2008-11-30 Pour soustraire ou ajouter des intervalles de temps à un attribut de type TIMESTAMP, il faudra utiliser une valeur de type INTERVAL. SELECT timestamp '29-nov-2008' + interval '1 day'; -> 2008-11-30 00:00:00 ex: Variables système La variable CURRENT_DATE contient la date courante (DATE, précis au jour près). La variable CURRENT_TIMESTAMP contient la date courante (TIMESTAMP, précis à la seconde près). Fonction DECODE La fonction DECODE n'existe pas dans postgreSQL. Il est nécessaire d'utiliser la conditionnelle CASE (conforme au standard SQL): ex: Oracle: SELECT DECODE(numPresence, 0, 'Absent', 1, '1 séance', numPresence || ' séances') FROM presenceModule; PostgreSQL: SELECT CASE WHEN numPresence=0 THEN 'Absent' WHEN value=1 THEN '1 séance' ELSE numPresence || ' séances' END FROM presenceModule; Remplacement de la valeur nulle NVL n'existe pas sous postgreSQL. L'équivalent postgreSQL est la fonction COALESCE (conforme au standard SQL): ex: SELECT COALESCE(note,0) FROM presenceModule; La valeur NULL pour l’attribut note des n-uplets sélectionnés est remplacés par 0. Jointure externe La syntaxe '+=' pour les jointures externes, autorisée sous Oracle, n'est pas disponible sous postgreSQL. Pour effectuer une jointure externe entre table, il est nécessaire d'utiliser la syntaxe conforme au standard SQL (disponible aussi Oracle), LEFT OUTER JOIN et RIGHT OUTER JOIN: ex: SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.id=table2.id; Tous les n-uplets de table1 apparaitront dans l'ensemble des n-uplets résultats. Les n-uplets de table1 pour lesquelles il n'est pas possible de faire une jointure avec des n-uplets de la table2 auront NULL comme valeur pour les attributs de table2. SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.id=table2.id; Tous les n-uplets de table2 apparaitront dans l'ensemble des n-uplets résultats. Les n-uplets de table2 pour lesquelles il n'est pas possible de faire une jointure avec des n-uplets de la table1 auront NULL comme valeur pour les attributs de table1.
Documents pareils
Ora2Pg - PostgreSQL Sessions
Entêtes et paramètres des triggers,
séparation du code dans les fonctions
Conversion des types des variables et
réécriture dans un bloc DECLARE
Réécriture des entètes et paramètres des
fonctions