74
[NOMBRE DE LA EMPRESA] [Dirección de la compañía] REPORTE DE PRACTICA UNIDAD 3

practicas comentadas de subconsultas e inner join sql

Embed Size (px)

DESCRIPTION

practicas de consultas con subconsultas e inner join en sql con lineas comentadas

Citation preview

Page 1: practicas comentadas de subconsultas e inner join sql

Escuela: Instituto Tecnológico de Tepic

Materia: Taller de base de datos

Maestra: M.E. Verónica Ramírez Jáuregui

Alumno: Fernando Samuel Enríquez Hernández

Carrera: Ingeniería en sistemas computacionales

Matricula: 13400401

Reporte de practica unidad 3

Page 2: practicas comentadas de subconsultas e inner join sql

ContenidoFundamento teórico.................................................................................................................................2

Practica 1..................................................................................................................................................3

Practica 2..................................................................................................................................................5

Practica 3..................................................................................................................................................7

Practica 4..................................................................................................................................................9

Practica 5................................................................................................................................................12

Práctica 6................................................................................................................................................15

Practica 7................................................................................................................................................19

Practica 8................................................................................................................................................22

Practica 9................................................................................................................................................26

Practica 10..............................................................................................................................................30

Practica 11..............................................................................................................................................33

Practica 12..............................................................................................................................................38

Practica 13..............................................................................................................................................40

Conclusión..............................................................................................................................................57

Page 3: practicas comentadas de subconsultas e inner join sql

Fundamento teórico

En esta unidad se comenzó a realizar consultas a bases de datos existentes mediante el lenguaje de manipulación de datos, que nos permitió consultar registros de nuestras bases de datos con el comando select, insert con el cual pudimos manipular la base e insertar registros en ella modificar y eliminar con los comandos update y delete respectivamente, esto por mostrar lo más básico, puesto que hicimos uso también de la cláusula where la cual nos ayuda a complementar el comando select, delete o update y el cual nos ofrece la funcionalidad de filtrar resultados buscando solo aquellos que nosotros hayamos elegido, y que junto con esta cláusula utilizamos otras que nos ayudan a filtrar los resultados dentro de la cláusula where tal es el caso del comando Between para devolver una serie de registros que se encuentren dentro de un rango de parámetros, Like para encontrar uno o varios registros que en algún campo especificado tenga el mismo dato que el del parámetro definido, además de las cláusulas de agregación tales como Sum, Count, Avg y Group by.

Todos estos comandos mencionados anteriormente son muy potentes y eficientes al momento de insertar, buscar, eliminar o modificar datos de una tabla, sin embargo usadas de manera individual no nos servirían para hacer lo mismo pero en diferentes tablas, es para eso que existen las subconsultas y las consultas combinadas con los cuales mediante la relación de las llaves foráneas y primarias de cada tabla podemos extraer información de ellas en una consulta.

Por último se implementó el uso de vistas las cuales nos permiten visualizar campos definidos de una o varias tablas organizadas como si de una tabla se tratase con la característica de ser de solo lectura con lo cual evitamos que puedan ser modificados los valores originales en cualquier manera.

A lo largo de este reporte se llevara a la práctica la teoría descrita anteriormente plasmada en prácticas de laboratorio a una base de datos.

Page 4: practicas comentadas de subconsultas e inner join sql

Practica 1

Materia: Taller de base de datosUnidad: 3Fecha de práctica: 13 de octubre de 2015Numero de práctica: 1

Descripción de la Práctica: Insertar superhéroes en la tabla héroes y poderes en la tabla poder

Objetivo: conocer el comando para insertar datos en una tabla de una base de datos

Competencias a desarrollar: Insertar exitosamente datos en una tabla mediante el comando insert into

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:Con este comando nos colocamos en la base de datos superhéroesUSE SUPERHEROES

Usamos el comando insert into seguido del nombre de la tabla heroes para insertar registrosINSERT INTO HEROES

Usamos el comando values y dentro de los parentesis los valores que queremos insertar en la tablaVALUES ('SPM','CLARK KENT','SUPERMAN','A','METROPOLI','01/01/2000','ES CHIDO'),('BTM','BRUNO DIAZ','BATMAN','A','CD GOTICA','01/01/1960','NO TIENE PAPAS'),('SPD','PETER PARKER','SPIDERMAN','A','TESTERAZO','01/01/1965','LO PICO UNA ARANA')

Usamos el comando insert into seguido del nombre de la tabla poder para insertar registrosINSERT INTO PODER(POD_ID,POD_NOMBRE)

Usamos el comando values y dentro de los parentesis los valores que queremos insertar en la tablaVALUES(1,'VOLAR'),(2,'SUPER FUERZA'),(3,'VISION RAYOS X'),(4,'VELOCIDAD'),(5,'VISION LASER'),(6,'TELETRANS'),

Page 5: practicas comentadas de subconsultas e inner join sql

(7,'KAMEHAMEHA'),(8,'AUME_KI'),(9,'MASENKO'),(10,'HENKIDAMA'),(11,'KAYOKEN')

Observaciones:

Resultados:

Page 6: practicas comentadas de subconsultas e inner join sql

Practica 2

Materia: Taller de base de datosUnidad: 3Fecha de práctica: 14 de octubre de 2015Numero de práctica: 2

Descripción de la Práctica: Eliminar de la tabla héroes aquellos registros cuyos estatus sean ‘B’, Eliminar de la tabla héroes aquellos registros cuyo apodo comience con ‘X’, modificar los registros que tengan por status ‘A’ específicamente los campos lugar a ‘Sin lugar’ y status a ‘B’, modificar los registros de detalle poder que tengan por id de poder igual a 6 e id de héroes igual a ‘Sup’, específicamente id de poder a 6, seleccionar el id de los héroes que su nombre comience con P

Objetivo: conocer los comandos para eliminar y modificar una tabla

Competencias a desarrollar: modificar y/o eliminar exitosamente un registro de una tabla controlando mediante la cláusula where el registro afectado

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:Utilizamos el comando delete formó seguido del nombre de la tabla en este caso héroes para eliminar registros de dicha tablaDELETE FROM HEROES

Con este comando solo seleccionamos el reigstro a eliminar depeendiendo la condicion que se establezcaWHERE HER_ESTATUS='B'

Utilizamos el comando delete formó seguido del nombre de la tabla en este caso héroes para eliminar registros de dicha tablaDELETE FROM HEROES

Con este comando solo seleccionamos el reigstro a eliminar depeendiendo la condicion que se establezcaWHERE HER_APODO LIKE 'X%'

Utilizarems el comando update para modificar un registro de una tabla

Page 7: practicas comentadas de subconsultas e inner join sql

UPDATE HEROESSET HER_LUGAR='SIN LUGAR',HER_ESTATUS='B'WHERE HER_ESTATUS='A'

UPDATE DETALLE_PODERSET POD_ID = 6

Con este comando solo seleccionamos el reigstro a eliminar depeendiendo la condicion que se establezcaWHERE POD_ID=8 AND HER_ID='SUP'

Con este comando seleccionamos uno o varias registros de la base de datosSELECT HER_ID FROM HEROESEstablecemos la condicion despues de la clausula Where en este caso donde el nombre del heroe empiece con la letra pWHERE HER_NOMBRE LIKE 'P%'

Page 8: practicas comentadas de subconsultas e inner join sql

Practica 3

Materia: Taller de base de datosUnidad: 3Fecha de práctica: 21 de octubre de 2015Numero de práctica: 3

Descripción de la Práctica: Seleccionar el apodo de los superhéroes y sus respectivos nombres de poderes mediante consulta combinada

Objetivo: conocer los comandos para ejecutar consultas combinadas

Competencias a desarrollar: utilizar los comandos de selección hasta ahora conocidos para realizar una consulta combinada a dos tablas

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:

Mediante el comando select from hacemos la selección de los campos her_apodo de la tabla heroes y pod_nombre de la tabla poder, además de también obtener la tabla detalle poder para su posterior usoSELECT H.HER_APODO,P.POD_NOMBREFROM HEROES H, PODER P, DETALLE_PODER D

Establecemos la condicion de seleccionar solo los registros en donde el id poder de la tabla poder y el id heroe de la tabla heroes se encuentren en la tabla detalle poderWHERE D.POD_ID = P.POD_IDAND H.HER_ID = D.HER_ID

Mediante el comando select from hacemos la selección de los campos her_apodo de la tabla heroes y pod_nombreSELECT H.HER_APODO, P.POD_NOMBREFROM HEROES H

Para poder relacionar las llaves foraneas de las tablas poder y heroes realizamos un inner join con la tabla detalle poderINNER JOIN DETALLE_PODER D ON(H.HER_ID=D.HER_ID )

