
-- 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
_ 	Sustituye por un sólo carácter
[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


