2.8 Gestión de tablas

2.8.1 Creación de tablas

CREATE TABLE table_name(
  column1 datatype [constraints],
  column2 datatype [constraints],
  ...
  columnN datatype [constraints],
  [table_constraints])
);

2.8.1.1 Tipos de datos

Propósito / tipo lógico SQLite MySQL PostgreSQL
Enteros (números sin decimales) INTEGER / INT / SMALLINT / BIGINT TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT SMALLINT, INTEGER, BIGINT
Números reales / decimales REAL / FLOAT / DOUBLE / NUMERIC FLOAT, DOUBLE, DECIMAL(p,s) REAL, DOUBLE PRECISION, NUMERIC(p,s)
Texto / cadenas TEXT, CHAR(n), VARCHAR(n) CHAR(n), VARCHAR(n), TEXT CHAR(n), VARCHAR(n), TEXT
Valores booleanos BOOLEAN BOOLEAN / TINYINT(1) (interpreta 0/1) BOOLEAN (nativo)
Fechas y horas DATE, TIME, DATETIME, TIMESTAMP DATE, TIME, DATETIME, TIMESTAMP DATE, TIME, TIMESTAMP, INTERVAL
Información binaria BLOB BLOB, BINARY, VARBINARY BYTEA

2.8.1.2 Restricciones a nivel de columna:

Restricción Descripción Ejemplo
PRIMARY KEY Clave primaria id INTEGER PRIMARY KEY
AUTOINCREMENT Hace que un INTEGER PRIMARY KEY aumente siempre id INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL No permite valores nulos nombre TEXT NOT NULL
UNIQUE Impide valores duplicados email TEXT UNIQUE
CHECK (condición) Impone una condición lógica edad INTEGER CHECK (edad >= 0)
DEFAULT valor Asigna un valor por defecto si no se especifica pais TEXT DEFAULT 'España'
REFERENCES tabla(columna) Define una clave foránea artista_id INTEGER REFERENCES Artista(id)
  • En una clave foránea se puede especificar el trigger ON DELETE para determina qué ocurre cuando se elimina la tupla referenciada:
    • CASCADE: Se borran todas las filas que referencian a la tupla eliminada
    • SET NULL: Se pone a nulo la clave foránea
    • SET DEFAULT: Se pone la clave foránea al valor definido como DEFAULT
    • RESTRICT: Impide eliminar la fila referenciada (valor por defecto)
  • Con ninguna de estas acciones la base de datos puede quedar en un estado inconsistente

2.8.1.3 Restricciones a nivel de tabla:

Tipo Descripción Ejemplo
PRIMARY KEY (col1, col2) Clave primaria compuesta PRIMARY KEY (id, nombre)
UNIQUE (col1, col2) Combinación única UNIQUE (email, pais)
CHECK (condición) Condición general CHECK (precio > 0 OR descuento IS NOT NULL)
FOREIGN KEY (col) REFERENCES … Clave foránea explícita FOREIGN KEY (artista_id) REFERENCES Artista(id)

2.8.2 Creación de índices

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);

2.8.3 Borrado de tablas

DROP TABLE table_name;

2.8.4 Modificación de tablas

ALTER TABLE table_name
DROP INDEX index_name;

ALTER TABLE table_name
{ADD|DROP|MODIFY} column_name {data_ype};

ALTER TABLE table_name RENAME TO new_table_name;