Para poder extraer el dato pod_nombre realizamos un inner join con la tabla poder

Page 9: practicas comentadas de subconsultas e inner join sql

INNER JOIN PODER P ON(P.POD_ID=D.POD_ID)

Resultados:

Page 10: practicas comentadas de subconsultas e inner join sql

Practica 4

Materia: Taller de base de datosUnidad: 3Fecha de práctica: 22 de octubre de 2015Numero de práctica: 4

Descripción de la Práctica:--consultar de la base de datos northwind--de los empleados su titulo de cortesia su direccion y el numero de orden-- consultar productos mostrando nombre precio--cantidad en existencia y categoria a la que pertenece mostrar ordenes con el nombre del vendedor--nombre del cliente (compañia)--fecha en que fue vendida

Objetivo: conocer los comandos para ejecutar consultas combinadas

Competencias a desarrollar: utilizar los comandos de selección hasta ahora conocidos para realizar una consulta combinada a dos tablas

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:

--CONSULTAR DE LA BASE DE DATOS NORTHWIND--DE LOS EMPLEADOS SU TITULO DE CORTESIA SU DIRECCION Y EL NUMERO DE ORDEN

USE NorthwindSeleccionamos los campos requeridos anteriormente y si queremos les cambiamos el titulo a cada campo con el comando As segudio del nombre deseadoSELECTEMPLOYEETERRITORIES.TERRITORYID AS [TERRITORIO],TERRITORIES.TERRITORYDESCRIPTION AS [DESCRIPCION],LASTNAME+' '+FIRSTNAME AS [NOMBRE],BIRTHDATE AS [FECHA NACIMIENTO],TITLEOFCOURTESY AS [TITULO CORTESIA],ADDRESS AS [DIRECCION],

Page 11: practicas comentadas de subconsultas e inner join sql

CITY AS [CIUDAD]

Extrayendo los campos de la tabla EmployeesFROM EMPLOYEES

Y para el campo TERRITORYID, hacemos un inner con la tabla EMPLOYEETERRITORIESINNER JOIN EMPLOYEETERRITORIES

Relacionando los campos EMPLOYEEID de ambas tablasON(EMPLOYEES.EMPLOYEEID=EMPLOYEETERRITORIES.EMPLOYEEID)

Y para el campo TERRITORYDESCRIPTION hacemos un inner con la tabla TERRITORIESINNER JOIN TERRITORIESRelacionando los campos TERRITORYID de ambas tablasON(TERRITORIES.TERRITORYID=EMPLOYEETERRITORIES.TERRITORYID)

-- consultar productos mostrando nombre precio--cantidad en existencia y categoria a la que pertenece mostrar ordenes con el nombre del vendedor--nombre del cliente (compañia)--fecha en que fue vendida

Seleccionamos los campos requeridos anteriormente y si queremos les cambiamos el titulo a cada campo con el comando As segudio del nombre deseadoSELECT PRODUCTID AS [ID PRODUCTO],PRODUCTNAME AS [NOMBRE],UNITPRICE AS [PRECIO UNITARIO],UNITSINSTOCK AS [EXISTENCIAS],CATEGORYID AS [CATEGORIA],SUPPLIERS.CONTACTNAME AS [PROVEDOR]

Extrayendolos de la tabla ProductsFROM PRODUCTS

Para el campo CONTACTNAME realizamos un inner con la tabla SuppliersRelacionando los campos supplierid de ambas tablasINNER JOIN SUPPLIERS ON(SUPPLIERS.SUPPLIERID=PRODUCTS.SUPPLIERID)

Page 12: practicas comentadas de subconsultas e inner join sql

Resultados

Page 13: practicas comentadas de subconsultas e inner join sql

Practica 5

Materia: Taller de base de datosUnidad: 3Fecha de práctica: 27 de octubre de 2015Numero de práctica: 5

Descripción de la Práctica:--consultar de la base de datos northwindMostrar todos los campos de la tabla order details con el id es igual 10252Mostrar el total a pagar de la orden 10252Mostrar el total a pagar ya con el descuendo de la orden 10252Mostrar al emplado mas viejoMostrar la suma total con el descuento de cada orden que se vendioObjetivo: conocer los comandos para ejecutar consultas con condiciones

Competencias a desarrollar: utilizar los comandos de selección hasta ahora conocidos para realizar una consulta con condiciones

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:Seleccionamos con select from todos los campos con la condicion de que el numero de orden sea 10252

select *from [Order Details]where OrderID = 10252

--con el comando sum mostramos el el total que se pago por la orden 10252

select SUM(UnitPrice * Quantity) as totalfrom [Order Details]where OrderID = 10252

--con el comando sum calculamos el total a pagar ya con el descuendo de la orden 10252, select SUM(Quantity*(UnitPrice-UnitPrice*Discount))from [Order Details]where OrderID = 10252

con el comando Min(nombre del campo) seleccionamos al empleado mas viejo al seleccionar la fecha mas antigua y compararla con una subconsulta

Page 14: practicas comentadas de subconsultas e inner join sql

select BirthDate, FirstName as viejofrom Employeeswhere BirthDate= (select min (BirthDate) from Employees)

-- Con el comando segudio de una serie de operacione matematicas con los campos mostramos la suma total con el descuento de cada orden que se vendioselect SUM((Quantity*UnitPrice)-(UnitPrice*Quantity*Discount)), OrderIDfrom [Order Details]group by OrderID

Resultados:

Page 15: practicas comentadas de subconsultas e inner join sql
Page 16: practicas comentadas de subconsultas e inner join sql

Práctica 6Materia: Taller de base de datosUnidad: 3Fecha de práctica: 28 de octubre de 2015Numero de práctica: 6

Descripción de la Práctica:--consultar de la base de datos northwind--de los empleados su titulo de cortesia su direccion y el numero de orden-- consultar productos mostrando nombre precio--cantidad en existencia y categoria a la que pertenece mostrar ordenes con el nombre del vendedor--nombre del cliente (compañia)--fecha en que fue vendida

Objetivo: conocer los comandos para ejecutar consultas combinadas

Competencias a desarrollar: utilizar los comandos de selección hasta ahora conocidos para realizar subconsultas y condiciones de selección

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:--selecciona los 5 empleados mas jovenes

Con el comando select seguido de Top y un numero seleccionamos los primero 5 registros de una tablaSELECT TOP 5 firstname

Extrayendolos de la tabla EmployeesFROM Employees

En este caso ordenandolos por fecha de nacimientoORDER BY (birthdate) DESC

Page 17: practicas comentadas de subconsultas e inner join sql

GO-- selecciona al empleado con mayor edad

Con el comando select * seleccionamos todos los campos de un registro de una tabla en este caso de EmployeesSELECT *FROM Employees

Con la condicion de que la fecha de nacimiento sea igual al registo con la fecha de nacimiento mas reciente esto se logra comparando el campo birthdate con una subocnsulta con un Min del registro del mismo campo con la fecha mas recienteWHERE birthdate= (SELECT MIN (birthdate)FROM Employees)

-- selecciona al empleado con menor edad

Con el comando select * seleccionamos todos los campos de un registro de una tabla en este caso de Employees

SELECT *FROM Employees

Con la condicion de que la fecha de nacimiento sea igual al registo con la fecha de nacimiento mas antigua esto se logra comparando el campo birthdate con una subocnsulta con un Max del registro del mismo campo con la fecha mas antigua

WHERE birthdate= (SELECT MAX (birthdate)FROM Employees)

SELECT *FROM Employees

-- Inserta empleadosCon el comando insert into seguido del nombre de la tabla damos la instruccion de insertar datos en ella ademas de especificar entre parentesis los campos que se ingresaran

Insert into Employees (lastname,firstname,birthdate)

Seguido del comando values y entre parentesis separados por coma los nuevos valoresValues('Pardo','Jessica','1995-11-06'),('Lopez','Raul','1980-04-12'),('Perez','Cesar','1995-09-30'),('Nolasco','Jose','1994-05-15'),('Sanchez','Luis','1994-06-10'),('Monroy','Rosa','1993-01-25'),('Ceballos','Victor','1993-06-11'),

Page 18: practicas comentadas de subconsultas e inner join sql

('Rivera','Gianny','1985-03-16')

--cambia la fecha de nacimiento del empleado 10

Con el comando update seguido del nombre de la tabla modificaremos la misma pero con la condicion de que solo sea modificada donde el empleado sea el numero 10Update Employees set birthdate='1995-04-12' where employeeid=10

--Inserta ordenes

