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) |