Ing.
Industrial-Base de
Datos
SQL
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
1. INTRODUCCION
El lenguaje de consulta (SQL) es un lenguaje de base de datos
normalizado, utilizado, utilizado por el motor de base de datos de
Microsoft Jet SQL. Se utiliza para trabajar específicamente con
base de datos relacionados.
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
2. PARTES DEL SQL
2. PARTES DEL SQL
SQL tiene comandos que corresponden a los dos tipos de lenguajes
para base de datos.
Lenguaje de Definición de Datos (DDL) que permite crear y
definir nuevas bases de datos, campos e índices, cuyos comandos
son Create, Drop y Alter.
Lenguaje de Manipulación de Datos (DML) que permiten generar
consultas para ordenar, filtrar y extraer datos de la base de datos. Sus
comandos son Select, Insert, Update y Delete.
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
Ejemplos:
Se tiene las siguientes tablas:
ARTICULO=(codigo, descri, pcompra, pventa,
stock)
CLIENTE=(codi_clien, nom_clien, dire_clien,
ruc_clien)
FACTURA=(numero, total, cod_clie, fecha)
DETALLE_FACTURA=(numero,codigo, cantidad)
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
3. CONSULTAS DE SELECCION
Las consultas de selección se utilizan para indicar al motor de base de
datos que devuelva información de las bases de datos, esta información
es devuelta en forma de conjunto de registros. Este conjunto de registros
es modificable.
3.1 CONSULTAS BASICAS:
Sintaxis: SELECT <campos> FROM <nombre_tabla(s)>
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
Consultas Basicas - Ejemplos:
Select * from Articulo
Select codi_clien, nom_clien from Cliente
Select numero, total from Factura
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
3. CONSULTAS DE SELECCION
3.2 ORDENAR LOS REGISTROS
Adicionalmente se puede especificar el orden en que se desean
recuperar los registros de las tablas mediante la claúsula ORDER BY
<Lista de campos>; en donde Lista de campos representa los campos a
ordenar.
Ejemplos:
SELECT * FROM Cliente ORDER BY nom_clien
SELECT codi_clien, nom_clien FROM Cliente ORDER BY
nom_clien, ruc_clien
SELECT * FROM Factura ORDER BY total DESC
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
3. CONSULTAS DE SELECCION
3.3 CONSULTAS CON PREDICADO
El predicado se incluye entre la claúsula y el primer nombre del
campo a recuperar, los posibles predicados son:
PREDICADO DESCRIPCION
ALL Devuelve todos los campos de la tabla
TOP Devuelve un determinado número de registros de la
tabla.
DISTINCT Omite los registros cuyos campos seleccionados
coincidan totalmente.
DISTINCTROW Omite los registros duplicados basándose en la
totalidad del registro y no sólo en los campos
seleccionados.
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
3. CONSULTAS DE SELECCION
3.3 CONSULTAS CON PREDICADO- Ejemplos:
SELECT * FROM Articulo
SELECT ALL FROM Articulo
SELECT TOP 12 numero, fecha FROM Factura ORDER BY
total
SELECT DISTINCT nom_clie FROM Cliente
SELECT DISTINCTROW nom_clie FROM Cliente
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
3. CONSULTAS DE SELECCION
3.4 ALIAS:
En determinadas circunstancias es necesario asignar un nombre a
alguna columna determinada de un conjunto devuelto. Para ello se usa la
palabra reservada AS que se encarga de asignar el nombre que deseamos
a la columna deseada.
Ejemplos:
SELECT codi_clien AS CODIGO, nom_clien AS NOMBRES
FROM Cliente
SELECT codigo AS CODIGO, descri AS DESCRIPCION
FROM Articulo ORDER BY stock
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
4. CRITERIOS DE SELECCION
Algunas veces es necesario seleccionar solamente algunos registros, es
decir, los que cumplan con una determinada condición, con el fin de
recuperar aquellos que cumplan con condiciones preestablecidas.
4.1 Operadores Lógicos.
Los operadores lógicos soportados por SQL son: AND, OR, NOT
Sintaxis General:
<expresión1> operador <expresión2>
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
4. CRITERIOS DE SELECCION
4.1 Operadores Lógicos.(Ejemplos)
SELECT * FROM Factura WHERE total>100
SELECT * FROM Articulo WHERE NOT descri=‘ACE’
SELECT numero, total, fecha FROM Factura
WHERE (total>500 AND total<1000) AND
YEAR(fecha)=‘2003’
SELECT codigo, descri FROM ARTICULO
WHERE pcompra >500 OR pventa>300
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
4. CRITERIOS DE SELECCION
4.2 Intervalos de Valores.
Para indicar que deseamos recuperar según el intervalo de valores
de un campo empleamos el operador Between.
Ejemplos:
SELECT * FROM Articulo WHERE stock BETWEEN 25 AND
35
SELECT * FROM Factura WHERE fecha
BETWEEN ’01/02/2004’ AND ‘30/03 /2004’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
4. CRITERIOS DE SELECCION
4.3 El Operador Like..
Se utiliza para comparar una expresión de cadena con un modelo
en una expresión SQL.
Ejemplos:
SELECT * FROM Cliente WHERE nom_clie LIKE ‘A%’
SELECT * FROM Articulo WHERE codigo LIKE ’75__’
SELECT * FROM Articulo WHERE descri LIKE ’[A-C]*’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
4. CRITERIOS DE SELECCION
4.4 El Operador In.
Este operador devuelve aquellos registros cuyo campo indicado
coincide con alguno de los indicados en una lista.
Ejemplos:
SELECT * FROM Articulo
WHERE descri IN (‘Lápiz’,’Cuaderno’,’Plumón’)
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
5. AGRUPAMIENTO DE REGISTROS
5.1 GROUP BY.
Combina los registros con valores idénticos, en la lista de campos
especificados, en un único registro. Para cada registro se crea un valor
sumario si se incluye una función SQL agregada como por ejemplo Sum
o Count, en la instrucción SELECT.
La sintaxis es:
SELECT <nombre campos> FROM <tabla(s)>
GROUP BY <campo(s) del grupo> HAVING <condición>
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
5. AGRUPAMIENTO DE REGISTROS
GROUP BY - Ejemplos.
SELECT numero, sum(total) FROM Factura GROUP BY cod_clie
SELECT month(fecha), sum(total) FROM Factura GROUP BY
month(fecha) HAVING sum(total)>1000
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
5. AGRUPAMIENTO DE REGISTROS
5.2 AVG.
Calcula la media aritmética de un conjunto de valores contenidos
en un campo especificado de una consulta. Su sintaxis es la siguinete:
AVG < campo >
Ejemplo:
SELECT AVG(STOCK) AS PROMSTOCK FROM Articulo
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
5. AGRUPAMIENTO DE REGISTROS
5.3 COUNT
Calcula el número de registros devueltos por una consulta. Su
sintaxis es la siguiente:
COUNT < >
Ejemplos:
SELECT COUNT(*) AS TOTAL FROM FACTURA
SELECT COUNT (nom_clien & dire_clien) AS TOTALDATOS
FROM Cliente
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
5. AGRUPAMIENTO DE REGISTROS
5.4 MAX, MIN
Devuelven el mínimo o el máximo de un conjunto de valores
contenidos en un campo específico de una consulta.
Su sintaxis es: MIN <campo>
MAX <campo>
Ejemplos:
SELECT MAX(pventa) AS PRECIOMAYOR FROM Articulo
SELECT MIN(total) AS MENOR FROM Factura
WHERE year(fecha)=‘2003’ AND month(fecha)=‘01’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
5. AGRUPAMIENTO DE REGISTROS
5.5 SUM
Devuelve estimaciones de la desviación estándar para la
población (el total de los registros de la tabla) o una muestra de la
población representada (muestra aleatoria).
Su sintaxis es: Sum <campo>
Ejemplos:
SELECT Sum (stock) AS sumastock FROM Articulo
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
5. AGRUPAMIENTO DE REGISTROS
5.6 STDEV, STDEVP
Devuelve estimaciones de la desviación estándar para la
población (el total de los registros de la tabla) o una muestra de la
población representada (muestra aleatoria).
Su sintaxis es: STDEV <campo>
STDEVP <campo>
Ejemplos:
SELECT STDEV (stock) AS DESVSTANDARD FROM Articulo
SELECT STDEVP(total) FROM Factura WHERE total<1000
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
EJERCICIO PROPUESTO
El sistema de información de la Biblioteca de la Universidad cuenta con
la siguiente base de datos. Las tablas son las que se indican:
ESCUELA (cod_esc, nombre_esc)
USUARIO (n_carnet, apellidos, nombres, f_nac, direc, cod_escuela)
PRESTAMO (n_prestamo, n_carnet, isbn, fecha)
SALA(n_prestamo, n_psala, horadev)
DOMICILIO(n_prestamo, n_pdom, fechadev, fechadevreal)
MATBIBLIOG (isbn, titulo, cod_autor, editorial, edicion, cod_tipo)
AUTOR (cod_autor, nom:autor, pais)
EJEMPLAR (isbn, cod_ej, cantidad)
TIPOMATBIB(isbn, nombre, observ)
SANCION (n_carnet, n_prestamo, dias)
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
EJERCICIO PROPUESTO 1
Mediante sentencias SQL resolver los siguientes requerimientos:
1) Listar todos los materiales bibliográficos ordenados por nombre en
orden (Z-A)
2) Listar todos los autores cuyo nombre empiece con A
3) Listar todos los usuarios menores de 18 años
4) Cuantos usuarios son de la escuela ’01’ y de la escuela ’06’ juntos
5) Cuantos ejemplares existen del código ‘3056’
6) Listar la fecha y la cantidad de préstamos que se hicieron por día.
(Use Cabeceras para las columnas)
1) Listar la fecha y la cantidad de préstamos por día de aquellos días que
tuvieron mas de 50 préstamos.
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
6. CONSULTAS DE ACCION
6.1 DELETE
Crea una consulta de eliminación que elimina de una o más de las
tablas listadas en la cláusula FROM que satisfaga la cláusula WHERE .
Esta consulta elimina los registros completos, no es posible eliminar el
contenido de algún campo en concreto.
Su sintaxis es:
DELETE FROM <nombre tabla> WHERE <condición>
Ejemplos:
DELETE From Articulo where stock>50
DELETE From Factura where year(fecha)=‘2002’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
6. CONSULTAS DE ACCION
6.2 INSERT
Agrega un registro en una tabla. Se la conoce como una consulta
de datos añadidos. Esta consulta puede ser de dos tipos: Insertar un único
registro o insertar en una tabla los registros contenidos en otra tabla.
Para insertar un único registro:
INSERT INTO <nombre_tabla> (campo1, campo2,...)
VALUES (valor1, valor2,...)
Para insertar registros de otra tabla:
INSERT INTO <nombre_tabla> (campo1, campo2,..)
SELECT <tablaorigen.campo1, tablaoroge.campo2,..)
FROM tabla origen
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
6. CONSULTAS DE ACCION
INSERT - Ejemplos
INSERT INTO ARTICULO (codigo, descri, pcompra, pventa,
stock) VALUES (‘108’, ‘ace mediano’, 2.10, 3.00, 88)
INSERT INTO CLIENTE (codi_clien, nom_clien)
VALUES (‘109’, ‘Juana López’)
INSERT INTO ARTICULO SELECT ARTIANTIGUO.* FROM
ARTIANTIGUO
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
6. CONSULTAS DE ACCION
6.3 UPDATE
Crea una consulta de actualización que cambia los valores de los
campos de una tabla especificada basándose es un criterio específico. Su
sintaxis es:
UPDATE <nombre_tabla>
SET <campo1=valor1, campo2=valor2,....,campoN=valorN>
WHERE <condición>
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
6. CONSULTAS DE ACCION
UPDATE - Ejemplos
UPDATE ARTICULO SET pventa=pventa*1.2
UPDATE CLIENTE SET dire_clien=“Albretch 776’
WHERE ruc_clien=‘1078198222’
UPDATE ARTICULO SET pcompra=15, stock=42
WHERE codigo=‘388’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
7. CONSULTAS A PARTIR DE MULTIPLES
TABLAS
Las vinculaciones entre tablas se realiza mediante la cláusula INNER,
que combina registros de dos tablas siempre que haya concordancia de
valores en un campo común.
Su sintaxis es:
SELECT <tabla1.campo1,..,tabla2,campo1,....>
FROM <tabla1> INNER JOIN <tabla2>
ON <[Link]=[Link]>
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
7. CONSULTAS A PARTIR DE MULTIPLES
TABLAS
Otra forma usada por SQL Server es la siguiente:
Sintaxis:
SELECT <tabla1.campo1,..,tabla2,campo1,....>
FROM <tabla1, tabla2,....>
WHERE <[Link]=[Link]........>
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
7. Ejemplos - CONSULTAS MULTIPLES
TABLAS
1. Listar el total, fecha y el nombre del cliente que se le extendió la
factura con número 348 (SQL ANSI)
SELECT CLIENTE.nom_clien, [Link], [Link]
FROM CLIENTE INNER JOIN FACTURA
ON CLIENTE.codi_clien= FACTURA.codi_clie
WHERE [Link]=‘348’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
7. Ejemplos - CONSULTAS MULTIPLES
TABLAS
Listar el total, fecha y el nombre del cliente que se le extendió la factura
con número 348 (SQL)
SELECT CLIENTE.nom_clien, [Link], [Link]
FROM CLIENTE, FACTURA
WHERE CLIENTE.codi_clien= FACTURA.codi_clie
AND [Link]=‘348’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
7. Ejemplos - CONSULTAS MULTIPLES
TABLAS
Listar el total, fecha y el nombre del cliente que se le extendió la factura
con número 348 (USANDO ALIAS)
SELECT C.nom_clien, [Link], [Link]
FROM CLIENTE C, FACTURA F
WHERE [Link]=‘348’ AND
C.codi_clien= F.codi_clie
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
7. Ejemplos - CONSULTAS MULTIPLES
TABLAS
2. Listar el nombre, cantidad y precio de venta de los artículos que fueron
vendidos con la factura numero 8890
SELECT [Link], [Link], [Link]
FROM ARTICULO A, DETALLE_FACTURA D, FACTURA F
WHERE [Link]=[Link] AND [Link]=[Link] AND
[Link]=‘8890’
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004
EJERCICIO PROPUESTO 2
Mediante sentencias SQL resolver los siguientes requerimientos:
1) Listar el código, apellidos y nombres de los usuarios que pertenecen a
la escuela Ingeniería Industrial.
2) Cuantos materiales bibliográficos que sean tesis existen.
3) Listar el nombre y escuela de todos los usuarios que tienen sanciones
por préstamos no cumplidos en el año 2002
4) Listar el nombre y apellidos del usuario a quien se le prestó el
ejemplar 2 del texto Base de Datos de Navathe el día 10-06-2004
5) Cuantos materiales bibliográficos fueron prestados a sala en el mes
de Mayo del 2004
6) Isbn y título del material bibliográfico que ha sido devuelto después
de la fecha señalada.
Preparado por: Mg. FRANCISCO RODRIGUEZ TRUJILLO – PERU 2004