Sei sulla pagina 1di 61

Procesamiento de base de datos:

Fundamentos, Deseño e Implementación

Capítulo 2

Introducción al Lenguaje de
Consulta Estructurado

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-1


© 2010 Pearson Prentice Hall
Objetivos
• Analizar el uso de conjuntos de datos extraídos..
• Estudiar el uso de consultas ad-hoc.
• Estudiar la historia y el significado de Lenguaje de
consulta estructurado (SQL).
• Entender el marco de SQL SELECT/FROM/WHERE
como base para las consultas de la base de datos.
• Escribir consultas en SQL para recuperar datos de una
sola tabla.
• Trabajar consultas en SQL para utilizar el “SQL
SELECT, FROM, WHERE, ORDER BY, GROUP BY, y
las cláusulas de “HAVING”.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-2
© 2010 Pearson Prentice Hall
Objetivos
• Escribir consultas en SQL para utulizar para labras
claves en SQL tales como: DISTINCT, AND, OR, NOT,
BETWEEN, LIKE, y IN”.
• Utilizar las funciones incorporadas en SQL tales como:
SUM, COUNT, MIN, MAX, and AVG con y sin la
cláusula de “GROUP BY”.
• Escribir consultas en SQL para recuperar datos de una
sola tabla, pero limitando los datos basados en los datos
de otra tabla (subquery).
• Escribir consultas en SQL para recuperar datos de
múltiples tablas utilizando un “SQL join”.

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-3


© 2010 Pearson Prentice Hall
Lenguaje de Consulta
Estructurado
• Structured Query Language (SQL) fue
desarrollado por IBM Corporation a finales de
1970’s.
• SQL fue aprobado como un estándar nacional de
Estados Unidos por el American National
Standards Institute (ANSI) en 1992 [SQL-92].
• Existen nuevas versiones y se ha incorporado
XML y algunos conceptos orientados a objetos.

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-4


© 2010 Pearson Prentice Hall
SQL como un sublenguaje de
datos
• SQL no es una herramienta completa de
lenguaje de programación.
– C, C#, Java
• SQL es un sublenguaje de datos para la
creación y procesamiento de datos de base
de datos y metadatos.
• SQL está presente en los productos de las
empresas de DBMS..
• La programación de SQL es una habilidad
crítica.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-5
© 2010 Pearson Prentice Hall
SQL DDL y ML
• Las declaraciones de SQL se pueden
dividir en dos categorías:
– Declaraciones de “Data definition
language (DDL)”
• Utilizadas para crear tablas, relaciones y otras
estructuras.
– Declaciones de “Data manipulation
language (DML)”
• Utilizadas para consultas y modificación de datos.

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-6


© 2010 Pearson Prentice Hall
“Cape Codd Outdoor Sports”
• Cape Codd Outdoor Sports es una empresa
ficticia que vende equipos de uso al aire libre.
• Cape Codd Outdoor Sports:
– Cuenta con 15 tiendas minoristas en los
EE.UU. y Canadá.
– Tiene una tienda en la Internet.
– Posee y Departamento de órdenes por
correo.
• Todas las ventas al por menor son registradas
en una base de datos de Oracle.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-7
© 2010 Pearson Prentice Hall
Cape Codd Retail Sales Structure

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-8


© 2010 Pearson Prentice Hall
“Cape Codd” Extracción de datos
de las ventas al detal
• El Departamento de Mercadeo de “Cape Codd“ necesita un análisis
de sus ventas en las tiendas.
• No es necesrio la base de datos comlpeta para este análisis,
solamente una extracción “extraction” de la data de las ventas en
las tiendas.
• La data es extraída por el Departamento de Tecnología de
Información de la base de datos operacional “operational database”
en una base de datos separada, ”off-line database” o utilizada por el
Departamento de Mercadeo.
• Son utilizadas tres: RETAIL_ORDER, ORDER_ITEM, y SKU_DATA
(SKU = Stock Keeping Unit).
• La data extraída es vertida según sea la necesidad:
– En un DBMS diferente– MS SQL Server
– En diferentes columnas– OrderDate, OrderMonth and OrderYear.

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-9


