193 lines
6.2 KiB
SQL
193 lines
6.2 KiB
SQL
|
|
-- 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
|
|
|