Académique Documents
Professionnel Documents
Culture Documents
BASE DE DATOS
INTRODUCCIN
Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva
informacin de las bases de datos. Esta informacin es devuelta en forma de conjunto
de registros que se pueden almacenar en un objeto recordset. Este conjunto de
registros es modificable.
SELECT
INTO
FROM
WHERE
GROUP BY Puede faltar una de ellas pero el orden se mantiene
HAVING
ORDER BY
COMPUTE BY
[WITH ROLLUP/CUBE]
Pgina 1 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
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:\BDVENTAS2017\VENTAS_DATA.MDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=1MB
)
LOG ON
(NAME='VENTAS_LOG',
FILENAME='D:\BDVENTAS2017\VENTAS_LOG.LDF',
SIZE=5MB,
MAXSIZE=15MB,
FILEGROWTH=1MB
)
Pgina 2 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
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
Pgina 3 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Pgina 4 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Pgina 5 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
REFERENCES DISTRITO(COD_DIST)
GO
Pgina 6 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
d. Registros
Pgina 7 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Pgina 8 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Pgina 9 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Pgina 10 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Ejemplos:
Funciones de fecha
Mostrar la Fecha y Hora
Select GETDATE()
del Sistema.
Select YEAR(getDate())
Mostrar el Ao actual.
Pgina 11 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Pgina 12 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
1. CONSULTAS SENCILLAS
La sintaxis bsica de una consulta de seleccin es la siguiente:
SELECT *
FROM EMPLEADO
Ejemplo:
SELECT *
FROM EMPLEADO
ORDER BY APE_PATER_EMP ASC
Esta consulta devuelve todos los campos de la tabla EMPLEADO ordenados por el
campo apellido paterno del empleado
Pgina 13 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
DISTINCT Omite los registros que contienen datos duplicados en los campos
seleccionados. Para que los valores de cada campo listado en la instruccin
SELECT se incluyan en la consulta deben ser nicos.
Pgina 14 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
4. CONSULTAS CONDICIONALES
Empleo de condicionales IF EXISTS, AND, y operadores lgicos >, <, =, <>,
BETWEEN, IN, OR, NOT, DISTINCT, LIKE.
Sentencia que presenta los campos cdigo de producto, descripcin del producto,
stock del producto cuyo stock actual sea menor o igual que 60.
Usando operadores lgicos, por ejemplo presenta todos los campos de la tabla
producto, pero con el stock actual mayor o igual a 60 y menor o igual a 80
Para indicar que deseamos recuperar los registros segn el intervalo de valores
de un campo, emplearemos el operador Between cuya sintaxis es de la siguiente
manera:
Ejemplo:
Lista de productos con stock actual entre 60 y 80
Pgina 15 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de
cualquier letra entre A y F y de tres dgitos:
Like 'P[A-F]###'
Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A
a la D seguidas de cualquier cadena.
Like '[A-D]%'
Este ejemplo devuelve todos los empleados cuyo nombre empiece con la letra F
Ejemplo:
SELECT COD_EMP,NOMBRES_EMP,APE_PATER_EMP
FROM EMPLEADO
WHERE APE_PATER_EMP IN ('FLORES','RAMIREZ','SANCHEZ')
Pgina 16 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
SELECT CAMPOS
FROM TABLA
WHERE CRITERIO
GROUP BY CAMPOS DEL GRUPO
Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y
la clusula HAVING para filtrar los registros una vez agrupados.
Ejemplo con la base de datos ventas: script para obtener el total de cada boleta
Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier
registro agrupado por la clusula GROUP BY que satisfaga las condiciones de la
clusula HAVING.
Pgina 17 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Ejemplo con la base de datos ventas: script para listar las boletas con nmero de
productos por boleta mayor a 2
SELECT COD_BOL, COUNT (COD_BOL) AS ITEM,
SUM(CANTIDAD*PRECIOVENTA) AS TOTAL FROM DETALLEBOLETA
GROUP BY COD_BOL HAVING COUNT( COD_BOL)>2
Ejemplo prctico:
Supongamos que tenemos los siguientes datos de la tabla DEPARTAMENTOS
Pgina 18 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
SELECT DET.COD_CONT,
MONTO=SUM(DEP.PRECIO_ALQXMES_DEP *
(DATEDIFF(MM,DET.FEC_INI_ALQ,DET.FEC_FIN_ALQ)))
FROM DEPARTAMENTOS DEP, DETALLECONTRATO DET
WHERE DEP.COD_EDIF=DET.COD_EDIF.
AND DEP.COD_DEP=DET.COD_DEP
GROUP BY DET.COD_CONT
Haciendo uso de la clusula HAVING se filtran los datos agrupados obtenidos y
se muestra solamente los que tengan un MONTO ACUMULADO mayor de 1,000
soles.
SELECT DET.COD_CONT,
MONTO=SUM(DEP.PRECIO_ALQXMES_DEP *
DATEDIFF ( MM,DET.FEC_INI_ALQ,DET.FEC_FIN_ALQ ) )
FROM DEPARTAMENTOS DEP, DETALLECONTRATO DET
WHERE DEP.COD_EDIF.=DET.COD_EDIF.
AND DEP.COD_DEP=DET.COD_DEP
GROUP BY DET.COD_CONT
HAVING SUM(DEP.PRECIO_ALQXMES_DEP *
DATEDIFF(MM,DET.FEC_INI_ALQ,DET.FEC_FIN_ALQ)) > 1000
Pgina 19 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
En donde EXPR debe ser un valor numrico y representa el nombre del campo
que contiene los datos que desean sumarse o una expresin que realiza un
clculo utilizando los datos de dichos campos. Los operandos de EXPR pueden
incluir el nombre de un campo de una tabla, una constante o una funcin (la cual
puede ser intrnseca o definida por el usuario pero no otras de las funciones
agregadas de SQL).
En donde EXPR representa el campo que contiene los datos numricos para los
que se desea calcular la media o una expresin que realiza un clculo utilizando
los datos de dicho campo. La media calculada por AVG es la media aritmtica (la
suma de los valores dividido por el nmero de valores). La funcin AVG no incluye
ningn campo NULL en el clculo.
Ejemplos:
Calcular el stock actual promedio de los productos.
SELECT AVG(DATEDIFF(YY,FEC_NAC_USUA,GETDATE()))
AS EDADPROMEDIO
FROM USUARIO
Pgina 20 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Ejemplos:
En donde EXPR contiene el nombre del campo que desea contar. Los operandos
de EXPR pueden incluir el nombre de un campo de una tabla, una constante o
una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de
las funciones agregadas de SQL). Puede contar cualquier tipo de datos, incluso
texto.
Pgina 21 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Pgina 22 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Operadores Lgicos
1. Mostrar todos los alumnos que hayan nacido en el mes de Agosto o Septiembre.
Operador between
Like
Operador In
Pgina 23 de 24
UNIVERSIDAD NACIONAL DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Operador Numrico
Distinct
11. Mostrar Todos los Nombres de los Alumnos. La informacin no debe incluir
repetidos.
12. Mostrar el cdigo y nombre de las asignaturas que han sido dictadas hasta la
fecha.
Exists
13. Mostrar todos los alumnos siempre y cuando exista algn alumno que empiece su
nombre con la letra J
14. Mostrar todas las asignaturas del periodo siempre y cuando exista algn alumno
cuya nota sea mayor a quince durante el periodo 200402.
15. Mostrar a Todos los Alumnos cuyos apellidos paternos empiecen con la letra S.
16. Mostrar a Todos los Alumnos cuyos apellidos paternos finalicen con la letra A.
19. Mostrar Todos los Alumnos que su Nombre sea slo de 4 letras.
20. Mostrar Todos los Alumnos que su Nombre sea slo de 4 letras., pero la primera
letra debe empezar en L o J
21. Mostrar Todos los Alumnos que su Nombre sea slo de 4 letras, pero la primera
letra no debe empezar ni en L y G
Pgina 24 de 24