Con el comando insert into seguido del nombre de la tabla damos la instruccion de insertar datos en ella ademas de especificar entre parentesis los campos que se ingresaranInsert into Orders(customerid,employeeid,orderdate,requireddate,shippeddate,shipvia,Freight,shipname,shipaddress,shipcity,shipregion,shippostalcode,shipcountry)

Seguido del comando values y entre parentesis separados por coma los nuevos valoresValues('SUPRD','11','2015-10-12','2015-12-22','2015-10-21',1,26.45,'Victuailles en stock','Rua do Paço, 67','Münster','RJ','05454-876','Belgium'),('HILAA','13','2015-10-17','2015-12-23','2015-10-26',1,29.45,'Richter Supermarkt','Rua do Mercado, 12','Charleroi','Essex','PO31 7PJ','Mexico'),('VINET','12','2015-10-29','2015-12-29','2015-10-29',3,23.45,'Hanari Carnes','Hauptstr. 31','Lyon','SP','3012','Switzerland')

--Inserta registros en order details

Con el comando insert into seguido del nombre de la tabla damos la instruccion de insertar datos en ella ademas de especificar entre parentesis los campos que se ingresaranInsert into [Order Details]

Seguido del comando values y entre parentesis separados por coma los nuevos valoresValues(11079,41,9.00,6,0),(11080,42,9.00,7,0),(11078,11,12.00,4,0)

Page 19: practicas comentadas de subconsultas e inner join sql

Resultados

Page 20: practicas comentadas de subconsultas e inner join sql

Practica 7Materia: Taller de base de datosUnidad: 3Fecha de práctica: Numero de práctica: 7

Descripción de la Práctica: Inserta datos en una tabla mediante la instrucción select

Objetivo: conocer los comandos para insertar datos en una tabla

Competencias a desarrollar: Agregar registros a una tabla de una base de datos

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento: seleccionamos la base de datos NorthwindUse Northwind

creamos la tabla estadisticacreate table estadistica(orderId int primary key,orderDate date,totalCobrado money,vendedor varchar(45))

Con el comando insert into seguido del nombre de la tabla insertamos datos ahora mediante la instrucción select para seleccionar los datos de otra tabla insert into estadistica select orderID,orderDate,(select SUM(unitprice*quantity)from [Order Details] d whereo.orderId = d.OrderID),e.lastname+' '+e.firstnamefrom Orders o inner join Employees eon (o.EmployeeID = e.EmployeeID)

ahora con el comando select y los nombres de los campos seguido de into y el nombre de la tabla se crea la tabla por ultimo el from para seleccionar la tabla de donde extraemos los datos con la condicion establecidaselect orderid, orderdate, customeridinto ordenesdelcincofrom orders

Page 21: practicas comentadas de subconsultas e inner join sql

where EmployeeID = 5

por ultimo creamos la vista haciendo una selección nornmal con select from create view vistaas(select orderID,orderDate, e.lastname+' '+e.firstname as empleadofrom Orders o inner join Employees eon (o.EmployeeID = e.EmployeeID))

Resultados

Page 22: practicas comentadas de subconsultas e inner join sql
Page 23: practicas comentadas de subconsultas e inner join sql

Practica 8Materia: Taller de base de datosUnidad: 3Fecha de práctica: 12 de noviembre de 2015Numero de práctica: 8

Descripción de la Práctica: Realiza las siguientes operaciones--Inserta al menos 15 productos--Inserta 10 clientes--Inserta los siguientes proveedores

Objetivo: conocer los comandos para insertar datos en una tabla

Competencias a desarrollar: Agregar registros a una tabla de una base de datos

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:--Inserta al menos 15 productosUsamos el comando insert into seguido del nombre de nuestra tabla y en parentesis los campos en los que insertaremos nuevos datosInsert into Products(productname,supplierid,categoryid,unitprice,unitsinstock,unitsonorder,Discontinued)

Seguido del comando values y entre parentesis los valoresValues('chocotavo',8,1,20.00,30,21,1),('Ritter Sport',9,2,23.00,33,25,1),('Bombay Sapphire',3,1,20.00,30,21,1),('Stolichnaya',4,3,20.00,30,21,1),('Ketel One',5,5,20.00,30,21,1),('Ben And Jerrys',8,1,20.00,30,21,1),('Haagen Dazs',4,3,40.00,30,21,1),('Sayes',4,3,320.00,30,21,1),('Brookside',5,5,220.00,30,21,1),('Butter Toffees',9,2,1120.00,80,211,1),('Cavendish Harvey',9,2,210.00,60,31,1),('Grand Belgian',5,5,220.00,40,61,1),('Las Sevillanas',4,3,10.00,301,11,1),('Joseph Farms',9,2,50.00,300,71,0),('Laclette',9,2,20.00,340,21,0),

Page 24: practicas comentadas de subconsultas e inner join sql

('Gringo Bandito',4,3,25.00,35,26,1)

--Inserta 10 clientes

Usamos el comando insert into seguido del nombre de nuestra tabla y en parentesis los campos en los que insertaremos nuevos datosInsert into Customers(customerid,companyname,contactname,contacttitle,Address,City,postalcode,Country,Phone)

Seguido del comando values y entre parentesis los valoresValues('FEDRA','Tacoclub','Fedra Moreno Segovia','Owner','Käbbatorp Locketorp 97','RYDSGÅRD','270 12','Sweden','0411-9511344'),('DELMA','tvnet','Delma Sisneros Varela','Owner','Parmova 118','Loka pri Žusmu','3223 ','Slovenia','070-545-385'),('SEMPR','burritosnetwork','Sempronio Ceballos Santana','chef','R Carne Azeda 42','FUNCHAL','9050-457','Portugal','21 291 276 3602'),('ANNAB','aguapurific','Annabel Collado Regalado','manager','46, rue de la Mare aux Carats','MONTPELLIER','34070','Francia','04.12.36.39.00'),('OTOPA','joyeriaoto','Oto Parra Treviño','manager','Suur-Laagri 75','Tallinn','12112','Estonia','634 0844'),('IGNAC','joyeriaign','Ignacio Alonso Acuna','manager','Bramstrup 23','København K','1001','Estonia','634 0844'),('POMPE','pepejeans','Pompeo Cintrón Canales','manager','2378 Quayside Dr','New Westminster','BC V3M 6A1','Canada','604-351-7792'),('CESAR','papajeans','César Ochoa Luján','owner','Norðurbraut 23','Reykjavík','112','Islandia','428 4525'),('EDMUN','Boogie of love','Edmund Valadez Ruelas','owner','5008 Szandaszôlôs','Apor Péter u.','84','Hungria','(56) 766-850'),('CRIST','relojclub','Christina F. Lane','Owner','1468 Buckhannan Avenue','New York','13206','EUA','315-414-4722')

--Inserta los siguientes proveedores

Usamos el comando insert into seguido del nombre de nuestra tabla y en parentesis los campos en los que insertaremos nuevos datosInsert into Suppliers (companyname,contactname,contacttitle,City)

Seguido del comando values y entre parentesis los valoresValues('Iceland ice cream','Peter','Sales Agent','Selfoss'),('Irish whisky','Willy','Sales Agent','Dublin'),('Sonora´s packed fire','Juan','Bandito','Sonora'),('Sinaloa´s packed fire','Ana','Brto','Sinaloa'), ('Bebidas Exoticas' , 'Charlotte Copper', 'Purchasing Manager' , '49 Gilbert St.' , 'London' , 'LA', '63000'),

Page 25: practicas comentadas de subconsultas e inner join sql

('Platillos Americanos' , 'Shelley Burke' , 'Order Administrator' , 'P.O. Box 78934' ,'New Orleans', 'LA', '63000'),('Cooperativa los almada', 'Regina Murphy' , 'Sales Representative', '707 Oxford Rd. ','Ann Arbor ' ,'MI', '75000'),('Sushi start' , 'Yoshi Nagase' , 'Marketing Manager' , '9-8 Sekimai Musashino-shi','Tokyo' ,'LA', '75000'),('Cabaña los suecos' , 'Antonio del Valle Saavedra', 'Export Administrator', 'Calle del Rosal 4', 'Oviedo', 'Asturias', '63000'),('Especialidades gourmet', 'Mayumi Ohno' ,'Marketing Representative','92 Setsuko Chuo-ku' , 'Osaka' ,'NSW', '63117'),('American cooke' , 'Ian Devling' , 'Marketing Manager' , '74 Rose St. Moonie Ponds' , 'Melbourne','Victoria','63117'),('Isla el paraiso' , 'Peter Wilson' , 'Sales Representative', '29 Kings Way' ,'Manchester ' ,'NSW', '75850'),('Olmos la villa' , 'Lars Peterson' , 'Sales Agent' , 'Kaloadagatan 13' , 'Göteborg' ,'Québec','75850')

