Saltar a contenido

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
Lo que convertiría la consulta en:
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.

    1. Crea una tabla llamada clientes con las columnas:

      • id (clave primaria autoincremental)
      • nombre
      • apellido
      • email
      • fecha_registro (tipo DATE)
    2. Inserta cinco registros con datos ficticios.

    3. Realiza una consulta SQL que muestre todos los campos de todos los clientes.
    4. 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.

    1. Actualiza el email de un cliente conocido (por su id).
    2. Elimina un cliente cuyo apellido sea "González", asegurándote de que la condición se aplique correctamente.
    3. Escribe las consultas SQL que utilizaste en ambos casos.
  • 🔬 AP 608. (RA6 / CE6b CE6c / IC1 / 3p) - Crea una segunda tabla llamada pedidos que incluya las columnas id (clave primaria autoincremental), id_cliente (clave foránea que referencia a clientes.id), producto, cantidad y fecha_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 y pedido. Te han aconsejado que documentes el proceso justificando la creación de las tablas que te han pedido.