Tabla de Contenidos
Instrucciones SQL para acceder a una base de datos
Módulo perteneciente al curso Desarrollo web back-end
Aprenderemos cómo manipular y gestionar los datos en una base de datos utilizando instrucciones DML.
Las operaciones CRUD (crear, leer, actualizar y eliminar) son fundamentales para cualquier aplicación que interactúe con una base de datos.
A través de instrucciones DML, podemos realizar estas operaciones y mantener la integridad y consistencia de los datos almacenados. Los puntos específicos a tratar en esta sección son: insertar datos en una tabla utilizando la instrucción INSERT, borrar datos utilizando la instrucción DELETE y modificar datos utilizando la instrucción UPDATE.
A través de ejemplos detallados y enlaces a la documentación oficial de PHP, aprenderemos cómo utilizar estas instrucciones para manipular los datos de una base de datos de manera efectiva.
Operaciones CRUD con instrucciones DML
Las operaciones CRUD (Create, Read, Update, Delete) son fundamentales en cualquier sistema que maneje datos. En SQL, estas operaciones se realizan mediante instrucciones DML (Data Manipulation Language).
Insertar datos
La instrucción para insertar datos en una tabla se llama INSERT INTO. Se especifican los valores a insertar en la tabla, y en qué columna deben ir. Se pueden insertar valores para todas las columnas o para una selección de ellas. Aquí un ejemplo:
INSERT INTO tabla (columna1, columna2, columna3) VALUES (valor1,valor2, valor3);
Consultar datos
La instrucción para consultar datos en una tabla se llama SELECT. Se especifican las columnas que se quieren mostrar, la tabla de donde se quiere obtener la información y los criterios de búsqueda. Se pueden aplicar operadores como LIKE, ORDER BY y GROUP BY. Aquí un ejemplo:
SELECT columna1, columna2 FROM tabla WHERE columna3='valor';
Borrar datos
La instrucción para borrar datos de una tabla se llama DELETE. Se especifica la tabla de donde se quieren borrar los datos y los criterios de búsqueda. Se pueden aplicar operadores como LIKE. Aquí un ejemplo:
DELETE FROM tabla WHERE columna1='valor';
Modificar datos
La instrucción para modificar datos de una tabla se llama UPDATE. Se especifica la tabla de donde se quieren modificar los datos, la columna a modificar y los criterios de búsqueda. Aquí un ejemplo:
UPDATE tabla SET columna1='valor' WHERE columna2='valor2';
Concepto de transacción y punto de sincronía
Una transacción es una secuencia de operaciones que se llevan a cabo como una sola unidad atómica e indivisible de trabajo.
Las transacciones son importantes para mantener la integridad de la base de datos y asegurar que todas las operaciones se realicen correctamente.
El punto de sincronía es un punto dentro de una transacción en el que los cambios realizados hasta ese punto se escriben en la base de datos y se guardan de forma permanente.
Si ocurre un error después de este punto, la transacción puede ser deshecha, pero los cambios realizados hasta ese punto se mantienen.
El punto de sincronía es una parte importante de la transacción, ya que asegura que los cambios realizados sean permanentes.
Es importante destacar que no todos los sistemas de bases de datos manejan las transacciones de la misma manera, por lo que es importante cómo se manejan en el sistema específico que se está utilizando.
Accesos avanzados para leer la base de datos utilizando expresiones, funciones y predicados
Para acceder a una base de datos utilizando SQL, existen diferentes expresiones, funciones y predicados que permiten hacer consultas más complejas y específicas.
A continuación, se explicarán algunos de estos elementos.
Expresiones
Las expresiones son combinaciones de columnas, operadores y valores que devuelven un resultado.
Por ejemplo, la expresión “precio_unitario * cantidad as total” devuelve el resultado de multiplicar la columna precio_unitario por la columna cantidad y renombrar el resultado como total.
Existen diferentes tipos de expresiones, como expresiones aritméticas, lógicas y de comparación.
Funciones
Las funciones son instrucciones predefinidas que realizan cálculos o devuelven información sobre los datos almacenados en una base de datos. Por ejemplo, la función “COUNT()” devuelve el número de filas que cumplen una determinada condición.
Existen diferentes tipos de funciones, como funciones matemáticas, de fecha y hora, de texto y de agregación.
Predicados
Los predicados son condiciones que se utilizan en las consultas para filtrar los datos que se quieren obtener. Por ejemplo, el predicado “WHERE” se utiliza para filtrar los datos en función de una o varias condiciones.
Existen diferentes tipos de predicados, como predicados de comparación, lógicos y de existencia.
A continuación, se muestran algunos ejemplos de consultas utilizando expresiones, funciones y predicados:
Consulta para obtener la cantidad total de productos en stock:
SELECT SUM(cantidad) AS total_productos FROM inventario;
Consulta para obtener el precio promedio de los productos de una determinada categoría
SELECT AVG(precio) AS precio_promedio FROM productos WHERE categoria= 'Electrónica';
Consulta para obtener los productos cuyo precio es mayor a un determinado valor
SELECT * FROM productos WHERE precio > 100;
Acceso a más de una entidad simultáneamente utilizando JOINS
El acceso a más de una entidad simultáneamente es posible gracias a las cláusulas JOIN, las cuales permiten unir varias tablas relacionadas en una consulta. Los JOIN pueden ser de varios tipos, incluyendo INNER JOIN, LEFT JOIN, RIGHT JOIN, y FULL OUTER JOIN.
INNER JOIN: devuelve solo las filas que tienen coincidencias en ambas tablas que se están uniendo.LEFT JOIN: devuelve todas las filas de la tabla de la izquierda y las coincidencias de la tabla de la derecha, si las hay.RIGHT JOIN: devuelve todas las filas de la tabla de la derecha y las coincidencias de la tabla de la izquierda, si las hay.FULL OUTER JOIN: devuelve todas las filas de ambas tablas.
Imaginemos que tenemos una tabla clientes con esta estructura de datos:
| id_cliente | nombre | |
|---|---|---|
| 1 | Juan | juan@mail.com |
| 2 | Ana | ana@mail.com |
| 3 | Carlos | carlos@mail.com |
Y una tabla pedidos con esta estructura de datos:
| id_pedido | fecha_pedido | id_cliente |
|---|---|---|
| 1 | 2022-01-01 | 1 |
| 2 | 2022-01-02 | 1 |
| 3 | 2022-01-03 | 2 |
Si queremos obtener una lista de todos los pedidos con el nombre del cliente correspondiente, podemos utilzar un INNER JOIN de la siguiente manera:
SELECT pedidos.id_pedido, pedidos.fecha_pedido, clientes.nombre FROM pedidos INNER JOIN clientes ON pedidos.id_cliente = clientes.id_cliente
El resultado sería:
| id_pedido | fecha_pedido | id_cliente |
|---|---|---|
| 1 | 2022-01-01 | Juan |
| 2 | 2022-01-02 | Juan |
| 3 | 2022-01-03 | Ana |
En este ejemplo, la cláusula ON especifica la condición de unión entre las dos tablas. En este caso, la condición es que el id_cliente de la tabla pedidos coincida con el id_cliente de la tabla **clientes.
Uso de disparadores o triggers
Los disparadores o triggers en MySQL son bloques de código que se ejecutan automáticamente en respuesta a determinados eventos que ocurren en una tabla de la base de datos, como pueden ser las operaciones de inserción, actualización o eliminación de registros.
Los disparadores se utilizan para garantizar la integridad de los datos en una base de datos, para realizar auditorías de los cambios en la base de datos o para realizar cualquier otra tarea automatizada que sea necesaria.
La sintaxis básica para crear un disparador en MySQL es la siguiente:
CREATE TRIGGER nombre_disparador [BEFORE|AFTER] tipo_evento ON nombre_tabla FOR EACH ROW BEGIN -- código del disparador aquí END;
Donde:
nombre_disparadores el nombre que se le da al disparador.BEFOREoAFTERindica si el disparador se ejecutará antes o después del eventoque lo activa.tipo_eventoes el tipo de evento que activa el disparador (INSERT,UPDATEoDELETE).nombre_tablaes el nombre de la tabla en la que se activa el disparador.FOR EACH ROWindica que el disparador se ejecutará una vez por cada filaafectada por el evento.
A continuación se muestra un ejemplo de un disparador que actualiza la fecha de modificación de un registro en una tabla cuando se realiza una operación de actualización:
CREATE TRIGGER actualizar_fecha_modificacion AFTER UPDATE ON tabla_ejemplo FOR EACH ROW BEGIN UPDATE tabla_ejemplo SET fecha_modificacion = NOW() WHERE id =NEW.id; END;
En este ejemplo, NOW() es una función que devuelve la fecha y hora actuales del sistema. NEW es una variable especial que se refiere a la fila que se está actualizando.