Page 26: practicas comentadas de subconsultas e inner join sql

Resultados

Page 27: practicas comentadas de subconsultas e inner join sql

Practica 9

Materia: Taller de base de datosUnidad: 3Fecha de práctica: 12 de noviembre de 2015Numero de práctica: 9

Descripción de la Práctica: Realiza las siguientes operaciones--Aumentar un 10% al precio de los productos cuya nombre de categorías empiece con C o M

--Selecciona la órdenes que se han vendido productos cuyo precio venta sea mayor al promedio de los precio unitarios de los productos.

--Selecciona el nombre del producto, el proveedor y el precio unitario de los productos que se han vendido a un precio menor que su precio actual

--Consulta los productos que no se han vendido nunca.

--Borrar todos los proveedores que no nos han vendido ningún producto. Y además que su nombre empiece con una vocal

--Mostrar una lista de las órdenes y los clientes que las compraron en donde se ha pedido más de 20 unidades del producto 23.

Objetivo: Realizar modificaciones a tablas mediante uso de comparadores y consultas combinadas

Competencias a desarrollar: Correcto uso de comparadores y consultas combinadas

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:--Aumentar un 10% al precio de los productos cuya nombre de categorías empiece con C o MUsamos el comando update seguido del nombre de la tabla para modificarlaUpdate Products

El comando set seguido del campo y el nuevo valor que se le asignaraSet unitprice= unitprice+(unitprice*.10)

En la condicion where relacionamos el id de la categoria del producto con el id de la categoria de la tabla categorias donde dicha categoria comience con C o M realizando una subconsulta

Page 28: practicas comentadas de subconsultas e inner join sql

Where categoryid in (select categoryidFrom CategoriesWhere categoryname like 'C%' or categoryname like 'M%')

--Selecciona la órdenes que se han vendido productos cuyo precio venta sea mayor al promedio de los precio unitarios de los productos.

Seleccionamos todo de ordenesSelect *From Orders

En la condicion where relacionamos el orderid de la tabla ordenes con el orderid de la tabla order details mediante una subconsulta donde seleccionaremos las ordenes que se han vendido de los productos cuyo precio de venta sea mayor al promedio de los precio unitarios de los productos esto con el comando AVG .Where orderid in (select orderidFrom [Order Details]Where ([Order Details].unitprice*[Order Details].Quantity)> (select AVG(Products.unitprice) from Products))

--Selecciona el nombre del producto, el proveedor y el precio unitario de los productos que se han vendido a un precio menor que su precio actual

Hacemos selección de los campos mediante el comando selectSelect [Order Details].orderid,Products.productname,Suppliers.contactname,Products.unitprice

Referenciando a la tabla productsFrom ProductsPara referenciar a las demas tablas realizamos dos inner join

Primero para la tabla suppliers relacionando los campos supplierid de cada tablaInner join SuppliersOn Products.supplierid=Suppliers.supplierid

Segundo con la tabla Order Details relacionando los campos productid de cada tablaInner join [Order Details]On Products.productid=[Order Details].productid

Con la condicion de seleccionar solo los registros de productos que se han vendido a un precio menor que su precio actualWhere Products.unitprice>[Order Details].unitprice

Page 29: practicas comentadas de subconsultas e inner join sql

--Borrar todos los proveedores que no nos han vendido ningún producto. Y además que su nombre empiece con una vocalMediante el comando delete from seguido del nombre de la tabla borraremos todos los registros de dicha tablaDeleteFrom Suppliers

Pero al agregar el comando where eliminaremos solo aquellos registros que seleccionemos, en este caso usamos el comando not exists seguido de una subconsulta al relacionar el supplierid de la tabla Suppliers con el de la tabla products, para eliminar aquellos registros proveedores que no existan en la tabla productos pues no nos han vendido nada,k ademas de una ultima condicion donde el nombre de los proveedores comience con AWhere not exists(select Products.supplieridFrom ProductsWhere Suppliers.supplierid=Products.supplierid) and Suppliers.contactname like 'A%'

--Mostrar una lista de las órdenes y los clientes que las compraron en donde se ha pedido más de 20 unidades del producto 23.

Hacemos selección de los campos mediante el comando selectSelect Orders.orderid,productid,unitprice,Quantity,Discount,Customers.contactname

Referenciando a la tabla OrdersFrom Orders

Relacionando la tabla Order Details con inner join relacionando el orderid de ambas tablasInner join [Order Details]OnOrders.orderid=[Order Details].orderid

Relacionando la tabla Customers con inner join relacionando el customerid de ambas tablasInner join CustomersOnOrders.customerid=Customers.customerid

Con la condicion de que el id del producto sea 23 y la cantidad del mismo sea mayor a 20

Page 30: practicas comentadas de subconsultas e inner join sql

Where [Order Details].productid=23 and [Order Details].Quantity>20

Page 31: practicas comentadas de subconsultas e inner join sql

Resultados

Page 32: practicas comentadas de subconsultas e inner join sql

Practica 10Materia: Taller de base de datosUnidad: 3Fecha de práctica: 12 de noviembre de 2015Numero de práctica: 10

Descripción de la Práctica: Realiza las siguientes operaciones--insertar en una tabla todos los productos que no se han vendido, con los siguientes datos: id producto, nombre de producto, precio unitario y nombre de la categoría a que pertenece.

--inserta en una nueva tabla lo productos con sus proveedores que nos lo surten

--insertar en una tabla lo siguiente--no.de orden, fecha de orden, cliente que la compro, empleado que lo vendió,

cuantos tipos de productos distintos se vendieron en esa orden.

--crea una vista que contenga lo siguiente--id del producto, nombre del producto, total en pesos que se ha vendido del producto

--crea una vista que contenga lo siguiente--empleado id,nombre completo del empleado, total que a vendido en pesos,

nombre de su supervisor

--crea una vista que contenga--empeado,cantidad de ordenes que ha vendido

--crea una vista que contenga--nombre del producto,total de productos que hemos vendido

Objetivo: Realizar modificaciones a tablas mediante uso de comparadores y consultas combinadas

Competencias a desarrollar: Correcto uso de comparadores y consultas combinadas

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Page 33: practicas comentadas de subconsultas e inner join sql

Procedimiento:

--Insertar en una tabla todos los productos que no se han vendido, con los siguientes datos: id producto, nombre de producto, precio unitario y nombre de la categoría a que pertenece.

Creamos una tabla para almacenar los productos no vendidosCreate table productosnovendidos(Id_producto int primary key,Nombre_producto nvarchar(40),Precio_unitario money ,Categoria nvarchar(15))

Una vez creada procedemos a insertar en ella los registros de la tabla productos que no han sido vendidos con el comando insert intoInsert into productosnovendidos

A excepcion de que esta vez no usaremos values si no que seleccionaremos directamente con el comando select a la tabla productosSelect Products.productid,Products.productname,Products.unitprice,Products.categoryidFrom Products

Con la condicion de que si los productos no se encuentran en la tabla order details sean introducidos a nuestra nueva tabla esto se logra con el comando not exists para verificar que no existan en order detailsWhere not exists (select [Order Details].productidFrom [Order Details]Where Products.productid=[Order Details].productid)

--Inserta en una nueva tabla lo productos con sus proveedores que nos lo surten

Creamos una tabla para almacenar productos y sus proveedoresCreate table productos_y_proveedor(Id_producto int primary key,Nombre_producto nvarchar(40),Precio_unitario money ,Categoria nvarchar(15),Supplierid int)

Page 34: practicas comentadas de subconsultas e inner join sql

Con el comando insert into indicamos que se insertaran datos en la tablaInsert into productos_y_proveedorEn vez de values usamos select para seleccionar de la tabla productos y proveedores los campos necesariosSelect Products.productid,Products.productname,Products.unitprice,products.categoryid,Suppliers.supplieridFrom Products

Con un inner join enlazamos las tablas productos y proveedores con el campo supplierid de cada tablaInner join SuppliersOnProducts.supplierid=Suppliers.supplierid

--Insertar en una tabla lo siguiente--No.De orden, Fecha de orden, Cliente que la compro, Empleado que lo vendió, Cuantos tipos de productos distintos se vendieron en esa orden.

Creamos una tabla para este cometido con los campos requeridosCreate table cantidad_productos(No_orden int primary key,Fecha_orden datetime,Cliente_que_compra nchar(5),Empleado_id int,Productos_vendidos int)

Una vez creada insertamos en ella valoresInsert into cantidad_productos

