0% encontró este documento útil (0 votos)
56 vistas8 páginas

Comandos SQL

El documento describe las funciones básicas de SQL para crear, modificar y consultar tablas de una base de datos. Explica cómo crear tablas con llaves primarias y foráneas, agregar, modificar y eliminar campos, unir tablas relacionadas, y realizar consultas utilizando filtros, ordenamiento, agrupamiento y funciones de agregación.

Cargado por

Diego Galviz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas8 páginas

Comandos SQL

El documento describe las funciones básicas de SQL para crear, modificar y consultar tablas de una base de datos. Explica cómo crear tablas con llaves primarias y foráneas, agregar, modificar y eliminar campos, unir tablas relacionadas, y realizar consultas utilizando filtros, ordenamiento, agrupamiento y funciones de agregación.

Cargado por

Diego Galviz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

CREAR TABLE EN SQL.

CREATE TABLE nombre de table (


nombre VARCHAR(50) NOT NULL,
edad INT,
descripcion TEXT,
id_usuario SERIAL,
PRIMARY KEY (id_usuario),
);

CREAR CON LLAVE FORANEA

CREATE TABLE tareas(


id_tareas SERIAL PRIMARY KEY,
titulo VARCHAR(50) NOT NULL,
fecha DATE DEFAULT CURRENT_DATE,
estado BOOLEAN DEFAULT false,
id_usuario INT,
FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario)
);

AGREGAR CAMPO A TABLA

ALTER TABLE tareas ADD descripcion TEXT;

ELIMINAR CAMPO

ALTER TABLE tareas DROP descripcion;

VISUALIZER TABLAS

SELECT * FROM nombre de tabla;

MODIFICAR TIPO DE DATO

ALTER TABLE tareas ALTER COLUMN descripcion SET DATA TYPE VARCHAR(255);

CAMBIAR NOMBRE A UN ENCABEZADO

ALTER TABLE tareas RENAME titulo TO cabecera;


CRUD

CREAR UN ELEMENTO DENTRO DE UNA TABLA

INSERT INTO usuarios(nombre, edad, descripcion)


VALUES ('Diego',
32,
'Le gusta la programacion'
);

ACTUALIZAR CAMPO DE ELEMENTO CREADO

UPDATE tareas
SET titulo = 'Aprender React framework'
WHERE id_tareas = 3;

ELIMINAR UN DATO DE LA TABLA CREADO

DELETE FROM tareas


WHERE id_tareas = 1;
Nota importantísimo el WHERE que la puede cagar.

FORMATEAR UNA TABLA

DROP TABLE IF EXISTS nombre de las tabla;


Nota importantísimo no hacer en producción de restaura todas las tablas.
--REINICIAR LA BASE DE DATOS
DROP TABLE IF EXISTS cliente_orden_producto;
DROP TABLE IF EXISTS cliente_orden;
DROP TABLE IF EXISTS cliente;
DROP TABLE IF EXISTS producto;

--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)
);

--GUARDA SOLO LA ID DE LA ORDEN


CREATE TABLE cliente_orden(
cliente_orden_id SERIAL PRIMARY KEY,
cliente_id INT REFERENCES cliente(cliente_id),
cleinte_orden_fecha DATE DEFAULT NOW()
);

--CREAR UNA TABLA CON LLAVES PRIMARIAS Y LLAVES FORANEAS


CREATE TABLE cliente_orden_producto(
cliente_orden_id INT REFERENCES cliente_orden(cliente_orden_id),
producto_id INT REFERENCES producto(producto_id),
cantidad SMALLINT
);

--AGREGAR DATOS DE FORMA MASIVA


INSERT INTO cliente(cliente_nombre)
VALUES
('Maria'),
('Carmen'),
('Josefa'),
('Antonio'),
('Jose'),
('Manuel'),
('David'),
('Daniel');

--AGRAGAR PRODUCTOS DE FORMA MASIVA


