-- Principales comandos DML (Data Manipulation Language) se utilizan para manipular los datos en una base de datos. --SELECT: Se utiliza para recuperar datos de una o más tablas de la base de datos. SELECT columna1, columna2 FROM tabla WHERE condicion; --INSERT: Se utiliza para agregar nuevos registros a una tabla. INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2); --UPDATE: Se utiliza para actualizar registros existentes en una tabla. ¡¡¡¡¡¡¡WHERE!!!!!!! UPDATE tabla SET columna1 = valor1, columna2 = valor2 WHERE condicion; --DELETE: Se utiliza para eliminar registros de una tabla. DELETE FROM tabla WHERE condicion; --REPLACE: En MySQL, REPLACE es similar a INSERT, pero si hay un registro existente con la misma clave primaria o única, se elimina antes de insertar el nuevo registro. Si no hay conflicto, se comporta igual que INSERT. REPLACE INTO tabla (columna1, columna2) VALUES (valor1, valor2); --LOAD DATA INFILE: Se utiliza para cargar datos de un archivo CSV o de texto en una tabla de la base de datos. LOAD DATA INFILE 'archivo.csv' INTO TABLE tabla; --SELECT --SELECT DISTINCT solo valores diferentes, no repetidos. --Operadores WHERE establecer una condición (puede ser múltiple AND OR) y WHERE NOT. = Igual <> No igual (en algunas versiones de SQL es !=) > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que BETWEEN Entre un rango de valores LIKE Buscar un patrón IN Especifica múltiples posibles valores para una columna LIMIT establecer un límite de filas --LIKE para establecer patrones en combinación con WHERE % Sustituye por cero o más caracteres por% %es _ Sustituye por un sólo carácter prue_a [caracteres] Establece y crea rangos de caracteres a encontrar [^caracteres] ó [!caracteres] Establece y crea rangos de caracteres a evitar SELECT * FROM productos WHERE precio BETWEEN 50 AND 100; -- Rango entre 50 y 100 SELECT * FROM Clientes WHERE Ciudad LIKE '%[a-j]' --Que terminen en un rango entre a-j SELECT * FROM clientes WHERE pais IN ('USA', 'Canadá', 'México'); -- Si coinciden con alguno de los valores SELECT * FROM clientes WHERE id IN (SELECT cliente_id FROM pedidos WHERE total > 1000); -- Combinando dos SELECT SELECT * FROM productos LIMIT 5 OFFSET 5; -- Limitidado a 5 registros y descartando los 5 primeros -- LIMIT 10,5 o esta LIMIT 5 OFFSET 10 --ORDER BY (ASC|DESC) --Ordenados según orden ascendente de NombreCliente y descendente de Ciudad SELECT * FROM Clientes ORDER BY NombreCliente DESC; SELECT * FROM Clientes ORDER BY NombreCliente ASC, Ciudad DESC; -- ***********Más contenido************* -- --ALIAS: para abreviar nombres de tablas y columnas, o para renombrar columnas. --COLUMNAS SELECT nombre AS nombre_ciudad FROM ciudad; --TABLAS SELECT ci.nombre FROM ciudad AS ci; --ALIAS sin AS SELECT nombre primer_nombre, apellido FROM empleados; --******************* --FUNCIONES DE AGREGACIÓN COUNT: Calcula el número de filas en un conjunto de resultados. No cuenta los nulos. SUM: Calcula la suma de los valores en una columna. AVG: Calcula el promedio de los valores en una columna. MAX: Devuelve el valor máximo en una columna. MIN: Devuelve el valor mínimo en una columna. | id_empleado | nombre | departamento | salario | |-------------|----------|--------------|---------| | 1 | Juan | Ventas | 3000 | | 2 | María | Ventas | 3500 | | 3 | Pedro | Recursos Hum | 4000 | | 4 | Ana | Finanzas | 3800 | | 5 | José | Ventas | 3200 | --COUNT Calcula el número de filas en un conjunto de resultados. No cuenta los nulos. SELECT COUNT(*) AS total_empleados FROM empleados; | total_empleados | |-----------------| | 5 | --SUM Calcula la suma de los valores en una columna. SELECT SUM(salario) AS salarios_empleados FROM empleados; | salarios_empleados | |--------------------| | 17500 | --AVG Calcula el promedio de los valores en una columna. SELECT AVG(salario) AS salario_promedio FROM empleados; | salario_promedio | |------------------| | 3500 | --MAX Devuelve el valor máximo en una columna. SELECT MAX(salario) AS salario_maximo FROM empleados; | salario_maximo | |------------------| | 4000 | --MIN Devuelve el valor mínimo en una columna. SELECT MIN(salario) AS salario_minimo FROM empleados; | salario_minimo | |------------------| | 3000 | --************** --GROUP BY -- Para agrupar filas que comparten un valor común en una o más columnas y para aplicar funciones de agregación. --Agregación de datos - Salario promedio por departamento: SELECT departamento, AVG(salario) AS salario_promedio FROM empleados GROUP BY departamento; | departamento | salario_promedio | |----------------|------------------| | Ventas | 3233.33 | | Recursos Hum | 4000.00 | | Finanzas | 3800.00 | --Agrupación por departamentos SELECT departamento, COUNT(*) AS cantidad_empleados FROM empleados GROUP BY departamento; | departamento | cantidad_empleados | |----------------|--------------------| | Ventas | 3 | | Recursos Hum | 1 | | Finanzas | 1 | --HAVING filtrar los resultados de una consulta que incluye una cláusula GROUP BY --Filtrado de resultados SELECT departamento, AVG(salario) AS salario_promedio --4 FROM empleados --1 GROUP BY departamento --2 HAVING AVG(salario) > 3500; --3 | departamento | salario_promedio | |----------------|------------------| | Recursos Hum | 4000 | | Finanzas | 3800 | ------------*********ORDEN*********----------- --Orden de escritura Orden de ejecución SELECT FROM DISTINCT JOIN FROM WHERE JOIN GROUP BY WHERE HAVING GROUP BY SELECT HAVING DISTINCT ORDER BY ORDER BY LIMIT OFFSET LIMIT OFFSET