Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pourquoi Vous Devez Utiliser MySQL

Pourquoi Vous Devez Utiliser MySQL

Présentation humoristique en faveur de PostgreSQL

Grégoire Pineau

August 27, 2019
Tweet

More Decks by Grégoire Pineau

Other Decks in Programming

Transcript

  1. Un schéma simple pour commencer CREATE TABLE author ( name

    VARCHAR(10) DEFAULT NULL ); INSERT INTO author ( name ) VALUES ( 'Gregoire' ), ( 'Grégoire' ), ( 'Gregory' ), ( 'Grant' );
  2. On vérifie les données mysql> select * from author order

    by name; +----------+ | name | +----------+ | Grant | | Gregoire | | Gregory | | Grgoire | +----------+ 4 rows in set (0.00 sec) postgres=# select * from author order by name; name ---------- Grant Gregoire Grégoire Gregory (4 rows)
  3. On ajoute d’autres données mysql> insert into author (name) values

    ('a very very long name'); Query OK, 1 row affected, 1 warning (0.10 sec) mysql> select * from author ; +------------+ | name | +------------+ [...] | a very ver | +------------+ 5 rows in set (0.01 sec) postgres=# INSERT INTO author (name) VALUES ('a very very very long name'); ERROR: value too long for type character varying(10)
  4. Une petite modification de schéma mysql> ALTER TABLE author ADD

    COLUMN description text NOT NULL; Query OK, 0 rows affected (0.11 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM author ; +------------+-------------+ | name | description | +------------+-------------+ | Gregoire | | [...] postgres=# ALTER TABLE author ADD COLUMN description text NOT NULL; ERROR: column "description" contains null values
  5. Et l’UTF-8 ? mysql> select ''; +--+ | | +--+

    | | +--+ 1 row in set (0.00 sec) # Note: J’ai utilisé l’option --default-character-set=utf8 postgres=# select ''; ?column? ---------- (1 row)
  6. Il y a plus de types • SQL standard •

    JSON (8+, 9/2017) • GEO (8+, 9/2017) • SQL standard • JSON (9.3, 9/2013) • GEO • Bool • Uuid • XML • hstore • network (ip, cidr, mac) • full text • composite • range • user defined
  7. Et sinon ? • MySQL ne supporte pas les Common

    Table Expression (<8) • MySQL ne supporte pas les Windows Fonctions en (<8) • On ne peut pas changer le schéma dans une transaction • MySQL n’a pas de système de “Foreign data wrapper” • Le CLI est affreux • MySQL ne respecte pas SQL92 ◦ Mais qui la respecte ? • MySQL a été “repris” par Oracle • Le développement est fait en interne