Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cajamarca 2019
1
Contenido
2
MANUAL DE BASE DE DATOS AVANZADA
Que es SQL: El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos
normalizado, utilizado por los diferentes motores de bases de datos para realizar
determinadas operaciones sobre los datos o sobre la estructura de los mismos.
BUSQUEDA SIMPLE
La cláusula GROUP BY unida a un SELECT permite agrupar filas según las columnas
que se indiquen como parámetros, y se suele utilizar en conjunto con las funciones de
agrupación, para obtener datos resumidos y agrupados por las columnas que se necesiten.
Ejemplos
--Mostrar el # de productos que hay en cada categoria
3
--(Mostrar nombre de la compañia)
select categoryname , COUNT(*) as '# de Productos'
from Categories as C
inner join Products as P on p.CategoryID=c.CategoryID
group by CategoryName
La función HAVING se utiliza para incluir condiciones con alguna función SQL del tipo
SUM, MAX, .. Como la cláusula WHERE no se puede utilizar con funciones SQL del
tipo SUM, MAX, entonces utilizamos en su lugar,HAVING
4
from Customers
group by Country
having Country ='USA' or Country = 'UK'
--Mostrar el numero de proveedores que hay en cada ciudad
select City, COUNT(*) 'numero de proveedore'
from Suppliers
group by City
having COUNT(*)<=2
-- Mostrar el número de productos que suministra cada proveedor (companyname de
sppliers). Sólo número de productos menores a 3.
SELECT CompanyName 'Proveedor', COUNT(*) 'Nº de Productos'
FROM Products P
INNER JOIN Suppliers S ON S.SupplierID=P.SupplierID
GROUP BY CompanyName
HAVING COUNT(*) < 3
ORDER BY 1
-- Mostrar cuántos productos (cantidad de productos) se han evndido en cada mes
por cada cliente.
-- Solamente el primer semestre (de enero a junio) y la cantidad de productos
antre 50 y 200 (incluidos)
SELECT ContactName 'Cliente', DATENAME(MM,OrderDate)'Mes', SUM(Quantity)'Nº
Productos'
FROM Customers C
INNER JOIN Orders O ON C.CustomerID=O.CustomerID
INNER JOIN [Order Details] OD ON O.OrderID=OD.OrderID
WHERE MONTH(OrderDate) BETWEEN 1 AND 6
GROUP BY ContactName, DATENAME(MM,OrderDate)
HAVING SUM(Quantity) BETWEEN 50 AND 200
PROCEDIMIENTOS ALMACENADOS :
EJEMPLOS
-- Si quiero modificarlo de tal manera que salgan productos con los CategoryID
que deseo
ALTER PROCEDURE PA_Mostrar_Productos
@CATE INT -- Creo un parámetro que tendrá el CategoryID que yo
quiero
5
AS
SELECT*
FROM Products
WHERE CategoryID=@CATE
-- Lo ejecutamos
EXEC PA_Mostrar_Productos 1 --El 1 es el Category ID que yo quiero
--1.- MOSTRAR LOS CLIENTES (COMPANYNAME) QUE CONTENGA EN SU NOMBRE UNA LETRA
--O LETRAS INGRESADOS
CREATE PROCEDURE PA_CLIENTESXLETRA @L VARCHAR(30)
AS
SELECT CompanyName
FROM Customers
WHERE CompanyName LIKE '%'+@L+'%'
EXEC PA_CLIENTESXLETRA A
--2.- MOSTRAR LOS CLIENTES DE UN PAIS INGRESADO
ALTER PROCEDURE PA_CLIENTES_X_PAIS @P VARCHAR(15)
AS
SELECT *
FROM Customers
WHERE Country= @P
6
IF @NR <=9
SET @COD = SUBSTRING(@APE,1,1)+'00' + LTRIM(STR(@NR))
ELSE IF @NR < 100
SET @COD = SUBSTRING(@APE,1,1)+'0' + LTRIM(STR(@NR))
ELSE
SET @COD = SUBSTRING(@APE,1,1) + LTRIM(STR(@NR))
SELECT *
FROM empleados
FUNCTION UPDATE:
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3
La cláusula SET establece los nuevos valores para las columnas indicadas. La cláusula
WHERE sirve para seleccionar las filas que queremos modificar. Ojo: Si omitimos la
cláusula WHERE, por defecto, modificará los valores en todas las filas de la tabla.
EJEMPLOS
UPDATE Customers
SET Address = 'Jr. Huánuco 144'
WHERE CustomerID='ALFKI'
7
-- Reducir el precio (UnitPrice) de los productos en 10%, a los productos de las
categorías 2 y 4
UPDATE Products
SET UnitPrice = (UnitPrice*0.90)
WHERE CategoryID IN (2,4)
-- Aumentar el stock en 200 prodcutos más, en cada producto que suministra los
proveedores 1,5 y 7.
UPDATE Products
SET UnitsInStock = (UnitsInStock+200)
WHERE SupplierID IN (1,5,7)
--Cambiar las órdenes o pedidos del año 1998 y colocarles el código de empleado
5.
UPDATE Orders
SET EmployeeID = 5
WHERE YEAR(OrderDate)=1998
FUNCTION INSERT:
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla. Es posible
insertar una nueva fila en una tabla de dos formas distintas:
EJEMPLO
FUNCTION DELETE:
La sentencia DELETE sirve para borrar filas de una tabla. La sintaxis de SQL
DELETE es:
Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:
8
DELETE * FROM nombre_tabla;
EJEMPLO
TRIGGERS:
Los triggers o disparadores son objetos de la base de datos que ejecutan acciones cuando
se producen ciertos eventos (tanto DML como DDL) (inserciones, modificaciones,
borrados, creación de tablas, etc).
CREATE TRIGGER ACTUALIZAR_STOCK_INSERT
ON [ORDER DETAILS]
FOR INSERT
AS
DECLARE @ID INT, @Q INT
----------------OTRA FORMA------------------
AS
UPDATE Products
SET UnitsInStock=UnitsInStock-I.QUANTITY
FROM Products P
JOIN inserted I ON P.ProductID=I.ProductID
--SEGUNDO EJERCICIO
ALTER TRIGGER ACTUALIZAR_STOCK_DELETED
ON [ORDER DETAILS]
FOR DELETE
AS
DECLARE @ID INT, @Q INT
----TECER EJERCICIO----UPDATEEE------
CREATE TRIGGER ACTUALIZAR_STOCK_UPDATE
ON [ORDER DETAILS]
FOR UPDATE
AS
Update Products
set UnitsInStock=UnitsInStock+D.Quantity
from products as P inner join
9
DELETED as D on D.ProductID=P.ProductID
Update Products
set UnitsInStock = UnitsInStock - D.Quantity
from products as P inner join
INSERTED as D on D.ProductID=P.ProductID
10