Los cuales seran recavados ,de la tabla order details mediante el comando select para posteriormente ser insertados, para el campo productos vendidos sera necesario el uso de una subconsulta que seleccione un contador de todos los productos de esa orden relacionando tal subconsulta con el id de la ordenSelect orderid,orderdate,customerid,employeeid,(select COUNT(productid) from [Order Details]Where Orders.orderid=[Order Details].orderid)From Orders

Page 35: practicas comentadas de subconsultas e inner join sql

Practica 11Materia: Taller de base de datosUnidad: 3Fecha de práctica: 12 de noviembre de 2015Numero de práctica: 11

Descripción de la Práctica: Realiza las siguientes operaciones--crea una vista que contenga--empeado,cantidad de ordenes que ha vendido

--crea una vista que contenga--nombre del producto,total de productos que hemos vendido

Objetivo: Realizar modificaciones a tablas mediante uso de comparadores y consultas combinadas

Competencias a desarrollar: Correcto uso de comparadores y consultas combinadas

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Page 36: practicas comentadas de subconsultas e inner join sql

Procedimiento:

--crea una vista que contenga lo siguiente

--id del producto, nombre del producto, total en pesos que se ha vendido del producto

Con el comando create view creamos una vista que alojara camposCreate view cantidad_en_pesosAsLos cuales seran colocados mediante el comando select y para colocar el total en pesos que se ha vendido del producto se debera hacer una subconsulta a order details seleccionando una suma de los precios unitarios del producto relacionando la subconsulta con el campo product id de ambas tablasSelect productid,productname,(select SUM(unitprice) from [Order Details] where Products.productid=[Order Details].productid) as precio_totalFrom Products

--Crea una vista que contenga lo siguiente--EMPLEADO ID, NOMBRE COMPLETO DEL EMPLEADO, TOTAL QUE A VENDIDO EN PESOS, NOMBRE DE SU SUPERVISOR

Con el comando create view creamos una vista que alojara campos

Create view empleado_ha_vendido_en_pesosAs

Los cuales seran colocados mediante el comando select y para colocar el total en pesos que ha vendido se hara uso de 2 inner join

Select Employees.employeeid,firstname,lastname,reportsto, SUM(unitprice) as total_vendidoFrom Employees

El primero con ordersInner join OrdersOnDonde relacionamos el Employee ID de la tablas Employees y OrdersEmployees.employeeid=Orders.employeeidEl segundo con Order DetailsInner join [Order Details]Donde relacionamos el Order ID orders y Order DetailsOn Orders.orderid=[Order Details].orderidAgrupando los registros por los siguientes parametrosGroup by Employees.employeeid,firstname,lastname,reportsto

Page 37: practicas comentadas de subconsultas e inner join sql

--Crea una vista que contenga--EMPEADO,CANTIDAD DE ORDENES QUE HA VENDIDO

Con el comando create view creamos una vista que alojara camposCreate view empleado_ordenes_vendidasAsLos cuales seran colocados mediante el comando select y para colocar el total de ordenes que ha vendido se hara uso de inner join

Select Employees.employeeid,COUNT(Orders.orderid) as ordenes_vendidasFrom EmployeesSe hara un inner join con la tabla OrdersInner join OrdersOnRelacionando el campo employeeid de Employees y OrdersOrders.employeeid=Employees.employeeid

Agrupando los registros por employeeidGroup by Employees.employeeid

--crea una vista que contenga--nombre del producto,total de productos que hemos vendido

Con el comando create view creamos una vista que alojara camposCreate view total_productosAs

Los cuales seran colocados mediante el comando select y para colocar el total de productos que se han vendido haremos una subconsulta que seleccionar el total de productos en Order Details relacionando el campo Product ID de la tabla Products y Order DetailsSelect productname,(select COUNT([Order Details].productid) from [Order Details]Where Products.productid=[Order Details].productid) as total_vendidosFrom Products

Agrupando los registros por los siguientes parametrosGroup by Products.productid,Products.productname

Page 38: practicas comentadas de subconsultas e inner join sql

Resultados

Page 39: practicas comentadas de subconsultas e inner join sql
Page 40: practicas comentadas de subconsultas e inner join sql

Practica 12Descripción de la Práctica: Realiza las siguientes operaciones--mostrar los art que pertenecen a las familias que empiezan con una vocal---cuantos articulos hay por cada familia----crear una vista que tenga cuantos art hay por cada tipo de bien--mostrar las cuentas ant que no tienen cuenta nueva relacionada--mostrar los conceptos que pertencen a cada capitulo ordenadas capitulo mas concepto--mostrar las partidas genericas que tengan equipo en su descripcion y que sus conceptos pertenezcan al capitulo 5

Objetivo: Realizar consultas y vistas de tablas

Competencias a desarrollar: Correcto uso de comparadores y consultas combinadas

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:

--mostrar los art que pertenecen a las familias que empiezan con una vocalwhere scvefam in(select scvefam from cFamilia where sdesfam like '[a,e,i,o,u]%')---cuantos articulos hay por cada familiaselect scvefam, COUNT(*) from bm_convalidacion group by scvefam

----crear una vista que tenga cuantos art hay por cada tipo de biencreate view tipoDeBienASselect sdesart, COUNT(*)as cuantos from cartiinner join cFamiliaoncarti.scvetb=cFamilia.scvetbinner join cTipoBienoncFamilia.scvetb=cTipoBien.scvetb group by sdesart

select * from tipoDeBien

--mostrar las cuentas ant que no tienen cuenta nueva relacionadaselect * from cartiwhere scvetb+scvefam+scveart not in(select scvetb+scvefam+scveart from bm_convalidacion)

--mostrar los conceptos que pertencen a cada capitulo ordenadas capitulo mas conceptoselect concepto from pp_cat_conceptos order by (capitulo+concepto)

Page 41: practicas comentadas de subconsultas e inner join sql

--mostrar las partidas genericas que tengan equipo en su descripcion y que sus conceptos pertenezcan al capitulo 5select pdagenerica from pp_cat_partidasgen where descripcion like '%EQUIPO%' AND capitulo=5

Page 42: practicas comentadas de subconsultas e inner join sql

Practica 13Descripción de la Práctica: Realiza las siguientes operaciones-inserte 30 heroes-inserte 30 enemigos-asignar minimo 2 enemigos a cada super heroe, 2 poderes a cada heroe y 2 -poderes a cada enemigo-actualizar el lugar que defiende todos los enemigos cuyo id este de rango de 3 a 20 y que su apodo tenga una a,z,w,b,t,e,i,o,u*/-muestre la siguiente informacion apodo, cantidad poderes, cantidad enemigos-crea una vista con el apodo del superheore y el apodo de su enemigo de cada heroe-por medio de subconsultas muestra todos los datos de los superheroes que tengan de dos a tres enemigos-inserta todos los enemigos en una tabla nueva de los sig superheroes: superman, batman, goku-una tabla nueva por cada unoelimina a todos los superheroes que no tengan enemigos ni poderes

Objetivo: Realizar modificaciones a tablas mediante uso de comparadores y consultas combinadas además de insertar datos en las tablas

Competencias a desarrollar: Correcto uso de comparadores y consultas combinadas

Lugar de la práctica: Laboratorio de computo sala “A”

Equipo y/o material a utilizar: SQL server 2008 R2 management studio

Procedimiento:

/*Query 1. Inserte 30 Heroes*/

Con el comando insert into seguido del nombre de la tabla damos la instruccion de insertar datos en ella ademas de especificar entre parentesis los campos que se ingresaran

INSERT INTO HEROES

Seguido del comando values y entre parentesis separados por coma los nuevos valores

VALUES('FLA','BARRY ALLEN','FLASH','A','SIN LUGAR','04-16-1995','CORRE RÁPIDO')GOINSERT INTO HEROESVALUES('ARR','OLIVER QUEEN','ARROW','A','SIN LUGAR','03-12-1980','TIENE BUENA PUNTERÍA')GOINSERT INTO HEROES

Page 43: practicas comentadas de subconsultas e inner join sql