© 2010 Pearson Prentice Hall
Formato de
datos de
ventas al
detal
extraídos

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-10


© 2010 Pearson Prentice Hall
Tablas del extracto de venta al detal
[en MS SQL Server]

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-11


© 2010 Pearson Prentice Hall
Instrucción SELECT de SQL
• El marco fundamental para las
declaraciones de las consultas para SQL
es el: SQL SELECT .
– SELECT {ColumnName(s)}
– FROM {TableName(s)}
– WHERE {Conditions}
• Todas las declaraciones de SQL teminan
con un (punto y coma) semi-colon (;).

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-12


© 2010 Pearson Prentice Hall
Claúsulas de SQL
• La cláusula “SELECT”
– Especifica que columnas serán
seleccionadas en el resultado de la consulta.
• La cláusula “FROM”
– Especifica que tablas serán seleccionadas en
el resultado de la consulta.
• La cláusula “WHERE”
– Especifica que filas serán seleccionadas en
el resultado de la consulta.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-13
© 2010 Pearson Prentice Hall
Columnas específicas de una
tabla
SELECT Department, Buyer
FROM SKU_DATA;

El orden de los nombres de las columnas solicitadas determina el resultado


de la tabla.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-14
© 2010 Pearson Prentice Hall
Especificar el orden de las
columnas
SELECT Buyer, Department
FROM SKU_DATA;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-15


© 2010 Pearson Prentice Hall
La palabra clave DISTINCT
SELECT DISTINCT Buyer, Department
FROM SKU_DATA;

El comando “DISTINCT” se utiliza para eliminar


duplicidad de datos.

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-16


© 2010 Pearson Prentice Hall
El asterisco (*)
SELECT *
FROM SKU_DATA;

El asterisco se utiliza para indicar que se desean todas las


columnas.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-17
© 2010 Pearson Prentice Hall
Filas específicas de una tabla
SELECT *
FROM SKU_DATA
WHERE Department = 'Water Sports';

Si la columna contine texto o data de fecha, el valor comparado debe


ser aparecer entre comillas sencillas. Si la columna contien data
numérica, los valores no necesitan estar entre comillas.
NOTA: SQL requiere una comilla sencilla del ASCII simple: ' NOT ‘
!

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-18


© 2010 Pearson Prentice Hall
Columnas y Tablas específicas de
una tabla
SELECT SKU_Description, Buyer
FROM SKU_DATA
WHERE Department = 'Climbing';

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-19


© 2010 Pearson Prentice Hall
Utulizando MS Access

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-20


© 2010 Pearson Prentice Hall
Continuación: Utulizando MS
Access

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-21


© 2010 Pearson Prentice Hall
Continuación: Utulizando MS
Access

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-22


© 2010 Pearson Prentice Hall
Continuación: Utulizando MS
Access

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-23


© 2010 Pearson Prentice Hall
Continuación: Utulizando MS
Access

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-24


© 2010 Pearson Prentice Hall
Continuación: Utulizando los
resultados de MS Access

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-25


© 2010 Pearson Prentice Hall
Utulizando MS Access
Almacenamiento de las consultas

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-26


© 2010 Pearson Prentice Hall
Utilizando MS SQL Server 2008
The Microsoft SQL Server Management Studio I

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-27


© 2010 Pearson Prentice Hall
Utilizando MS SQL Server 2008
The Microsoft SQL Server Management Studio II

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-28


© 2010 Pearson Prentice Hall
Utilizando Oracle Database 11g
SQL Developer I

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-29


© 2010 Pearson Prentice Hall
Utilizando Oracle Database 11g
SQL Developer II

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-30


© 2010 Pearson Prentice Hall
Utilizando MySQL 5.1
MySQL Query Browser I

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-31


© 2010 Pearson Prentice Hall
Utilizando MySQL 5.1
MySQL Query Browser II

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-32


© 2010 Pearson Prentice Hall
Clasificación de los resultados–
POR “ORDER”
SELECT *
FROM ORDER_ITEM
ORDER BY OrderNumber, Price;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-33


