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

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

Plus en détail