Consultas Basicas
Consultas Basicas
Consultas Basicas
BASE DE DATOS
Página 1 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
USE MASTER
if DB_ID('VENTAS') IS NOT NULL
BEGIN
DROP DATABASE VENTAS
END
CREATE DATABASE VENTAS
ON
(NAME='VENTAS_DATA',
FILENAME='D:\BDVENTAS2018\VENTAS_DATA.MDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=1MB
)
LOG ON
(NAME='VENTAS_LOG',
FILENAME='D:\BDVENTAS2018\\VENTAS_LOG.LDF',
SIZE=5MB,
MAXSIZE=15MB,
FILEGROWTH=1MB
)
USE VENTAS
if object_id('EMPLEADO') IS NOT NULL
DROP TABLE EMPLEADO
if object_id('DISTRITO') IS NOT NULL
DROP TABLE DISTRITO
if object_id('CLIENTE') IS NOT NULL
DROP TABLE CLIENTE
if object_id('CLIENTE_PER_JURIDICA') IS NOT NULL
DROP TABLE CLIENTE_PER_JURIDICA
if object_id('CLIENTE_PER_NATURAL') IS NOT NULL
DROP TABLE CLIENTE_PER_NATURAL
if object_id('TIPO_PRODUCTO') IS NOT NULL
DROP TABLE TIPO_PRODUCTO
if object_id('PRODUCTO') IS NOT NULL
DROP TABLE PRODUCTO
if object_id('BOLETA') IS NOT NULL
DROP TABLE EMPLEADO
if object_id('DETALLEBOLETA') IS NOT NULL
DROP TABLE DETALLEBOLETA
Página 2 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Página 3 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Página 4 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Página 5 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
5. Registros
GO
INSERT INTO EMPLEADO VALUES( 'E001', 'FRANCISCO ','FLORES', ' SALAZAR', '26-05-85
','AV. LOS ALISOS 233 ','578-7188','D002','[email protected]','22-08-90','E005')
INSERT INTO EMPLEADO VALUES( 'E002', 'MARIA','VASQUEZ', ' SILVA', '08-06-76 ','AV. LA
MARINA 964 ','578-7122','D002','[email protected]','22-08-95','E005')
INSERT INTO EMPLEADO VALUES( 'E003', 'LUIZ ','RAMIREZ', ' VILLAR', '26-10-80 ','JR.
PUNO 554 ','228-7182','D005','[email protected]','22-08-90','E005')
INSERT INTO EMPLEADO VALUES( 'E004', 'DIANA ','MARIN', ' SILVA', '12-02-77 ','JR. LOS
PINOS 235','578-7188','D003','[email protected]','22-08-90','E005')
INSERT INTO EMPLEADO(
COD_EMP,NOMBRES_EMP,APE_PATER_EMP,APE_MATER_EMP,FECHA_NAC_EMP,DIR
ECCION_EMP,TELEFONO_EMP,COD_DIST_EMP,CORREO_E_EMP,FECHA_INGRESO_E
M) VALUES ('E005', 'FRANO ','SALCEDO', ' PUMA', '12-06-70 ','JR. LOS NOGALES','578-
7188','D003','[email protected]','22-08-90')
GO
INSERT INTO TIPO_PRODUCTO VALUES('T001','ACEITES')
INSERT INTO TIPO_PRODUCTO VALUES('T002','LICORES')
INSERT INTO TIPO_PRODUCTO VALUES('T003','MATERIALES ELÉCTRICOS')
GO
INSERT INTO PRODUCTO VALUES('P001','ACEITES VEGETAL AGUACATE',120,5,'T001')
INSERT INTO PRODUCTO VALUES('P002','ACEITES VEGETAL ALMENDRA
DULCE',200,5,'T001')
INSERT INTO PRODUCTO VALUES('P003','ACEITES VEGETAL GERMEN DE
TRIGO',80,5,'T001')
INSERT INTO PRODUCTO VALUES('P004','ACEITES VEGETAL JOJOBA',80,5,'T001')
INSERT INTO PRODUCTO VALUES('P005','ACEITES VEGETAL JOJOBA',80,5,'T002')
INSERT INTO PRODUCTO VALUES('P006','PISCO VIEJO TONEL ACHOLADO',80,5,'T002')
INSERT INTO PRODUCTO VALUES('P007','PISCO VIEJO TONEL PURO',120,5,'T002')
INSERT INTO PRODUCTO VALUES('P008','PISCO SOL DE ICA',120,5,'T002')
INSERT INTO PRODUCTO VALUES('P009','PISCOS VARGAS',12,05,'T002')
INSERT INTO PRODUCTO VALUES('P010','PISCO QUEIROLO QUEBRANTA',90,5,'T002')
INSERT INTO PRODUCTO VALUES('P011','VINO NAVARRO CORREA FINCA
DOLORES',85,5,'T002')
INSERT INTO PRODUCTO VALUES('P012','VINO CASILLERO DEL DIABLO CABERNET
TINTO',85,5,'T002')
INSERT INTO PRODUCTO VALUES('P013','FUENTE THERMALTAKE 750W - COD.
312',20,5,'T003')
INSERT INTO PRODUCTO VALUES('P014','FUENTE THERMALTAKE 550W - COD.
310',20,5,'T003')
Página 6 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
GO
INSERT INTO CLIENTE VALUES('C001','AV. LA MAR 333
CHORRILLOS','966714489','D005','[email protected]','WWW.SISA.COM')
INSERT INTO CLIENTE VALUES('C002','AV. PRADO 111
LINCE','966714422','D002','[email protected]','WWW.PALMA.COM')
INSERT INTO CLIENTE VALUES('C003','JR. AVARADO 45
LINCE','966714422','D003','[email protected]','WWW.ALVA.COM')
INSERT INTO CLIENTE VALUES('C004','JR. LOS JIRASOLES 45
BARRANCO','55714421','D004','[email protected]','WWW.JIRASOLES.COM')
INSERT INTO CLIENTE VALUES('C005','JR. GOMEZ SANCHEZ 331
BARRANCO','66714424','D004','[email protected]','WWW.GOMEZ.COM')
GO
GO
INSERT INTO CLIENTE_PER_JURIDICA VALUES('C004','DUPLO
SA','20414256361','JUAN GIMENEZ','CA01')
INSERT INTO CLIENTE_PER_JURIDICA VALUES('C005','ESCODA
EDUARDO SA','20414256361','JUAN GIMENEZ','CA01')
GO
INSERT INTO CLIENTE_PER_NATURAL VALUES('C001','CECILIA ','PELAES' ,'PUMA')
INSERT INTO CLIENTE_PER_NATURAL VALUES('C002','ALBERTO ','PALMA' ,'LOZANO')
INSERT INTO CLIENTE_PER_NATURAL VALUES('C003','MARIA ','ALVARADO' ,'SILVA')
GO
INSERT INTO BOLETA VALUES('B001','E002','26-05-2013','C002','EMITIDA')
INSERT INTO BOLETA VALUES('B002','E002','26-05-2013','C002','EMITIDA')
INSERT INTO BOLETA VALUES('B003','E001','26-05-2013','C001','EMITIDA')
INSERT INTO BOLETA VALUES('B004','E001','26-05-2013','C003','EMITIDA')
INSERT INTO BOLETA VALUES('B005','E001','26-05-2013','C003','EMITIDA')
GO
INSERT INTO DETALLEBOLETA VALUES('B001','P003',1,15)
INSERT INTO DETALLEBOLETA VALUES('B001','P004',1,12)
INSERT INTO DETALLEBOLETA VALUES('B002','P011',1,30)
INSERT INTO DETALLEBOLETA VALUES('B003','P011',2,30)
INSERT INTO DETALLEBOLETA VALUES('B003','P009',1,45)
INSERT INTO DETALLEBOLETA VALUES('B004','P012',2,70)
INSERT INTO DETALLEBOLETA VALUES('B004','P006',2,40)
INSERT INTO DETALLEBOLETA VALUES('B005','P006',1,40)
INSERT INTO DETALLEBOLETA VALUES('B005','P008',1,40)
INSERT INTO DETALLEBOLETA VALUES('B005','P009',1,45)
Página 7 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
C O N S U L T A S
SQL es un lenguaje que se puede utilizar para interactuar con una base de datos relacional.
SQL es un lenguaje completo de de control e interacción con un sistema de Gestión de Base
de Datos.
La sentencia SELECT
La sentencia select recupera datos de una Base de Datos y los devuelve en forma de
resultados de la consulta. Para consultas sencillas, la petición inglés y la sentencia SELECT
de SQL son muy similares. Cuando las peticiones se hacen más complejas, deben utilizarse
características adicionales de la sentencia Select para especificar la consulta con precisión.
SELECT
INTO
FROM
WHERE Puede faltar una de ellas pero el orden se mantiene
GROUP BY
HAVING
ORDER BY
COMPUTE BY
[WITH ROLLUP/CUBE]
La cláusula SELECT lista los datos a recuperar por sentencia select. Los ítems
pueden ser columnas de la Base de Datos o columnas a calcular por SQL cuando
efectúa la consulta.
La cláusula FROM lista las tablas que contiene los datos a recuperar por la consulta.
La cláusula WHERE dice a SQL qué incluya sólo ciertas filas de datos en los
resultados de una consulta. Se utiliza una condición de búsqueda para especificara las
filas deseadas.
Página 8 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
La cláusula GROUP BY especifica una consulta sumaria. En vez de producir una fila
de resultados por cada fila de datos de la Base de Datos, una consulta sumaria agrupa
todas las filas similares y luego produce una fila sumaria de resultados por cada
grupo.
La cláusula HAVING dice a SQL que incluya sólo ciertos grupos producidos por la
cláusula GROUP BY en los resultados de la consulta. Al igual que la consulta
WHERE, utiliza una condición de búsqueda para especificar los grupos deseados.
Página 9 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Ejemplos:
Las consultas SQL más sencillas solicitan columnas de datos de una única tabla en la
Base de Datos.
Ejemplos:
5. Script para listar todos los campos de la tabla producto, pero con el stock actual mayor
igual a 60 y menor igual a 80
Página 10 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
AND STOCK_ACT_PRO<=80
Nótese que para éste tipo de consulta también se puede utilizar la clausula de rango
BETWEEN, que haría lo mismo que la consulta anterior:
BETWEEN 60 AND 80
6. Script LOS PRODUCTOS con stock actual equivalente 120 ó 90 ó 12
OR STOCK_ACT_PRO=90 OR STOCK_ACT_PRO=12
Nótese que para éste tipo de consulta también se puede utilizar la clausula de pertenencia a
conjunto IN que haría lo mismo que la sentencia anterior:
IN(120,12,120)
7. Script para listar los empleados cuyo nombre empiece F
Nótese que para éste tipo de consulta se está utilizando la clausula de correspondencia de
patrón LIKE.
Porcentaje ( % ) :Comodín que remplaza a cero o más caracteres.
Subrayado ( _ ) :Comodín que remplaza a un carácter.
INTO
Permite crear una nueva tabla a partir de un select, que esta puede ser tabla física o
temporal.
Página 11 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Realice la siguiente consulta para comprobar que la tabla NUEVA1 contiene los registros
de la tabla cliente:
SELECT*FROM NUEVA1
11. Script para listar el número de productos por boleta y total de cada boleta :
Tener en cuenta que al usar group by, hay un campo por el cual se va agrupar (ejm:
Página 12 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
12. Script para listar las boletas con número de productos por boleta mayor a 2
14. Script para listar los empleados ordenados por nombre y de forma ascendente
SUM(CANTIDAD*PRECIOVENTA) BY COD_BOL
Página 13 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Caso Propuesto:
2.1 Muestre los datos de los productos cuyo precio se encuentra entre 1 y 18.5, cuya
descripción del producto empiece con las letras A a la D.
2.2 Muestre todos los datos de los clientes registrados cuyo teléfono empiece con el
dígito ‘4’ y su correo termine con @hotmail.com, ordenados por su apellido paterno
de manera ascendente y en coincidencias por su apellido materno de manera
descendente.
2.3 Muestre los datos de todos los clientes registrados y la descripción del distrito
donde residen pero únicamente muestre a los que residen en los distritos de
‘Magdalena’, ‘San Isidro’ y ‘Miraflores’.
2.4 Muestre los datos de todos las boletas registradas entre el mes de Octubre y
Diciembre. Use la cláusula BETWEEN.
2.5 Muestre los datos de las boletas con sus detalles emitidos en el año 2007. Use la
cláusula BETWEEN.
2.6 Muestre las boletas emitidas a los clientes con apellido paterno ‘Mendoza’, o
‘Toledo. Ordenado por fecha de la Boleta en forma ascendente.
2.7 Mostrar los datos de los clientes que registraron en el distrito aquellos que
empiezan con “San” por ejemplo “San Miguel”
Página 14 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Tener en cuenta:
Select YEAR(getDate())
Mostrar el Año actual.
Página 15 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Página 16 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Página 17 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
SINTAXIS
Ejemplos
FROM CLIENTE
INNER JOIN
FACTURA
ON CLIENTE.CLIECODIGO=FACTURA.CLIECODIGO
Página 18 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Se hace referencia la tabla con su respectiva columna porque el campo existe en las dos
tablas.
Ejemplo:
SELECT CLIENTES.CODCLI, NOMCLI FROM CLIENTES
LEFT JOIN FACTURAS
ON CLIENTES.CODCLI=FACTURAS.CODCLI
Ejemplo:
SELECT*FROM EMPLEADOS
RIGHT JOIN FACTURAS
ON EMPLEADOS.CODEMP=FACTURAS.CODEMP
Página 19 de 20
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Se pueden construir sentencias poderosas utilizando sub consultas. Las sub consultas pueden
ser muy útiles cuando necesites seleccionar filas de una tabla con una condición que dependa
de los datos de la misma u otra tabla. Las sub consultas son muy útiles para escribir sentencias
SQL que necesiten valores de un o más valores condicionales desconocidos.
Ejemplos:
SELECT*FROM PRODUCTOS
WHERE CODPRO IN (SELECT DISTINCT CODPRO FROM DETALLE_FACTURAS)
Página 20 de 20