PostgreSQL vs MySQL
A continuación, se enumeran algunas diferencias entre los dialectos del DDL de MySQL y PostgreSQL
Crear esquemas y bases de datos
En MySQL SCHEMA y DATABASE son sinónimos, se puede usar una palabra o la otra.
En PostgreSQL dentro de un servidor tenemos varias DATABASES, dentro de cada una puede haber varios SCHEMA.
MySQL
En MySQL para crear una base de datos o esquema haríamos
CREATE DATABASE IF NOT EXISTS MiBaseDeDatos;También valdría hacerlo con la palabra SCHEMA
CREATE SCHEMA BASE IF NOT EXISTS MiBaseDeDatos;PostgreSQL
En cambio en PostgreSQL al no ser lo mismo la base de datos y el esquema no serían intercambiables. Lo haríamos siempre de esta manera
CREATE SCHEMA IF NOT EXISTS MiBaseDeDatos;Eliminar un esquema
MySQL
En MySQL para eliminar una base de datos o esquema haríamos
DROP DATABASE IF EXISTS MiBaseDeDatos;También valdría hacerlo con la palabra SCHEMA
DROP SCHEMA BASE IF EXISTS MiEsquema;PostgreSQL
En cambio en PostgreSQL al no ser lo mismo la base de datos y el esquema no serían intercambiables. Lo haríamos siempre de esta manera
DROP SCHEMA IF EXISTS MiEsquema CASCADE;Seleccionar un esquema
PostgreSQL
No se puede seleccionar un esquema, se debe especificar el esquema en cada consulta
CREATE TABLE MiEsquema.Product(
Name VARCHAR(30) PRIMARY KEY,
Calories INT NOT NULL,
Price NUMERIC(8, 2) NOT NULL,
BagType CHAR(3) NOT NULL
);MySQL
Se usa la sentencia USE
USE MiEsquema;Comentarios
MySQL
En MySQL se harían se puede usar tanto -- como el símbolo #
-- Esto es un comentario en MySQL
# Esto tambiénSin embargo el estándar SQL original es con guiones.
PostgreSQL
En cambio en PostgreSQL se haría con --
-- Esto es un comentario en PostgreSQLColumnas auto-incrementales
MySQL
En MySQL se usa AUTO_INCREMENT
CREATE TABLE Person(
Id INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100) NOT NULL
);PostgreSQL
En cambio en PostgreSQL se usa SERIAL en lguar de INT AUTO_INCREMENT
CREATE TABLE Person(
Id SERIAL PRIMARY KEY,
Name VARCHAR(100) NOT NULL
);Last updated