Codemaker SQL

SQL Tema 4

Inserción y edición de datos

Una vez creada la estructura, toca empezar a añadir y modificar datos en las tablas. Los tres comandos para cambiar datos son:

ComandoQué haceNecesita WHERE
INSERTAñade filas nuevasNo
UPDATECambia datos de filas que ya existenSí, o cambia todas las filas
DELETEBorra filasSí, o borra todas las filas

Añadir registros (INSERT)#

Se indican las columnas donde se van a introducir los datos y, a continuación, los datos, en el mismo orden:

SQL
INSERT INTO alumnos (nombre, edad, telefono, email, nivel, cuota)
VALUES ('Antonio', 17, '655443322', 'antonio@correo.es', 'DEV', 50);

No hace falta dar el id_alumno: como es AUTOINCREMENT, la base de datos lo pone sola.

También se pueden añadir varias filas de golpe, separándolas con comas. Estos son los alumnos que usaremos en el resto de los apuntes:

SQL
INSERT INTO alumnos (nombre, edad, telefono, email, nivel, cuota) VALUES
('María', 16, '666553344', 'maria@correo.es', 'DEV', 45),
('Juan', 13, '666554433', 'juan@correo.es', 'Senior', 40),
('Elena', 10, '666557788', 'elena@correo.es', 'Junior', 35),
('Pedro', 12, '611223344', 'pedro@correo.es', 'Senior', 40);

Con eso, la tabla alumnos queda así:

id_alumnonombreedadtelefonoemailnivelcuota
1Antonio17655443322antonio@correo.esDEV50.0
2María16666553344maria@correo.esDEV45.0
3Juan13666554433juan@correo.esSenior40.0
4Elena10666557788elena@correo.esJunior35.0
5Pedro12611223344pedro@correo.esSenior40.0

Borrar registros (DELETE)#

Se usa para eliminar filas de la tabla. La sintaxis:

SQL
DELETE FROM nombre_tabla
WHERE condicion;

Ejemplo en Codemaker: «Pedro ha decidido dejar el curso y queremos borrar sus datos».

SQL
DELETE FROM alumnos
WHERE id_alumno = 5;

Cuidado

Borrado total: si ejecutas DELETE FROM alumnos; (sin el WHERE), vaciarás la tabla por completo. La estructura de la tabla (las columnas) seguirá existiendo, pero estará vacía.

Actualizar registros (UPDATE)#

Se usa cuando un dato ya existe pero ha cambiado. Por ejemplo, un alumno sube de nivel o cambia su número de teléfono. La sintaxis:

SQL
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE condicion;

Ejemplo en Codemaker: «Juan ha cumplido 14 años y pasa a nivel Master».

SQL
UPDATE alumnos
SET edad = 14, nivel = 'Master'
WHERE id_alumno = 3;

Cuidado

El peligro del WHERE: si olvidas poner el WHERE, SQL no te preguntará. Pondrá a todos los alumnos de la academia con 14 años y nivel Master.

Consejo

En el WHERE es mejor usar la clave primaria (id_alumno = 3) que el nombre (nombre = 'Juan'): puede haber dos alumnos que se llamen Juan, pero nunca dos con el mismo id_alumno.

Tras el DELETE y el UPDATE, la tabla queda así. Es la que usaremos en los siguientes temas:

id_alumnonombreedadtelefonoemailnivelcuota
1Antonio17655443322antonio@correo.esDEV50.0
2María16666553344maria@correo.esDEV45.0
3Juan14666554433juan@correo.esMaster40.0
4Elena10666557788elena@correo.esJunior35.0

Errores frecuentes#

MensajeQué significaCómo se arregla
1 values for 2 columnsHay más columnas que valores (o al revés)Pon un valor por cada columna, en el mismo orden
NOT NULL constraint failed: alumnos.nombreFalta un dato obligatorioIncluye esa columna y su valor en el INSERT
UNIQUE constraint failed: alumnos.emailEse email ya lo tiene otro alumnoCada valor de una columna UNIQUE tiene que ser distinto
CHECK constraint failed: edad > 0El valor no cumple la condición de la tablaRevisa el dato: aquí, una edad negativa o cero
unrecognized token: "'Ana"Falta cerrar una comillaLos textos van entre dos comillas simples: 'Ana'
Se han cambiado o borrado todas las filasUn UPDATE o DELETE sin WHERENo tiene arreglo desde SQL: por eso conviene escribir primero el WHERE