Creando tablas: CREATE TABLE
Con CREATE TABLE defines la estructura de una nueva tabla, especificando sus columnas, tipos de datos y restricciones.
CREATE TABLE Sintaxis básica
CREATE TABLE nombre_tabla (
columna1 tipo restricciones,
columna2 tipo restricciones,
...
);Tipos de datos comunes
| Tipo | Descripción |
|---|---|
INTEGER | Números enteros |
TEXT | Cadenas de texto |
REAL | Números decimales |
Restricciones
| Restricción | Descripción |
|---|---|
PRIMARY KEY | Identificador único de cada fila |
NOT NULL | La columna no puede tener valores nulos |
UNIQUE | Cada valor debe ser único en la columna |
DEFAULT | Valor por defecto si no se especifica uno |
CHECK | Valida que el valor cumpla una condición |
La restricción CHECK te permite definir reglas de validación directamente en la tabla. Por ejemplo, para asegurar que el nivel de un jugador sea siempre positivo:
level INTEGER NOT NULL CHECK(level > 0)IF NOT EXISTS
Si intentas crear una tabla que ya existe, SQL dará un error. Para evitarlo, usa IF NOT EXISTS:
CREATE TABLE IF NOT EXISTS players (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
level INTEGER NOT NULL DEFAULT 1
);Con IF NOT EXISTS, la sentencia simplemente no hace nada si la tabla ya existe. Esto es muy útil en scripts de inicialización que pueden ejecutarse más de una vez.
AUTOINCREMENT con INTEGER PRIMARY KEY
En SQLite, cuando defines una columna como INTEGER PRIMARY KEY, automáticamente se convierte en un campo auto-incrementable. Si no especificas un valor al insertar, SQLite asigna el siguiente número disponible:
CREATE TABLE players (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
INSERT INTO players (name) VALUES ('Ana'); -- id = 1 (automático)
INSERT INTO players (name) VALUES ('Carlos'); -- id = 2 (automático)No necesitas escribir AUTOINCREMENT explícitamente. De hecho, SQLite recomienda no hacerlo a menos que necesites garantizar que los ids nunca se reutilicen, incluso después de borrar registros.
Ejemplo completo
CREATE TABLE players (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
level INTEGER NOT NULL DEFAULT 1,
score INTEGER DEFAULT 0
);Claves foráneas
Las claves foráneas relacionan tablas entre sí:
CREATE TABLE scores (
id INTEGER PRIMARY KEY,
player_id INTEGER NOT NULL,
game_id INTEGER NOT NULL,
points INTEGER NOT NULL,
FOREIGN KEY (player_id) REFERENCES players(id)
);