© 2010 Pearson Prentice Hall
Clasificar las órdenes: Orden
Ascendente y Descendente
SELECT *
FROM ORDER_ITEM
ORDER BY Price DESC, OrderNumber ASC;
NOTA: El orden de clasificación por defecto es ASC – no tiene que ser
especificada.

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-34


© 2010 Pearson Prentice Hall
WHERE Clause Options - AND
SELECT *
FROM SKU_DATA
WHERE Department = 'Water Sports'
AND Buyer = 'Nancy Meyers';

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-35


© 2010 Pearson Prentice Hall
WHERE Clause Options - OR
SELECT *
FROM SKU_DATA
WHERE Department = 'Camping'
OR Department = 'Climbing';

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-36


© 2010 Pearson Prentice Hall
WHERE Clause Options - IN
SELECT *
FROM SKU_DATA
WHERE Buyer IN ('Nancy Meyers',
'Cindy Lo', 'Jerry Martin');

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-37


© 2010 Pearson Prentice Hall
WHERE Clause Options – NOT IN
SELECT *
FROM SKU_DATA
WHERE Buyer NOT IN ('Nancy Meyers',
'Cindy Lo', 'Jerry Martin');

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-38


© 2010 Pearson Prentice Hall
WHERE Clause Options –
Ranges with BETWEEN
SELECT *
FROM ORDER_ITEM
WHERE ExtendedPrice
BETWEEN 100 AND 200;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-39


© 2010 Pearson Prentice Hall
WHERE Clause Options –
Ranges with Math Symbols
SELECT *
FROM ORDER_ITEM
WHERE ExtendedPrice >= 100
AND ExtendedPrice <= 200;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-40


© 2010 Pearson Prentice Hall
WHERE Clause Options –
LIKE and Wildcards
• La palabra clave LIKE de SQL se puede
combinar con un factor impredecible:
“wildcard symbol”:
– SQL 92 Standard (SQL Server, Oracle, etc.):
• _ = Exactly one character
• % = Any set of zero or more characters
– MS Access (based on MS DOS)
•? = Exactly one character
•* = Any set of zero or more characters

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-41


© 2010 Pearson Prentice Hall
WHERE Clause Options –
LIKE and Wildcards
SELECT *
FROM SKU_DATA
WHERE Buyer LIKE 'Pete%';

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-42


© 2010 Pearson Prentice Hall
WHERE Clause Options –
LIKE and Wildcards
SELECT *
FROM SKU_DATA
WHERE SKU_Descripton LIKE '%Tent%';

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-43


© 2010 Pearson Prentice Hall
WHERE Clause Options –
LIKE and Wildcards
SELECT *
FROM SKU_DATA
WHERE SKU LIKE '%2__';

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-44


© 2010 Pearson Prentice Hall
SQL Funciones integradas-
“Built-in Functions”
• Existen cinco funciones integradas en
SQL “Built-in Functions”:
– COUNT
– SUM
– AVG
– MIN
– MAX

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-45


© 2010 Pearson Prentice Hall
SQL Built-in Functions
SELECT SUM (ExtendedPrice)
AS Order3000Sum
FROM ORDER_ITEM
WHERE OrderNumber = 3000;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-46


© 2010 Pearson Prentice Hall
SQL Built-in Functions
SELECT SUM (ExtendedPrice) AS OrderItemSum,
AVG (ExtendedPrice) AS OrderItemAvg,
MIN (ExtendedPrice) AS OrderItemMin,
MAX (ExtendedPrice) AS OrderItemMax
FROM ORDER_ITEM;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-47


© 2010 Pearson Prentice Hall
SQL Built-in Functions
SELECT COUNT(*) AS NumberOfRows
FROM ORDER_ITEM;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-48


© 2010 Pearson Prentice Hall
SQL Built-in Functions
SELECT COUNT
(DISTINCT Department)
AS DeptCount
FROM SKU_DATA;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-49


© 2010 Pearson Prentice Hall
Arithmetic in SELECT Statements
SELECT Quantity * Price AS EP,
ExtendedPrice
FROM ORDER_ITEM;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-50


© 2010 Pearson Prentice Hall
String Functions in SELECT
Statements
SELECT DISTINCT RTRIM (Buyer)
+ ' in ' + RTRIM (Department)
AS Sponsor
FROM SKU_DATA;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-51


