Saltar a contenido

Diferencias entre gestores - Migración

Características de los gestores

SQLite

  • Es un gestor embebido
  • Trabaja con archivo único
  • Es ideal para aplicaciones embebidas y prototipos
  • No sirve para aplicaciones de gran escala o de alto rendimiento

MySQL

  • Es un gestor basado en servidor
  • Puede trabajar con múltiples archivos
  • Es ideal para aplicaciones de gran escala o de alto rendimiento

PostgreSQL

  • Es un gestor basado en servidor
  • Puede trabajar con múltiples archivos
  • Es ideal para aplicaciones de gran escala o de alto rendimiento
  • Tiene extensiones propias

SQLServer

  • Es de pago
  • Es un gestor basado en servidor
  • Puede trabajar con múltiples archivos
  • Es ideal para aplicaciones de gran escala o de alto rendimiento
  • Tiene extensiones propias

Migracion entre gestores

Estructura:

  • Exportar la base de datos en formato SQL;
  • Abrir y modificar las consultas para adaptarla al nuevo gestor;
  • Importar la base de datos modificada para crear la estructura de tablas;

Datos:

  • Exportar cada tabla, preferiblemente en formato CSV (Comma Separated Values);
  • Importar cada tabla en el nuevo gestor.

  • Se adaptan las consultas para crear el formato de tablas en el nuevo gestor de base de datos;

  • Para migrar los datos se recomienda exportar cada tabla de la base de datos en archivos CSV e importarlos con el nuevo gestor.

Comandos

CREATE

CREATE TABLE nombre_tabla(columna1 tipo1, columna2 tipo2, ...);
CREATE TABLE nombre_tabla(columna1 tipo1, columna2 tipo2, ...) ENGINE = InnoDB;
CREATE TABLE nombre_tabla(columna1 tipo1, columna2 tipo2, ...);
CREATE TABLE nombre_tabla(columna1 tipo1, columna2 tipo2, ...);

MySQL requiere que se indique el ENGINE.

CREATE (con clave primaria)

CREATE TABLE ejemplo (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre VARCHAR(50) NOT NULL, 
    apellido VARCHAR(50) NOT NULL
)
CREATE TABLE ejemplo(
    id INT NOT NULL AUTO_INCREMENT,
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
)
CREATE TABLE ejemplo(
    id INT IDENTITY(1,1) PRIMARY KEY, 
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(50) NOT NULL,
)
CREATE TABLE nombre_tCREATE TABLE ejemplo(
    id SERIAL PRIMARY KEY ,
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(50) NOT NULL
)

RIGHT JOIN

SELECT * FROM tabla2 LEFT JOIN tabla1
ON tabla2.columna = tabla1.columna;
SELECT * FROM tabla1 RIGHT JOIN tabla2
ON tabla1.columna = tabla2.columna;
SELECT * FROM tabla1 RIGHT JOIN tabla2
ON tabla1.columna = tabla2.columna;
SELECT * FROM tabla1 RIGHT JOIN tabla2
ON tabla1.columna = tabla2.columna;

El RIGHT JOIN no está implementado en SQLite. Para los otros gestores el código es igual.

Full JOIN

-- LEFT JOIN
SELECT * FROM tabla1 LEFT JOIN tabla2
ON tabla1.columna = tabla2.columna;

UNION

-- LEFT JOIN INVERSO
SELECT * FROM tabla2 LEFT JOIN tabla1
ON tabla2.columna = tabla1.columna;
-- LEFT JOIN
SELECT * FROM tabla1 LEFT JOIN tabla2
ON tabla1.columna = tabla2.columna;

UNION

-- RIGHT JOIN
SELECT * FROM tabla1 RIGHT JOIN tabla2
ON tabla1.columna = tabla2.columna;
SELECT * FROM tabla1 FULL OUTER JOIN tabla2
ON tabla1.columna = tabla2.columna;
SELECT * FROM tabla1 FULL OUTER JOIN tabla2
ON tabla1.columna = tabla2.columna;

Funcion NOW()

Esta función lee la hora actual del sistema con formato

-- REVISAR
SELECT NOW()
SELECT NOW()
SELECT GETDATE()
SELECT NOW()

CEIL() y CEILING(), FLOOR(), ROUND()

-- REVISAR
CEIL(numero)
CEILING(numero)
CEILING(numero)
CEIL(numero)

LIMIT

SELECT * FROM tabla LIMIT n;
SELECT * FROM tabla LIMIT n;
SELECT TOP n * FROM tabla;
SELECT * FROM tabla LIMIT n;

LIMIT con OFFSET

SELECT * FROM tabla LIMIT cantidad OFFSET inicio;
SELECT * FROM tabla LIMIT cantidad OFFSET inicio;
SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT ALL)) AS RowNum
    FROM tabla 
) AS Resultado
WHERE Resultado.RowNum BETWEEN inicio + 1 AND inicio + cantidad;
SELECT * FROM tabla LIMIT cantidad OFFSET inicio;

LIKE y ELIKE

LIKE no distingue mayúsculas de minúsculas. LIKE funciona igual para todos. ELIKE distingue mayúsculas de minúsculas. Sólo disponible con PosgreSQL.