VALUES('QUI','QUICKSILVER','QUICKSILVER','A','SIN LUGAR','06-30-1970','ES RÁPIDO')GOINSERT INTO HEROESVALUES('BRU','BRUJA ESCARLATA','SCARLET WITCH','A','NEW YORK','03-14-1986','TIENE PODERES')GOINSERT INTO HEROESVALUES('LNV','LINTERNA VERDE','LINTERNA VERDE','A','PLANETA VERDE','01-10-1960','ES VERDE')GOINSERT INTO HEROESVALUES('CPA','STEVE RODGERS','CAPITÁN AMÉRICA','A','ESTADOS UNIDOS','12-15-1985','ES LÍDER')GOINSERT INTO HEROESVALUES('VIS','VISION','VISION','A','SIN LUGAR','06-05-2015','NACIÓ AYER')GOINSERT INTO HEROESVALUES('AQU','AQUAMAN','AQUAMAN','A','SIN LUGAR','07-15-1980','VIVE BAJO EL AGUA')GOINSERT INTO HEROESVALUES('SAM','DAVID SAMANIEGO','SAMA','A','TEPIC','02-16-1985','TIENE UNA MACBOOK')GOINSERT INTO HEROESVALUES('CHA','CHAYANNE','CHAYANNE','A','PUERTO RICO','05-19-1973','ES TORERO')GOINSERT INTO HEROESVALUES('IMA','IMANOL','EL HOMBRE IMANOL','A','SIN LUGAR','09-17-1986','ES CANTANTE')GOINSERT INTO HEROESVALUES('FAL','FALCON','FALCON PRO','A','SIN LUGAR','08-15-1974','ES AMIGO DE CAPITÁN AMÉRICA')GOINSERT INTO HEROESVALUES('GBU','GEORGE BUSH','GEORGE BUSH EL AMERICANO','A','ESTADOS UNIDOS','11-10-1982','NO LE TIEMLA LA MANO')GOINSERT INTO HEROESVALUES('WAR','DOMINIC RHODES','WAR MACHINE','A','SIN LUGAR','07-14-1979','ES AMIGO DE IRONMAN')GOINSERT INTO HEROES

Page 44: practicas comentadas de subconsultas e inner join sql

VALUES('MUJ','MUJER MARAVILLA','WONDER WOMAN','A','SIN LUGAR','05-17-1993','ES MARAVILLA')GOINSERT INTO HEROESVALUES('BLA','BLACK PANTER','BLACK PANTER','A','SIN LUGAR','10-15-1970','ES UNA PANTERA')GOINSERT INTO HEROESVALUES('WOL','HUGH JACKMAN','WOLVERINE','A','SIN LUGAR','12-15-1951','TIENE GARRAS')GOINSERT INTO HEROESVALUES('TOR','TORMENTA','TOMRENTA','A','SIN LUGAR','09-15-1968','CAUSA UNA TORMENTA')GOINSERT INTO HEROESVALUES('MRE','REED RICHARDS','MR. FANTÁSTICO','A','SIN LUGAR','07-19-1978','ES ELÁSTICO')GOINSERT INTO HEROESVALUES('MUI','SUE STORM','MUJER INVISIBLE','A','SIN LUGAR','04-13-1979','ES INVISIBLE')GOINSERT INTO HEROESVALUES('ANT','JOHN STORM','ANTORCHA HUMANA','A','SIN LUGAR','02-20-1996','ES DE FUEGO')GOINSERT INTO HEROESVALUES('MOL','LA MOLE','LA MOLE','A','SIN LUGAR','08-17-1981','ES MUY FUERTE')GOINSERT INTO HEROESVALUES('SIR','SIRENOMAN','SIRENOMAN','A','FONDO DE BIKINI','01-12-1975','ES CHIDO')GOINSERT INTO HEROESVALUES('GAR','GARNICA','AMIGO CHURRO','B','Tepic','10/02/2010','Es un genio')GOINSERT INTO HEROESVALUES('DAL','DAVID LOPEZ','HOMBRE MONO','A','GUADALAJARA','11/22/2000','Es un trepador')GOINSERT INTO HEROESVALUES('CRL','CRISTIAN LOPEZ','CANGREJO','A','LONDRE','08/12/2003','USA BURBUJAS')GOINSERT INTO HEROESVALUES('CEM','CESAR MARTIN','HOMBRE BALLENA','B','COLIMA','01/12/2003','Poder supersonico')

Page 45: practicas comentadas de subconsultas e inner join sql

GOINSERT INTO HEROESVALUES('ROG','ROSA GARCIA','MUJER BURBUJA','B','MAZATLAN','01/12/2005','Poder agua')GOINSERT INTO HEROESVALUES('RYU','RYU JUNIOR','CINTON','B','NUEVA YORK','10/12/2004','Domina artes marciales')GOINSERT INTO HEROESVALUES('CHL','MARIA CARMEN','CHUN LEE','B','JAPON','11/12/2003','Poder de cuchillos')

/*Query 2. Inserte 30 Enemigos*/Con el comando insert into seguido del nombre de la tabla damos la instruccion de insertar datos en ella ademas de especificar entre parentesis los campos que se ingresaran

Seguido del comando values y entre parentesis separados por coma los nuevos valores

INSERT INTO ENEMIGOS VALUES ('Miguel Perez', 'Joker','G','Payaso', 'Es bromista')GOINSERT INTO ENEMIGOS VALUES ('Miguel Lopez', 'Reverse Flash','G','Amarillo', 'Es malo')GOINSERT INTO ENEMIGOS VALUES ('Roberto Tapia', 'Loki','S','Alto', 'Apira dominar el mundo')GOINSERT INTO ENEMIGOS VALUES ('Luis Garnica', 'Capitan Churro','S','Alto y fornido', 'Malvado por naturaleza')GOINSERT INTO ENEMIGOS VALUES ('Pablo Crespo', 'Perseve Malefico','G','Muchas escamas', 'Dominar los Oceanos')GOINSERT INTO ENEMIGOS VALUES ('Flash Thompson', 'Venom','G','Negro Pegajoso', 'Matar a gente buena')GOINSERT INTO ENEMIGOS VALUES ('Roberto Mejia', 'Capitan Frio','S','Usa ropa invernal', 'Quiere ser el mas malvado')GOINSERT INTO ENEMIGOS VALUES ('David Gil', 'pewdiepie','G','Alto con mucha barba', 'Ser el rey de los gameplays')GOINSERT INTO ENEMIGOS VALUES ('Miguel Contreras', 'Thanos','G','Morado', 'Quiere conquistar a la muerte')GO

Page 46: practicas comentadas de subconsultas e inner join sql

INSERT INTO ENEMIGOS VALUES ('Julion Alvarez', 'Corridoman','G','Es de rancho y usa sombrero', 'Dejar sordo a todo el planeta')GOINSERT INTO ENEMIGOS VALUES ('Wario Perez', 'Wario','S','Gordito amarillo', 'Conquistar a la princesa')GOINSERT INTO ENEMIGOS VALUES ('Wilson Fisk', 'King Ping','G','Alto con sobrepeso', 'Dominar newyork')GOINSERT INTO ENEMIGOS VALUES ('Harry Osborn', 'Dueden Verde','G','Verde muy verde', 'Obtener gran poder')GOINSERT INTO ENEMIGOS VALUES ('Luis Arellano', 'Sandman','S','Arenoso', 'Robar para tener dinero')GOINSERT INTO ENEMIGOS VALUES ('Casimiro del Aguila', 'Picollo','S','Morado con blanco', 'Destruir Planetas')GOINSERT INTO ENEMIGOS VALUES ('Julum Dama', 'Inquisidor','S','Payaso', 'Es bromista')GOINSERT INTO ENEMIGOS VALUES ('Francisco Ibarra', 'Reverse FIC','G','Super fuerte y alto', 'Detener a FIC verdadero')GOINSERT INTO ENEMIGOS VALUES ('Enrique Peña', 'Peñaman','s','Fuerte y con copete', 'Dominar Mexico')GOINSERT INTO ENEMIGOS VALUES ('Cesar Mendez', 'Red Hulk','G','Rojo escarlata', 'Furia Incontrolable')GOINSERT INTO ENEMIGOS VALUES('ALFREDO DOMINGUEZ','DARTH VADER','S','SEÑOR DE LOS SITH','PODER Y ODIO')GOINSERT INTO ENEMIGOS VALUES('Emperador Palpatine','DARTH SIDIOUS','S','SEÑOR OSCURO','DESEO DOMINAR LA FUERZA')GOINSERT INTO ENEMIGOS VALUES('Juan Martinez','Señor Villano Malvado','G','Poderoso','Es malvado porque si')GOINSERT INTO ENEMIGOS VALUES('Juan López','Piccollo','S','Hombrecillo verde','CARÁCTER NEGATIVO')GOINSERT INTO ENEMIGOS VALUES('Alcaraz Martinez','Apocalipsis','G','MAGNÉTICO','MALDAD POR RIQUEZA')GOINSERT INTO ENEMIGOS VALUES('Pedro Ramirez','KUMA','S','FUERTE Y GRANDE','ODIO POR LA HUMANIDAD')GO

Page 47: practicas comentadas de subconsultas e inner join sql

