Comandos SQL
Comandos SQL
ELIMINAR CAMPO
VISUALIZER TABLAS
ALTER TABLE tareas ALTER COLUMN descripcion SET DATA TYPE VARCHAR(255);
UPDATE tareas
SET titulo = 'Aprender React framework'
WHERE id_tareas = 3;
--CREAR TABLA CON LLAVE PRIMARIA SIEMPRE PRIMERO LAS QUE LLEVAN LLAVE PRIMARIA
CREATE TABLE cliente(
cliente_id SERIAL PRIMARY KEY,
cliente_nombre VARCHAR(50) NOT NULL
);
--CREAR TABLA CON LLAVE PRIMARIA SIEMPRE PRIMERO LAS QUE LLEVAN LLAVE PRIMARIA
CREATE TABLE producto(
producto_id SERIAL PRIMARY KEY,
producto_nombre VARCHAR(80) NOT NULL,
producto_precio NUMERIC(6,2) CHECK(producto_precio >= 0),
producto_stock SMALLINT CHECK(producto_stock >= 0) DEFAULT 0,
producto_tipo VARCHAR(80)
);
--ALIAS A UNA SENTENCIA 'AS' TAMBIEN PODEMOS HACER OPERACIONES, RECUERDA QUE ESTO ES VISUAL DIEGO
SELECT producto_nombre || ' - su cantidad es ' || producto_stock AS "producto y stock",
producto_nombre || ' - el precio es: ' || producto_precio AS "Producto y precio", producto_stock * 3
FROM producto ;
--ORDENAR LA VISUALIZACION DE CRITERIO CON ALGUN FILTRADO
SELECT producto_nombre,
producto_stock,
producto_precio
FROM producto
--ORDER BY producto_nombre ASC;
ORDER BY producto_precio DESC;
--SELECCIONA ELEMENTOS DE UNA TABLA CON DISTINTOS CRITERIOS DE FILTRADO DE UNA COLUMNA
SELECT
producto_nombre,
producto_precio,
producto_tipo,
producto_stock
FROM producto
WHERE producto_tipo IN ('café','té');
--SELECCIONA ELEMENTOS DE UNA TABLA CON DISTINTOS CRITERIOS DIFERENTES A LOS ESCRITOS DE FILTRADO DE UNA
COLUMNA
SELECT
producto_nombre,
producto_precio,
producto_tipo,
producto_stock
FROM producto
WHERE producto_tipo NOT IN ('café','té')
ORDER BY producto_tipo;
--SELECCIONA VALORES ENTRE CIERTO RANGO CON LIMIT PUEDES LIMITAR LAS OPCIONES MOSTRADAS.
-- Y CON OFFSET PUDES TRAER LAS 3 SIGUIENTES O LAS 3 QUE SIGAN DESPUES DEL PASO QUE SE LE COLOQUER COMO
VALOR.
SELECT
producto_precio,
producto_nombre
FROM producto
WHERE producto_precio BETWEEN 1 AND 4
ORDER BY producto_precio ASC
LIMIT 6
OFFSET 1;
--FILTRA LAS COSAS QUE NO TIENEN CONTENIDO EN EL CAMPO, OSEA NULL SI LE AGREGAMOS NOT A NULL TRAE LOS
QUE NO SON NULL
SELECT
producto_nombre,
producto_precio,
producto_tipo
FROM producto
WHERE producto_tipo IS NULL;
--COUNT NOS AYUDA A VER CUANTOS DE CADA TIPO EN ESTE EJEMPPLO HAY Y EL GROUP BY NOS AYUDA
--A AGRUPAR UNA SOLA CULUMNA POR ELEMNTO REPETIDOS O ALGUN OTRO CRITERIO Y HAVING NOS SIRVE PARA
DAR UNA CONDICION DENTRO DEL GRUPO.
SELECT
producto_tipo,
COUNT (producto_tipo) AS "cantidad de tipos"
FROM producto
GROUP BY producto_tipo
HAVING COUNT(producto_tipo) > 2;
/*
UNIR INFORMACION DE DOS TABLAS RELACIONADAS EN EL FROM VA
LA TABLA QUE VA A LA IZQUUIERDA Y EN EL INNER JOIN LO QUE VA A LA DERECHA
*/
SELECT *
FROM producto AS p
INNER JOIN cliente_orden_producto AS cop
ON p.producto_id = cop.producto_id;
/*
MOSTRAR CAMPOS ELEJIDOS DE UNA TABLA
*/
SELECT p.producto_nombre, cop.cantidad
FROM producto AS p
INNER JOIN cliente_orden_producto AS cop
ON p.producto_id = cop.producto_id;
/*
PROCESAR DATOS Y GENERAR MAS COLUMNAS CON INFORMACION COMO EL TOTAL
*/
SELECT
p.producto_nombre,
cop.cantidad,
p.producto_precio AS "Valor Unitario",
cop.cantidad * p.producto_precio AS "total productos"
FROM producto AS p
INNER JOIN cliente_orden_producto AS cop
ON p.producto_id = cop.producto_id;
/*
MUESTRA TODO LA TABLA ESPECIFICADA EN EL FROM Y MUESTRA NULL EN LAS QUE AUN
NO TIENEN RELACION CON EL LEFT JOIN CON WHERE LO PODEMOS FILTRAR SEGUN LA CONDICION
*/
SELECT producto_nombre
FROM producto AS p
LEFT JOIN cliente_orden_producto AS cop
ON p.producto_id = cop.producto_id
WHERE cop.cliente_orden_id IS NOT NULL;
--LO MISMO QUE LEFT JOIN PERO SE TRAE TODOS LOS DATOS DE LA TABLA QUE ESTE EN RIGHT JOIN
SELECT *
FROM producto AS p
RIGHT JOIN cliente_orden_producto AS cop
ON p.producto_id = cop.producto_id
/*
JOIN CON VARIAS TABLAS
*/
SELECT
co.cleinte_orden_fecha,
p.producto_nombre
FROM cliente_orden AS co
JOIN cliente_orden_producto AS cop
ON co.cliente_orden_id = cop.cliente_orden_id
JOIN producto AS p
ON p.producto_id = cop.producto_id;