You are on page 1of 42

SQL

(Structure Query Language)


Ing. Rolando Oviedo Blandón
Contenido
1. Definición
2. Componentes
3. Cláusulas
4. Operadores
5. Consultas
6. Recuperar datos de BD externas
7. Uniones
8. Subconsultas

Ing. Rolando Oviedo Blandón


2
(ing.roviedo@gmail.com)
Definición
• El lenguaje de consulta estructurado (SQL) es un
lenguaje de base de datos normalizado, utilizado por el
motor de base de datos de Microsoft Jet. SQL se utiliza
para crear objetos QueryDef, como el argumento de
origen del método OpenRecordSet y como la
propiedad RecordSource del control de datos.
• También se puede utilizar con el método Execute para
crear y manipular directamente las bases de datos Jet y
crear consultas SQL de paso a través para manipular
bases de datos remotas cliente - servidor.

Ing. Rolando Oviedo Blandón


3
(ing.roviedo@gmail.com)
Componentes de SQL
• El lenguaje SQL está compuesto por
comandos, cláusulas, operadores y funciones
de agregado. Estos elementos se combinan en
las instrucciones para crear, actualizar y
manipular las bases de datos.

Ing. Rolando Oviedo Blandón


4
(ing.roviedo@gmail.com)
Comandos de SQL
• Existen dos tipos de comandos SQL:
– Los DLL que permiten crear y definir nuevas bases
de datos, campos e índices.
– Los DML que permiten generar consultas para
ordenar, filtrar y extraer datos de la base de datos.

Ing. Rolando Oviedo Blandón


5
(ing.roviedo@gmail.com)
DLL

Ing. Rolando Oviedo Blandón


6
(ing.roviedo@gmail.com)
MDL

Ing. Rolando Oviedo Blandón


7
(ing.roviedo@gmail.com)
SQL

CLÁUSULAS

Ing. Rolando Oviedo Blandón


8
(ing.roviedo@gmail.com)
Cláusulas
• Las cláusulas son condiciones de modificación
utilizadas para definir los datos que desea
seleccionar o manipular.

Ing. Rolando Oviedo Blandón


9
(ing.roviedo@gmail.com)
SQL

OPERADORES

Ing. Rolando Oviedo Blandón


10
(ing.roviedo@gmail.com)
Operadores Lógicos

Ing. Rolando Oviedo Blandón


11
(ing.roviedo@gmail.com)
Operadores de Comparación

Ing. Rolando Oviedo Blandón


12
(ing.roviedo@gmail.com)
Funciones de Agregado

Ing. Rolando Oviedo Blandón


13
(ing.roviedo@gmail.com)
SQL

CONSULTAS

Ing. Rolando Oviedo Blandón


14
(ing.roviedo@gmail.com)
Consultas de Selección
• Las consultas de selección se utilizan para
indicar al motor de datos que devuelva
información de las bases de datos, esta
información es devuelta en forma de conjunto
de registros que se pueden almacenar en un
objeto recordset. Este conjunto de registros es
modificable.

Ing. Rolando Oviedo Blandón


15
(ing.roviedo@gmail.com)
Select .. From..
• La sintaxis básica de una consulta de selección
es la siguiente:
– SELECT Campos FROM Tabla;
• En donde campos es la lista de campos que se
deseen recuperar y tabla es el origen de los
mismos, por ejemplo:
– SELECT Nombre, Telefono FROM Clientes;
• Esta consulta devuelve un recordset con el
campo nombre y teléfono de la tabla clientes.
Ing. Rolando Oviedo Blandón
16
(ing.roviedo@gmail.com)
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. Ejemplo:
– SELECT CodigoPostal, Nombre, Telefono FROM
Clientes ORDER BY Nombre;

Ing. Rolando Oviedo Blandón


17
(ing.roviedo@gmail.com)
Ordenar los registros
• Se pueden ordenar los registros por mas de un
campo, como por ejemplo:
– SELECT CodigoPostal, Nombre, Telefono FROM
Clientes ORDER BY CodigoPostal, Nombre;
• Incluso se puede especificar el orden de los
registros: ascendente mediante la claúsula (ASC -
se toma este valor por defecto) ó descendente
(DESC)
– SELECT CodigoPostal, Nombre, Telefono FROM
Clientes ORDER BY CodigoPostal DESC , Nombre ASC;

Ing. Rolando Oviedo Blandón


18
(ing.roviedo@gmail.com)
SQL

CONSULTAS DE PREDICADO

Ing. Rolando Oviedo Blandón


19
(ing.roviedo@gmail.com)
Consultas con Predicado
• El predicado se incluye entre la cláusula y el primer
nombre del campo a recuperar, los posibles
predicados son:

