Añadiendo registros: INSERT INTO
Hasta ahora hemos consultado datos existentes. Con INSERT INTO puedes añadir nuevos registros a una tabla.
Sintaxis básica
INSERT INTO tabla (columna1, columna2, ...)
VALUES (valor1, valor2, ...);Si insertas valores para todas las columnas en orden, puedes omitir los nombres:
INSERT INTO tabla
VALUES (valor1, valor2, valor3, ...);Insertar múltiples filas
Puedes insertar varias filas en una sola sentencia separándolas por comas:
INSERT INTO tabla VALUES
(valor1a, valor2a, ...),
(valor1b, valor2b, ...);AUTOINCREMENT en la clave primaria
Cuando defines una columna como INTEGER PRIMARY KEY, SQLite le asigna automáticamente un valor incremental si no lo especificas al insertar. Esto es muy práctico para columnas de tipo id:
INSERT INTO videogames (title, developer, year, playtime_hours)
VALUES ('Elden Ring', 'FromSoftware', 2022, 150);Al omitir el id, SQLite asigna automáticamente el siguiente valor disponible (en este caso, 13). Esto evita conflictos con ids duplicados y simplifica las inserciones.
INSERT OR IGNORE / INSERT OR REPLACE
Cuando intentas insertar un registro que viola una restricción UNIQUE o PRIMARY KEY, SQL da un error. SQLite ofrece dos formas de manejar estos conflictos:
INSERT OR IGNORE simplemente ignora la fila que causa el conflicto, sin generar error:
INSERT OR IGNORE INTO videogames (id, title, developer, year, playtime_hours)
VALUES (1, 'Otro juego', 'Otro dev', 2020, 50);
-- No hace nada porque ya existe id = 1INSERT OR REPLACE reemplaza la fila existente con los nuevos datos:
INSERT OR REPLACE INTO videogames (id, title, developer, year, playtime_hours)
VALUES (1, 'Zelda Remaster', 'Nintendo', 2024, 30);
-- Sustituye el registro con id = 1Estos mecanismos son muy útiles en scripts de carga de datos donde no quieres que un duplicado detenga toda la operación.
Nuestra tabla
Partimos de la tabla videogames con 12 registros:
| id | title | developer | year | playtime_hours |
|---|---|---|---|---|
| 1 | The Legend of Zelda | Nintendo | 1986 | 20 |
| 2 | Super Mario Bros. | Nintendo | 1985 | 10 |
| 3 | Final Fantasy VII | Square Enix | 1997 | 40 |
| … | … | … | … | … |
| 12 | God of War | Santa Monica Studio | 2018 | 25 |
Ejemplo
INSERT INTO videogames (id, title, developer, year, playtime_hours)
VALUES (13, 'Elden Ring', 'FromSoftware', 2022, 150);