Operaciones CRUD¶
El concepto de operaciones CRUD es fundamental en el desarrollo de aplicaciones que involucran la gestión de datos. CRUD es un acrónimo que se refiere a las cuatro funciones básicas que se deben implementar en cualquier sistema de gestión de datos persistente:
Uso de comillas en SQL
En SQL, es importante saber cuándo usar comillas simples y cuándo no:
- Usa comillas simples
'
para comparar valores de texto (strings). - No uses comillas dobles para textos en MySQL, ya que pueden provocar errores o comportamientos inesperados.
Correcto:
SELECT * FROM pasajero WHERE nombre = 'Luis';
Incorrecto:
SELECT * FROM pasajero WHERE nombre = "Luis"; -- Puede fallar en MySQL
También recuerda que los números no llevan comillas:
Correcto:
SELECT * FROM pasajero WHERE edad > 30;
Incorrecto
SELECT * FROM pasajero WHERE edad > '30'; -- Aunque puede funcionar, no es buena práctica
En resumen:
- Usa 'texto'
para valores tipo texto.
- No pongas comillas para valores numéricos.
- Evita usar comillas dobles en MySQL.
1. Crear (C)¶
Esta operación se refiere a la capacidad de añadir nuevos registros o datos al sistema. En el contexto de una base de datos, esto se traduce típicamente en insertar nuevas filas en una tabla. Ejemplo en PHP utilizando una sentencia SQL INSERT
:
$sql = "INSERT INTO usuarios (nombre, email) VALUES ('Juan', 'juan@example.com')";
Este comando añadiría un nuevo usuario con nombre "Juan" y correo electrónico "juan@example.com" a la tabla usuarios.
2. Leer (R)¶
La operación de lectura permite recuperar datos del sistema. Esto puede ser tan simple como obtener un único valor o tan complejo como ejecutar una consulta que recupere grandes conjuntos de datos basados en criterios específicos. Ejemplo en PHP con una sentencia SQL SELECT
:
$sql = "SELECT * FROM usuarios WHERE nombre = 'Juan'";
Este comando recuperaría todos los datos de los usuarios cuyo nombre sea "Juan".
3. Actualizar (U)¶
Actualizar se refiere a modificar datos existentes en el sistema. Esta operación es crucial para mantener la relevancia y la precisión de la información almacenada. Ejemplo en PHP utilizando una sentencia SQL UPDATE
:
$sql = "UPDATE usuarios SET email = 'nuevoemail@example.com' WHERE nombre = 'Juan'";
Este comando actualizaría el correo electrónico del usuario llamado "Juan" al nuevo valor proporcionado.
4. Borrar (D)¶
La última operación es el borrado de datos. Permite eliminar información innecesaria o desactualizada del sistema. Ejemplo en PHP con una sentencia SQL DELETE
:
$sql = "DELETE FROM usuarios WHERE nombre = 'Juan'";
Este comando eliminaría de la base de datos todos los registros de los usuarios cuyo nombre sea "Juan".
Implementación en el Desarrollo Web¶
En el desarrollo web, estas operaciones CRUD son implementadas a menudo a través de formularios web y APIs que interactúan con la base de datos backend. Cada acción CRUD en el frontend (como un formulario de entrada de datos o un botón de eliminar) se traduce en una de estas operaciones en el servidor, asegurando que los datos del usuario se gestionen adecuadamente.
Además, es esencial implementar medidas de seguridad adecuadas, como la validación de datos y la protección contra inyecciones SQL, para asegurar que las operaciones CRUD no se conviertan en un vector de ataques que comprometan la integridad y la seguridad de la aplicación.
¿Qué es una inyección SQL?
La inyección SQL (SQL Injection) es una vulnerabilidad de seguridad que ocurre cuando un atacante inserta código SQL malicioso en una consulta a través de entradas no controladas por el usuario.
Esto puede permitir al atacante: - Acceder a datos sensibles (como contraseñas o información personal). - Modificar o eliminar registros. - Ejecutar comandos peligrosos en la base de datos.
Ejemplo de mala práctica (vulnerable):
SELECT * FROM usuarios WHERE nombre = '$nombre';
Si el valor de $nombre
proviene de un formulario sin validar, un atacante podría introducir:
' OR '1'='1
SELECT * FROM usuarios WHERE nombre = '' OR '1'='1';
Buenas prácticas: - Validar y sanear los datos recibidos desde el frontend. - Usar consultas preparadas o ORMs que previenen la inyección SQL.
Actividades¶
-
AC 606 (RA6 / CE6b CE6c / IC1 / 3p). Crea y consulta datos de una tabla
clientes
.-
Crea una tabla llamada
clientes
con las columnas:id
(clave primaria autoincremental)nombre
apellido
email
fecha_registro
(tipoDATE
)
-
Inserta cinco registros con datos ficticios.
- Realiza una consulta SQL que muestre todos los campos de todos los clientes.
- Modifica la consulta para que solo muestre los clientes registrados en el último mes.
-
-
AR 607 . (RA6 / CE6b CE6c / IC1 / 3p) - Actualiza y elimina registros en la tabla
clientes
.- Actualiza el
email
de un cliente conocido (por suid
). - Elimina un cliente cuyo
apellido
sea"González"
, asegurándote de que la condición se aplique correctamente. - Escribe las consultas SQL que utilizaste en ambos casos.
- Actualiza el
-
AP 608. (RA6 / CE6b CE6c / IC1 / 3p) - Crea una segunda tabla llamada
pedidos
que incluya las columnasid
(clave primaria autoincremental),id_cliente
(clave foránea que referencia aclientes.id
),producto
,cantidad
yfecha_pedido
. Asegúrate de establecer la relación de clave foránea correctamente. Inserta datos que representen pedidos de los clientes. Después, escribe una consulta SQL para obtener una lista de todos los clientes junto con los detalles de sus pedidos. Utiliza una consulta de unión (JOIN
) para combinar datos de ambas tablas. -
PR 609. (RA6 / CE6b CE6c / IC2 / 5p) - El CTO necesita que crees la base de datos del e-commerce, en ella deberás tener, al menos, las tablas
carrito
,cliente
,producto
ypedido
. Te han aconsejado que documentes el proceso justificando la creación de las tablas que te han pedido.