Ing. Rolando Oviedo Blandón


20
(ing.roviedo@gmail.com)
TOP
• Devuelve un cierto número de registros que
entran entre al principio o al final de un rango
especificado por una cláusula ORDER BY.
Supongamos que queremos recuperar los
nombres de los 25 primeros estudiantes del
curso 1994:
– SELECT TOP 25 Nombre, Apellido FROM
Estudiantes ORDER BY Nota DESC;

Ing. Rolando Oviedo Blandón


21
(ing.roviedo@gmail.com)
TOP
• Se puede utilizar la palabra reservada
PERCENT para devolver un cierto porcentaje
de registros que caen al principio o al final de
un rango especificado por la cláusula ORDER
BY. Supongamos que en lugar de los 25
primeros estudiantes deseamos el 10 por
ciento del curso:
– SELECT TOP 10 PERCENT Nombre, Apellido FROM
Estudiantes ORDER BY Nota DESC;
Ing. Rolando Oviedo Blandón
22
(ing.roviedo@gmail.com)
DISTINCT
• Omite los registros que contienen datos
duplicados en los campos seleccionados. Para
que los valores de cada campo listado en la
instrucción SELECT se incluyan en la consulta
deben ser únicos.
• Por ejemplo, varios empleados listados en la
tabla Empleados pueden tener el mismo apellido.
Si dos registros contienen López en el campo
Apellido, la siguiente instrucción SQL devuelve un
único registro:
– SELECT DISTINCT Apellido FROM Empleados;

Ing. Rolando Oviedo Blandón


23
(ing.roviedo@gmail.com)
DISTINCTROW
• Devuelve los registros diferentes de una tabla;
a diferencia del predicado anterior que sólo se
fijaba en el contenido de los campos
seleccionados, éste lo hace en el contenido
del registro completo independientemente de
los campo indicados en la cláusula SELECT.
– SELECT DISTINCTROW Apellido FROM Empleados;

Ing. Rolando Oviedo Blandón


24
(ing.roviedo@gmail.com)
Alias
• En determinadas circunstancias es necesario asignar un
nombre a alguna columna determinada de un conjunto
devuelto. Para ello tenemos la palabra reservada AS
que se encarga de asignar el nombre que deseamos a
la columna deseada. Por ejemplo podemos hacer que
la columna devuelta por la consulta, en lugar de
llamarse apellido (igual que el campo devuelto) se
llame Empleado.
• En este caso procederíamos de la siguiente forma:
– SELECT DISTINCTROW Apellido AS Empleado FROM
Empleados

Ing. Rolando Oviedo Blandón


25
(ing.roviedo@gmail.com)
Recuperar Información de una base de
Datos Externa
• Se puede hacer referencia a la recuperación de
registros de bases de datos externa. Es ocasiones
es necesario la recuperación de información que
se encuentra contenida en una tabla que no se
encuentra en la base de datos que ejecutará la
consulta o que en ese momento no se encuentra
abierta, esta situación la podemos salvar con la
palabra reservada IN de la siguiente forma:
– SELECT DISTINCTROW Apellido AS Empleado FROM
Empleados IN 'c:\databases\gestion.mdb';

Ing. Rolando Oviedo Blandón


26
(ing.roviedo@gmail.com)
IN
• Un método fácil de usar SELECT [Cod_empleado]
condiciones compuestas FROM
es usando IN o BETWEEN. Tabla_estadistica_emplead
Por ejemplo si quieres os
WHERE Cargo IN
listar todos los
('Encargado', 'Técnico');
encargados y Técnico:

Ing. Rolando Oviedo Blandón


27
(ing.roviedo@gmail.com)
BETWEEN
• para listar aquellos que ganen más o 30.000,
pero menos o igual que 50.000, usa:

SELECT [Cod_empleado]
FROM Tabla_estadistica_empleados
WHERE SALARIO BETWEEN 30000 AND 50000;

Ing. Rolando Oviedo Blandón


28
(ing.roviedo@gmail.com)
Ejemplos usando operadores

Ing. Rolando Oviedo Blandón


29
(ing.roviedo@gmail.com)
Operador LIKE
• Se utiliza para comparar una expresión de cadena con
un modelo en una expresión SQL. Su sintaxis es:
– expresión Like modelo
• El ejemplo siguiente devuelve los datos que comienzan
con la letra P seguido de cualquier letra entre A y F y de
tres dígitos:
– 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]*'
Ing. Rolando Oviedo Blandón
30
(ing.roviedo@gmail.com)
Diferentes usos de LIKE

Ing. Rolando Oviedo Blandón