© 2010 Pearson Prentice Hall
The SQL keyword GROUP BY
SELECT Department, Buyer,
COUNT(*) AS
Dept_Buyer_SKU_Count
FROM SKU_DATA
GROUP BY Department, Buyer;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-52


© 2010 Pearson Prentice Hall
La parabra clade “GROUP BY”
en SQL
• En general, ubique WHERE antes de GROUP
BY. Algunas productos de DBMS, no requieren
esa localización, pero para mayor seguridad,
siempre ponga WHERE antes de GROUP BY.
• El operador de HAVING restringe los grupos
que se presentan en el resultado.
• Hay una ambigüedad en las declaraciones que
incluyen tanto las cláusulas de WHERE y
HAVING. Los resultados pueden variar, por lo
que para eliminar esta ambiguedad SQL
siempre aplica WHERE antes de HAVING.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-53
© 2010 Pearson Prentice Hall
La parabra clade “GROUP BY”
en SQL
SELECT Department, COUNT(*) AS
Dept_SKU_Count
FROM SKU_DATA
WHERE SKU <> 302000
GROUP BY Department
ORDER BY Dept_SKU_Count;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-54


© 2010 Pearson Prentice Hall
La parabra clade “GROUP BY”
en SQL
SELECT Department, COUNT(*) AS
Dept_SKU_Count
FROM SKU_DATA
WHERE SKU <> 302000
GROUP BY Department
HAVING COUNT (*) > 1
ORDER BY Dept_SKU_Count;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-55


© 2010 Pearson Prentice Hall
Querying Multiple Tables:
Subqueries
SELECT SUM (ExtendedPrice) AS Revenue
FROM ORDER_ITEM
WHERE SKU IN
(SELECT SKU
FROM SKU_DATA
WHERE Department = 'Water Sports');

Nota: La segunda instrucción SELECT es un subquery.

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-56


© 2010 Pearson Prentice Hall
Querying Multiple Tables:
Subqueries
SELECT Buyer
FROM SKU_DATA
WHERE SKU IN
(SELECT SKU
FROM ORDER_ITEM
WHERE OrderNumber IN
(SELECT OrderNumber
FROM RETAIL_ORDER
WHERE OrderMonth = 'January'
AND OrderYear = 2004));

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-57


© 2010 Pearson Prentice Hall
Querying Multiple Tables:
Joins
SELECT Buyer, ExtendedPrice
FROM SKU_DATA, ORDER_ITEM
WHERE SKU_DATA.SKU = ORDER_ITEM.SKU;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-58


© 2010 Pearson Prentice Hall
Querying Multiple Tables:
Joins
SELECT Buyer, SUM(ExtendedPrice)
AS BuyerRevenue
FROM SKU_DATA, ORDER_ITEM
WHERE SKU_DATA.SKU = ORDER_ITEM.SKU
GROUP BY Buyer
ORDER BY BuyerRevenue DESC;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-59


© 2010 Pearson Prentice Hall
Querying Multiple Tables:
Joins
SELECT Buyer, ExtendedPrice, OrderMonth
FROM SKU_DATA, ORDER_ITEM, RETAIL_ORDER
WHERE SKU_DATA.SKU = ORDER_ITEM.SKU
AND ORDER_ITEM.OrderNumber =
RETAIL_ORDER.OrderNumber;

KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-60


© 2010 Pearson Prentice Hall
Subconsultas versus combinaciones
“Subqueries versus Joins”
• Las Subconsultas y las combinaciones ambas
procesan múltiples tablas.
• Una subconsulta sólo puede utilizarse para
recuperar datos de la tabla superior.
• Una combinación puede utilizarse para obtener
datos desde cualquier número de tablas,
incluyendo la “tabla de arriba” de la subconsulta.
• En Capítulo 7, se trabajará con correlated
subquery. Que tipo de subconsulta puede hacer
obra que no es posible con combinaciones.
KROENKE AND AUER - DATABASE PROCESSING, 11th Edition 2-61
© 2010 Pearson Prentice Hall

Potrebbero piacerti anche