INSERT INTO ENEMIGOS VALUES('Jose Torres','ZANTSIEG','G','COMO UN LUCHADOR DE WWE','DEMOSTRAR SU FUERZA')GOINSERT INTO ENEMIGOS VALUES('Mario Alfredo','FREEZER','S','ROSADO Y RARO','DOMINAR EL MUNDO')GOINSERT INTO ENEMIGOS VALUES('Carlos Robles','ANTI-HEROE','G','JOVEN Y SUBE VIDEOS EN YOUTUBE','CAMBIAR MENTES')GOINSERT INTO ENEMIGOS VALUES('Pedro Torres','Cholo','S','Es un ISC','DESEOS DE CONTROL')GOINSERT INTO ENEMIGOS VALUES('José Pérez','Mi Villano Favorito','g','SEÑOR DE LOS SITH','CONVERTIRSE EN EL MEJOR VILLANO')

INSERT INTO DETALLE_ENEMIGO VALUES('ANT',3)GOINSERT INTO DETALLE_ENEMIGO VALUES('ANT',6)GOINSERT INTO DETALLE_ENEMIGO VALUES('AQU',9)GOINSERT INTO DETALLE_ENEMIGO VALUES('AQU',12)GOINSERT INTO DETALLE_ENEMIGO VALUES('ARR',15)GOINSERT INTO DETALLE_ENEMIGO VALUES('ARR',18)GOINSERT INTO DETALLE_ENEMIGO VALUES('BAT',21)GOINSERT INTO DETALLE_ENEMIGO VALUES('BAT',23)GOINSERT INTO DETALLE_ENEMIGO VALUES('BLA',26)GOINSERT INTO DETALLE_ENEMIGO VALUES('BLA',29)GOINSERT INTO DETALLE_ENEMIGO VALUES('BRU',2)GOINSERT INTO DETALLE_ENEMIGO VALUES('BRU',5)GOINSERT INTO DETALLE_ENEMIGO VALUES('BTC',8)GOINSERT INTO DETALLE_ENEMIGO VALUES('BTC',11)GOINSERT INTO DETALLE_ENEMIGO VALUES('CEM',14)GOINSERT INTO DETALLE_ENEMIGO VALUES('CEM',17)GOINSERT INTO DETALLE_ENEMIGO VALUES('CHA',20)

Page 48: practicas comentadas de subconsultas e inner join sql

GOINSERT INTO DETALLE_ENEMIGO VALUES('CHA',23)GOINSERT INTO DETALLE_ENEMIGO VALUES('CHL',26)GOINSERT INTO DETALLE_ENEMIGO VALUES('CHL',29)GOINSERT INTO DETALLE_ENEMIGO VALUES('CPA',1)GOINSERT INTO DETALLE_ENEMIGO VALUES('CPA',4)GOINSERT INTO DETALLE_ENEMIGO VALUES('CRL',7)GOINSERT INTO DETALLE_ENEMIGO VALUES('CRL',10)GOINSERT INTO DETALLE_ENEMIGO VALUES('DAL',13)GOINSERT INTO DETALLE_ENEMIGO VALUES('DAL',16)GOINSERT INTO DETALLE_ENEMIGO VALUES('FAL',19)GOINSERT INTO DETALLE_ENEMIGO VALUES('FAL',22)GOINSERT INTO DETALLE_ENEMIGO VALUES('FLA',25)GOINSERT INTO DETALLE_ENEMIGO VALUES('FLA',28)GOINSERT INTO DETALLE_ENEMIGO VALUES('GAR',1)GOINSERT INTO DETALLE_ENEMIGO VALUES('GAR',2)GOINSERT INTO DETALLE_ENEMIGO VALUES('GBU',3)GOINSERT INTO DETALLE_ENEMIGO VALUES('GBU',4)GOINSERT INTO DETALLE_ENEMIGO VALUES('HLK',5)GOINSERT INTO DETALLE_ENEMIGO VALUES('HLK',6)GOINSERT INTO DETALLE_ENEMIGO VALUES('IMA',7)GOINSERT INTO DETALLE_ENEMIGO VALUES('IMA',8)GOINSERT INTO DETALLE_ENEMIGO VALUES('IRM',9)GOINSERT INTO DETALLE_ENEMIGO VALUES('IRM',10)GOINSERT INTO DETALLE_ENEMIGO VALUES('LNV',11)

Page 49: practicas comentadas de subconsultas e inner join sql

GOINSERT INTO DETALLE_ENEMIGO VALUES('LNV',12)GOINSERT INTO DETALLE_ENEMIGO VALUES('MOL',13)GOINSERT INTO DETALLE_ENEMIGO VALUES('MOL',14)GOINSERT INTO DETALLE_ENEMIGO VALUES('MRE',15)GOINSERT INTO DETALLE_ENEMIGO VALUES('MRE',16)GOINSERT INTO DETALLE_ENEMIGO VALUES('MUI',17)GOINSERT INTO DETALLE_ENEMIGO VALUES('MUI',18)GOINSERT INTO DETALLE_ENEMIGO VALUES('MUJ',19)GOINSERT INTO DETALLE_ENEMIGO VALUES('MUJ',20)GOINSERT INTO DETALLE_ENEMIGO VALUES('QUI',21)GOINSERT INTO DETALLE_ENEMIGO VALUES('QUI',22)GOINSERT INTO DETALLE_ENEMIGO VALUES('ROG',23)GOINSERT INTO DETALLE_ENEMIGO VALUES('ROG',24)GOINSERT INTO DETALLE_ENEMIGO VALUES('RYU',25)GOINSERT INTO DETALLE_ENEMIGO VALUES('RYU',26)GOINSERT INTO DETALLE_ENEMIGO VALUES('SAM',27)GOINSERT INTO DETALLE_ENEMIGO VALUES('SAM',28)GOINSERT INTO DETALLE_ENEMIGO VALUES('FLA',29)GOINSERT INTO DETALLE_ENEMIGO VALUES('FLA',30)GO

INSERT INTO DET_POD_ENEMIGO (ENE_ID,POD_ID)VALUES(1,3),(1,5),(2,7),(2,9),(3,4),(3,10),(4,3),

Page 50: practicas comentadas de subconsultas e inner join sql

(4,5),(5,7),(5,9),(6,4),(6,10),(7,3),(7,5),(8,7),(8,9),(9,4),(9,10),(10,3),(10,5),(11,7),(11,9),(12,4),(12,10),(13,3),(13,5),(14,7),(14,9),(15,4),(15,10),(16,3),(16,5),(17,7),(17,9),(18,4),(18,10),(19,3),(19,5),(20,7),(20,9),(21,4),(21,10),(22,3),(22,5),(23,7),(23,9),(24,4),(24,10),(25,3),(25,5),(26,7),(26,9),(27,4),(27,10),(28,3),

Page 51: practicas comentadas de subconsultas e inner join sql

(28,5),(29,7),(29,9),(30,4),(30,10)GO

INSERT INTO DETALLE_PODERVALUES('ANT',1)GOINSERT INTO DETALLE_PODERVALUES('ANT',3)GOINSERT INTO DETALLE_PODERVALUES('WOL',2)GOINSERT INTO DETALLE_PODERVALUES('WOL',5)GOINSERT INTO DETALLE_PODERVALUES('LNV',3)GOINSERT INTO DETALLE_PODERVALUES('LNV',2)GO

INSERT INTO DETALLE_PODERVALUES('BTC',4)GOINSERT INTO DETALLE_PODERVALUES('BTC',5)GOINSERT INTO DETALLE_PODERVALUES('AQU',4)GOINSERT INTO DETALLE_PODERVALUES('AQU',6)GOINSERT INTO DETALLE_PODERVALUES('CHL',2)GOINSERT INTO DETALLE_PODERVALUES('CHL',7)GOINSERT INTO DETALLE_PODERVALUES('FAL',4)GO

Page 52: practicas comentadas de subconsultas e inner join sql

INSERT INTO DETALLE_PODERVALUES('FAL',1)GOINSERT INTO DETALLE_PODERVALUES('FLA',2)GOINSERT INTO DETALLE_PODERVALUES('FLA',9)GOINSERT INTO DETALLE_PODERVALUES('ARR',1)GOINSERT INTO DETALLE_PODERVALUES('ARR',3)GOINSERT INTO DETALLE_PODERVALUES('DAL',6)GOINSERT INTO DETALLE_PODERVALUES('DAL',9)GOINSERT INTO DETALLE_PODERVALUES('IMA',2)GOINSERT INTO DETALLE_PODERVALUES('IMA',10)GOINSERT INTO DETALLE_PODERVALUES('MUI',5)GOINSERT INTO DETALLE_PODERVALUES('MUI',9)GOINSERT INTO DETALLE_PODERVALUES('MUJ',1)GOINSERT INTO DETALLE_PODERVALUES('MUJ',10)GOINSERT INTO DETALLE_PODERVALUES('RYU',8)GOINSERT INTO DETALLE_PODERVALUES('RYU',9)GOINSERT INTO DETALLE_PODERVALUES('ROG',6)GO