31
(ing.roviedo@gmail.com)
UNIONES
• El propósito de estas claves es el poder referirse a
datos de diferentes tablas, sin tener que repetir los
datos en cada una de ellas, este es el poder de las
bases de datos relaciónales.

Ing. Rolando Oviedo Blandón


32
(ing.roviedo@gmail.com)
UNIONES Antigüedad
es
Propietarios_Antigüed ID_vended ID_comprad Producto
ades or or
ID_Propietario ApellidoPropietar NombrePropieta 01 50 Cama
io rio 02 15 Table
01 Jones Bill 15 02 Silla
02 Smith Bob 21 50 Espejo
15 Lawson Patricia 50 01 Armario

21 Akins Jane 01 21 Cabinet

50 Fowler Sam 02 21 Cofee


Table
15 50 Cahair
SELECT [ApellidoPropietario], 01 15 Jewelry
Box
[NombrePropietario] 02 21 Pottery
FROM Propietarios_Antiguedades, 21 02 Librería
50 01 Plant
Antiguedades Stand

WHERE
[Propietarios_Antiguedades].[ID_Propie
tario]=[Antiguedades].[ID_Comprador]
And [Producto]='Silla';
Ing. Rolando Oviedo Blandón
33
(ing.roviedo@gmail.com)
Subconsultas
• Se pueden usar Alias, IN en el uso de las
subconsultas, y éstas pueden ser usadas en un
ejemplo con tres tablas. Primero, observa esta
consulta que imprime el apellido de aquellos
propietarios que han formulado un pedido y
en qué consiste éste, solamente listando
aquellos cuyos pedidos pueden ser atendidos
(esto es, hay un vendedor que posee el
producto pedido)
Ing. Rolando Oviedo Blandón
34
(ing.roviedo@gmail.com)
Propietarios_Antigüed
ades
ID_Propietario ApellidoPropietar NombrePropieta
Antigüedad
io rio
es
01 Jones Bill ID_vended ID_comprad Producto
02 Smith Bob or or
01 50 Cama
15 Lawson Patricia
02 15 Table
21 Akins Jane
15 02 Silla
50 Fowler Sam
21 50 Espejo
50 01 Armario
01 21 Cabinet
02 21 Cofee
Table
Pedidos
15 50 Cahair
ID_Propietari ProductoPedi
o do 01 15 Jewelry
Box
01 Table
02 21 Pottery
02 Armario
21 02 Librería
21 Silla 50 02 Plant
15 Espejo Stand

Ing. Rolando Oviedo Blandón


35
(ing.roviedo@gmail.com)
Subconsulta
SELECT OWN.ApellidoPropietario AS Apellido,
ORD.ProductoPedido AS Producto_Pedido
FROM Pedidos AS ORD,
Propietarios_Antiguedades AS OWN
WHERE
ORD.ID_Propietario=OWN.ID_Propietario
AND ORD.ProductoPedido IN
(SELECT Producto FROM Antiguedades);
Ing. Rolando Oviedo Blandón
36
(ing.roviedo@gmail.com)
Salida de subconsulta

Apellido Producto_Pedido
Smith Table
Smith Armario
Akins Silla
Lawson Espejo

Ing. Rolando Oviedo Blandón


37
(ing.roviedo@gmail.com)
Subconsulta
• Lista los apellidos de aquellos de la tabla
Propietarios_Antiguedades, sólo si han
comprado un producto:
SELECT ApellidoPropietario
FROM Propietarios_Antiguedades
WHERE ID_Propietario IN
(SELECT DISTINCT ID_Comprador FROM
Antiguedades);
Ing. Rolando Oviedo Blandón
38
(ing.roviedo@gmail.com)
Salida de subconsulta

ApellidoPropietario
Jones
Smith
Lawson
Akins
Fowler

Ing. Rolando Oviedo Blandón


39
(ing.roviedo@gmail.com)
Subconsulta
• Otro uso común de las subconsultas involucra
el uso de operadores para permitir a una
condición WHERE incluir la salida de un Select
de una subconsulta. Primero, lista los
compradores que compraron un producto
caro (el precio del producto es $100 mayor
que la media de precio de todos los
productos):

Ing. Rolando Oviedo Blandón


40
(ing.roviedo@gmail.com)
Subconsulta

SELECT DISTINCT ID_Comprador Salida


FROM Antiguedades ID_Comprador
WHERE PRECIO 1
(SELECT AVG(Precio)+ 100 FROM 2
Antiguedades); 15
21
50

Ing. Rolando Oviedo Blandón


41
(ing.roviedo@gmail.com)
Ing. Rolando Oviedo B.
GRACIAS

Ing. Rolando Oviedo Blandón


42
(ing.roviedo@gmail.com)

You might also like