PostgreSQL vs. MySQL

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 compatibles ACID.
  • 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...

Haut de page