Page 53: practicas comentadas de subconsultas e inner join sql

INSERT INTO DETALLE_PODERVALUES('ROG',10)GOINSERT INTO DETALLE_PODERVALUES('SAM',4)GOINSERT INTO DETALLE_PODERVALUES('SAM',10)GO

INSERT INTO DETALLE_PODERVALUES('SPD',2)GOINSERT INTO DETALLE_PODERVALUES('SPD',3)GO

INSERT INTO DETALLE_PODERVALUES('SIR',1)GOINSERT INTO DETALLE_PODERVALUES('SIR',2)GO

INSERT INTO DETALLE_PODERVALUES('TOR',2)GOINSERT INTO DETALLE_PODERVALUES('TOR',6)GO

INSERT INTO DETALLE_PODERVALUES('GAR',10)GOINSERT INTO DETALLE_PODERVALUES('GAR',8)GO

INSERT INTO DETALLE_PODERVALUES('CPA',2)GOINSERT INTO DETALLE_PODERVALUES('CPA',7)GO

INSERT INTO DETALLE_PODERVALUES('IRM',7)GO

Page 54: practicas comentadas de subconsultas e inner join sql

INSERT INTO DETALLE_PODERVALUES('IRM',6)GO

INSERT INTO DETALLE_PODERVALUES('SUP',10)GOINSERT INTO DETALLE_PODERVALUES('SUP',3)GO

INSERT INTO DETALLE_PODERVALUES('WAR',2)GOINSERT INTO DETALLE_PODERVALUES('WAR',5)GO

INSERT INTO DETALLE_PODERVALUES('VIS',3)GOINSERT INTO DETALLE_PODERVALUES('VIS',9)GO

INSERT INTO DETALLE_PODERVALUES('MRE',8)GOINSERT INTO DETALLE_PODERVALUES('MRE',1)GO

INSERT INTO DETALLE_PODERVALUES('CRL',2)GOINSERT INTO DETALLE_PODERVALUES('CRL',6)GO

INSERT INTO DETALLE_PODERVALUES('GBU',4)GOINSERT INTO DETALLE_PODERVALUES('GBU',8)GO

INSERT INTO DETALLE_PODERVALUES('CEM',1)

Page 55: practicas comentadas de subconsultas e inner join sql

GOINSERT INTO DETALLE_PODERVALUES('CEM',7)GO

INSERT INTO DETALLE_PODERVALUES('BLA',2)GOINSERT INTO DETALLE_PODERVALUES('BLA',10)GO

/*Query 4. Actualizar el lugar que defiende todos los enemigos cuyo ID este de rango de 3 a 20Y que su apodo tenga una A,Z,W,B,T,E,I,O,U*/

Con el comando update seguido del nombre de la tabla y set y nombre del campo seguido del valor preparamos tal campo para ser reemplazado por un nuevo valorUPDATE ENEMIGOS SET ENE_COMOTRAB = 'S' WHERE (ENE_ID BETWEEN 3 AND 20) AND (ENE_APODO LIKE '%A%' OR (ENE_APODO LIKE '%Z%' OR (ENE_APODO LIKE '%W%' OR (ENE_APODO LIKE '%B%' OR (ENE_APODO LIKE '%T%' OR (ENE_APODO LIKE '%I%' OR (ENE_APODO LIKE '%U%' OR (ENE_APODO LIKE '%E%' OR (ENE_APODO LIKE '%O%')))))))))GO

/*Query 5.MUESTRE LA SIGUIENTE INFORMACION APODO, CANTIDAD PODERES, CANTIDAD ENEMIGOS*/

Mediante selects y subconsultas relacionamos los campos foraneos de ambas tablasSELECT H.HER_APODO APODO,(SELECT COUNT(POD_ID) FROM DETALLE_PODERWHERE HER_ID=H.HER_ID) CANTIDAD_PODERES,(SELECT COUNT(ENE_ID) FROM DETALLE_ENEMIGOWHERE HER_ID=H.HER_ID) CANTIDAD_ENEMIGOSFROM HEROES H

/*Query 6. CREA UNA VISTA CON EL APODO DEL SUPERHEORE Y EL APODO DE SU ENEMIGO DE CADA HEROE*/Creamos una vista con su nombreCREATE VIEW V_VISTA6

Mediante selects y consultas combinadas relacionamos los campos foraneos de ambas tablas

Page 56: practicas comentadas de subconsultas e inner join sql

AS(SELECT H.HER_APODO HEROE, E.ENE_APODO ENEMIGOFROM HEROES HINNER JOIN DETALLE_ENEMIGO DE ON(DE.HER_ID=H.HER_ID)INNER JOIN ENEMIGOS E ON(E.ENE_ID=DE.ENE_ID))

/*Query 7. Por medio de subconsultas muestra todos los datos de los superheroes que tengan de dos a tres enemigos*/

SELECT * FROM HEROES HWHERE (SELECT COUNT(ENE_ID) FROM DETALLE_ENEMIGOWHERE HER_ID=H.HER_ID) BETWEEN 2 AND 3

/*Query 8. Inserta todos los enemigos en una tabla nueva de los sig superheroes: superman, batman, gokuUna tabla nueva por cada uno*/

--supermanSelect * from heroes

SELECT * INTO SUPERMAN_ENEMIGOS FROM ENEMIGOS WHERE ENE_ID IN(SELECT ENE_ID FROM DETALLE_ENEMIGO WHERE HER_ID='SUP')GOSELECT * INTO BATMAN_ENEMIGOS FROM ENEMIGOS WHERE ENE_ID IN(SELECT ENE_ID FROM DETALLE_ENEMIGO WHERE HER_ID='BAT')GOSELECT * INTO GOKU_ENEMIGOS FROM ENEMIGOS WHERE ENE_ID IN(SELECT ENE_ID FROM DETALLE_ENEMIGO WHERE HER_ID='SPD')GO

/*Query 9. Elimina a todos los superheroes que no tengan enemigos ni poderes*/DELETE FROM HEROES WHERE HER_ID IN(SELECT H.HER_IDFROM HEROES HWHERE (SELECT COUNT(POD_ID) FROM DETALLE_PODERWHERE HER_ID=H.HER_ID)=0AND (SELECT COUNT(ENE_ID) FROM DETALLE_ENEMIGOWHERE HER_ID=H.HER_ID)=0)

SELECT COUNT(HER_ID) FROM HEROES

SELECT (HER_ID) FROM HEROES WHERE HER_ID NOT IN (SELECT HER_ID FROM DETALLE_ENEMIGO)

Page 57: practicas comentadas de subconsultas e inner join sql

GOSELECT (HER_ID) FROM HEROES WHERE HER_ID NOT IN (SELECT HER_ID FROM DETALLE_PODER)GO

Page 58: practicas comentadas de subconsultas e inner join sql

Resultado

Page 59: practicas comentadas de subconsultas e inner join sql
Page 60: practicas comentadas de subconsultas e inner join sql

Conclusión

Con este reporte terminado he podido llegar a tener nociones un poco más avanzadas del uso del DML con los cuales puedo hacer un mejor uso de las bases de datos, realizar consultas, modificar registros así como poder eliminarlos, evidentemente no basta con una selección o eliminación masiva de registros, sino que también se requiere el poder filtrar los resultados para poder manipular solo aquellos que necesitamos por eso se introdujeron los comandos de comparación tales como like, max, min entre otros además de condicionales con la cláusula where con lo cual ahora si ya es posible poder manipular una selección de registros hechos por nosotros, es de encarecida importación el conocer estos tópicos, por último se hizo un gran uso de consultas combinadas y subconsultas para poder consultar registros varias tablas unidas por una llave foránea.

Cabe destacar que aunque no lo veamos el DML, las consultas combinadas y las subconsultas están presentes en todos los sistemas que usamos día con día por ejemplo al recibir reportes, facturas o recibos datos de diferentes tablas son relacionados para que se pueda visualizar un solo registro es por eso que para esta materia es de vital importación un conocimiento profundo y una buena dominación del tema-

Page 61: practicas comentadas de subconsultas e inner join sql

ReferenciasMaterial didactico en diapositivas entregado por la M.E. Veronica Ramirez Jauregui