INSERT INTO producto
(producto_nombre, producto_precio, producto_stock, producto_tipo)
VALUES
('Latte', 2.50, 100, 'café'),
('Cappuccino', 1.90, 100, 'café'),
('Dulce de leche Latte', 20.50, 100, 'café'),
('Café Americano', 3.50, 100, 'café'),
('Iced Café Americano', 0.50, 100, 'ice café'),
('Café Mocha', 50, 100, 'café'),
('Caramel Macchiato', 3.2, 100, 'café'),
('Iced Mocha', 2.50, 100, 'ice café'),
('Mocha Blanco', 2.50, 0, null),
('Vanilla Latte', 2.50, 100, 'té'),
('Flat White', 2.50, 100, 'té'),
('Espresso', 2.50, 100, 'café'),
('Espresso Macchiato', 0.90, 0, 'café'),
('Espresso Con Panna', 1.50, 100, 'café'),
('Café Cortado', 3.50, 100, 'café'),
('Torta Cuatro Leches', 4.50, 100, 'postre'),
('Pie de Berries', 5.50, 0, 'postre'),
('Bagel', 2.50, 100, 'postre'),
('Donut Rellena', 6.50, 100, 'donut'),
('Scone de 4 quesos', 7.50, 100, 'sandwich'),
('Muffin Zanahoria Nuez', 8.50, 100, 'muffin'),
('Media luna', 9.50, 100, 'donut'),
('Pan de Queso', 11.50, 100, 'sandwich'),
('Praline Cake', 12.50, 100, 'sandwich'),
('Lemon Cake', 22.50, 100, null),
('Muffin con Chips', 33.50, 100, 'muffin'),
('Muffin de Arándano', 454.50, 10, 'muffin');

--MOSTRAR TODOS LOS ELEMENTOS DE UNA TABLA INDICADA


SELECT * FROM producto;

--MOSTRAR UNA O MAS COLUMNAS DE UNA TABLA INDICADA


SELECT producto_nombre, producto_precio FROM producto;

--CONCATENAR UN DOS COLUMNAS Y PODER AGRAGAR ALGUNA CADENA DE TEXTO


SELECT producto_nombre || ' - el precio es: ' || producto_precio FROM producto;

--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;

--PROPIEDAD LENGTH PARA SABER EL NUMERO DE CARACTERES DE UN ELEMENTO ESPECIFICADO


SELECT producto_nombre,
LENGTH (producto_nombre) AS len
FROM producto
ORDER BY len ASC;

--ME AGRUPA LOS ELEMENTO COMO EN REVIT CUANDO HACES CANTIDADES


SELECT DISTINCT producto_tipo
FROM producto;

--SELECCIONA ELEMENTOS DE UNA TABAL CON UN FLITRADO ESPECIFICO


SELECT
producto_nombre,
producto_precio,
producto_tipo,
producto_stock
FROM producto
WHERE producto_tipo = 'café' AND producto_stock > 0;

--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 ELEMENTOS QUE CONTENGAN ALGO DE LA CADENA ESCRITA ES COMO UN CONTIENE


--DE EXCEL CUANDO SE ENCIERRA '_O_' TE TRAE POR CARACTERES...
SELECT
producto_nombre,
producto_precio,
producto_tipo,
producto_stock
FROM producto
WHERE producto_nombre LIKE 'Espresso%';

--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;

SELECT * FROM cliente;


SELECT * FROM producto;

--CREAMOS UNA ORDEN


INSERT INTO cliente_orden(cliente_id)
VALUES (3);
SELECT * FROM cliente_orden;

--CRAMOS UN PEDIDO A LA ORDEN


INSERT INTO cliente_orden_producto(cliente_orden_id, producto_id, cantidad)
VALUES (1,11,2);

--LE DESCONTAMOS ACTUALIZANDO EL STOCK LO QUE COMPRAMOS


UPDATE producto
SET producto_stock = producto_stock - 2
WHERE producto_id = 11;

/*
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;

--SUMAR UN LOS DATOS DE UNA COLUMNA


SELECT
SUM(cop.cantidad * p.producto_precio) AS "total a pagar"
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

--TRAE TODO LOS DE LAS DOS TABLAS


SELECT *
FROM producto AS p
FULL 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;

--OTRO EJEMPLO DE UNIR MUCHAS TABLAS


SELECT
c.cliente_nombre,
co.cleinte_orden_fecha,
p.producto_nombre,
cop.cantidad,
p.producto_precio,
cop.cantidad * p.producto_precio AS total
FROM cliente AS c
JOIN cliente_orden AS co
ON c.cliente_id = co.cliente_id
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;

También podría gustarte