Codemaker SQL

SQL Tema 3

Creación de tablas

Una vez que tenemos claras nuestras entidades (e incluso hemos dibujado el diagrama), el siguiente paso es escribir el código para que la base de datos cobre vida. Para ello usamos los comandos de SQL que crean y borran tablas (se llaman comandos DDL, Data Definition Language).

Comandos fundamentales#

CREATE TABLE#

Es el comando principal para definir la estructura de una tabla. La sintaxis básica es:

SQL
CREATE TABLE nombre_tabla (
    columna1 tipo_dato restricciones,
    columna2 tipo_dato restricciones,
    ...
);

DROP TABLE#

Borra una tabla por completo (y todos sus datos). Úsalo con cuidado.

SQL
DROP TABLE alumnos;

Tipos de datos#

Al igual que en Java, en SQL debemos decirle a la base de datos qué tipo de información guardará cada columna. Estos son los de SQLite:

Qué guardaSQLiteMySQLEjemploEquivalente en Java
Números enteros (IDs, edades)INTEGERINT17int (o long)
Números decimalesREALDOUBLE, o DECIMAL(6, 2) para dinero45.5double
TextoTEXTVARCHAR(n), donde n es el máximo de caracteres'María'String

Dos casos que SQLite no tiene como tipo propio:

Para guardar…Se usaEjemplo
Verdadero o falsoINTEGER, con 1 o 0activo INTEGER
FechasTEXT, con el formato año-mes-día'2026-10-02'

Nota

En SQL los textos van entre comillas simples: 'María'. Las comillas dobles se reservan para otras cosas.

Restricciones#

Las restricciones aseguran que los datos sean correctos y sigan las reglas del negocio:

RestricciónQué aseguraEjemplo
PRIMARY KEYIdentificador único: no puede repetirse ni estar vacíoid_alumno INTEGER PRIMARY KEY
AUTOINCREMENTEl ID se genera solo (+1) cada vez que añadimos una filaid_alumno INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULLEl campo siempre tiene un valornombre TEXT NOT NULL
UNIQUENo hay dos filas con el mismo valoremail TEXT UNIQUE
CHECKEl valor cumple una condiciónedad INTEGER CHECK (edad > 0)
FOREIGN KEYConecta una tabla con otra (lo veremos en el tema de tablas relacionadas)FOREIGN KEY (id_alumno) REFERENCES alumnos(id_alumno)

Nota

En MySQL, otra base de datos muy usada, AUTOINCREMENT se escribe AUTO_INCREMENT. En SQLite, sin la barra baja.

Ejemplo práctico: la tabla de alumnos de Codemaker#

CREATE TABLE alumnos (
    id_alumno INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL,
    edad INTEGER CHECK (edad > 0),
    telefono TEXT,
    email TEXT UNIQUE,
    nivel TEXT CHECK (nivel IN ('Junior', 'Senior', 'Master', 'DEV')),
    cuota REAL
);

Las diferencias están en los tipos (INT, VARCHAR, DECIMAL) y en AUTO_INCREMENT, con barra baja. El resto es igual.

Cuidado

Fíjate en que la última columna no lleva coma antes del paréntesis de cierre. Una coma de más ahí es el error más habitual al crear tablas.

Errores frecuentes#

MensajeQué significaCómo se arregla
near ")": syntax errorCasi siempre, una coma después de la última columnaQuita la coma de la última línea antes del )
table alumnos already existsIntentas crear una tabla que ya existeSi quieres empezar de cero, bórrala antes con DROP TABLE alumnos;
no such table: alumnosLa tabla no existe en esta base de datosComprueba el nombre y que el script está conectado a la base de datos correcta