Tabla de Contenidos

02 - SQL: DDL

El DDL (*Data Definition Language*) define la estructura de la base de datos: crear, modificar y eliminar tablas y sus restricciones.

1. Tipos de datos

Tipo Uso
BIGINT, INT Números enteros (identificadores, cantidades)
DECIMAL(10,2) Números exactos con decimales (precios)
VARCHAR(n) Texto de longitud variable limitada
TEXT Texto largo (descripciones)
BOOLEAN TRUE/FALSE
DATE Fecha sin hora
TIMESTAMP Fecha y hora

Para dinero se usa DECIMAL, nunca FLOAT ni DOUBLE: son aproximados.

2. CREATE TABLE

CREATE TABLE book (
    id             BIGINT AUTO_INCREMENT PRIMARY KEY,
    title          VARCHAR(200) NOT NULL,
    isbn           VARCHAR(13) UNIQUE,
    price          DECIMAL(10,2) NOT NULL DEFAULT 0.00,
    published_date DATE,
    publisher_id   BIGINT,
    FOREIGN KEY (publisher_id) REFERENCES publisher (id)
);

Restricción Función
PRIMARY KEY Identifica cada fila; única y no nula
NOT NULL Columna obligatoria
UNIQUE No admite valores repetidos
DEFAULT Valor cuando no se indica
FOREIGN KEY Referencia a otra tabla; mantiene la integridad referencial
AUTO_INCREMENT Genera el siguiente valor automáticamente

La integridad referencial impide insertar un libro con publisher_id inexistente o borrar una editorial que tenga libros (salvo que se configure ON DELETE CASCADE o SET NULL).

3. ALTER y DROP

ALTER TABLE book ADD COLUMN synopsis TEXT;
ALTER TABLE book MODIFY COLUMN title VARCHAR(300) NOT NULL;
ALTER TABLE book DROP COLUMN synopsis;

DROP TABLE book;            -- elimina tabla y datos
TRUNCATE TABLE book;        -- vacía los datos, conserva la estructura

4. Índices

Un índice acelera las consultas por una columna concreta, al precio de espacio y escritura algo más lenta:

CREATE INDEX idx_book_title ON book (title);

Las claves primaria y foráneas crean índices automáticamente; los índices extra se añaden cuando las consultas lo piden.

5. Herramientas

Las sentencias DDL se ejecutan desde un cliente como DBeaver o la consola de mysql. En un proyecto real, el esquema se versiona con migraciones (p. ej. Flyway): scripts SQL numerados que se aplican en orden:

src/main/resources/db/migration/
├── V1__create_publisher_and_book.sql
└── V2__add_book_author_table.sql

Prueba el DDL contra la misma versión de MariaDB que usará la aplicación. Un script que funciona en una herramienta gráfica puede fallar en el servidor real si la sintaxis o el motor difieren.