On me demande souvent la liste des différences existantes entre PostgreSQL et MySQL. Je vais donc tenter de faire une liste des fonctionnalités existantes dans PostgreSQL, et pas dans MySQL :
- L'opérateur
||
, pour la concaténation de chaines de caractères, qui fait parti du standard SQL. - Un type de données booléen.
- Les contraintes de vérifications sur les colonnes, et sur une table, avec le mot-clé
CHECK
. - Les clés étrangères ne sont présentes qu'avec le moteur de stockage InnoDb.
- Le fait de pouvoir différer les vérifications des clés étrangères.
- Les déclencheurs sur les ordres (
For each statement
), et non pas seulement sur les tuples (For each row
). - Les ordres
DDL
compatiblesACID
. - Les domaines : types de données avec des contraintes.
- Les aggrégats définis par l'utilisateur.
- Le choix du langage de procédures stockées : Java, Php, Python, Perl, C, Ruby, Sh, ...
- Les règles de réecritures des requêtes.
- Un auto-incrément mutualisé entre plusieurs tables.
- Des opérateurs et transtypages définis par l'utilisateur.
- La notion d'espace de noms (schémas). Cette notion est confondue avec celle de base de données dans MySQL, alors qu'elle est bien distincte dans le cas de PostgreSQL.
- Les espaces de données (tablespace).
- L'héritage de tables.
- Les types d'index définis pas l'utilisateur.
Cette liste est dans le désordre, et certainement pas finie...