Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SQL
1. Introduccin
2. Consultas de Seleccin
3. Criterios de Seleccin
4. Agrupamiento de Registros y Funciones Agregadas
5. Consultas de Actualizacin
6. Tipos de Datos
7. SubConsultas
8. Consultas y Referencias Cruzadas
9. Consultas de Unin Interna
10.
11.
12.
13.
14.
15.
La Clusula Procedure
16.
Anexos
INTRODUCCIN
A SQL
1. INTRODUCCIN
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 mtodo
OpenRecordSet y como la propiedad RecordSource del control de
datos. Tambin se puede utilizar con el mtodo Execute para
crear y manipular directamente las bases de datos Jet y crear
consultas SQL de paso a travs para manipular bases de datos
remotas cliente servidor.
1.2 COMANDOS
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.
COMANDOS DLL
Comando
Descripcin
CREATE
DROP
ALTER
COMANDOS DML
Comando
Descripcin
SELECT
INSERT
Utilizado para cargar lotes de datos en la base de datos en una nica operacin.
UPDATE
DELETE
1.3 CLUSULAS
Las clusulas son condiciones de modificacin utilizadas para
definir los datos que desea seleccionar o manipular.
Comando
Descripcin
FROM
Utilizada
para especificar la tabla de la cual se van a seleccionar los registros
WHERE
Utilizadapara especificar las condiciones que deben reunir los registros que
se van a seleccionar
GROUP
BY
Utilizada
para separar los registros seleccionados en grupos especficos
HAVING
Utilizada
para expresar la condicin que debe satisfacer cada grupo
ORDER
BY
Utilizada
para ordenar los registros seleccionados de acuerdo con un orden especfico
Operador
Uso
AND
Es
el y lgico. Evala dos condiciones y devuelve un
valor de verdad slo si ambas son ciertas.
OR
Es
el o lgico. Evala dos condiciones y devuelve un
valor de verdad si alguna de las dos es cierta.
NOT
Negacin
lgica. Devuelve el valor contrario de la expresin.
1.5
OPERADORES DE COMPARACIN
Operador
Uso
<
Menor
que
>
Mayor
que
<>
Distinto
de
<=
Menor
Igual que
>=
Mayor
Igual que
BETWEEN
Utilizado
para especificar un intervalo de valores.
LIKE
Utilizado
en la comparacin de un modelo
In
Utilizado
para especificar registros de una base de datos
Descripcin
AVG
Utilizada
para calcular el promedio de los valores de un campo determinado
COUNT
Utilizada
para devolver el nmero de registros de la seleccin
SUM
Utilizada
para devolver la suma de todos los valores de un campo determinado
MAX
Utilizada
para devolver el valor ms alto de un campo especificado
MIN
Utilizada
para devolver el valor ms bajo de un campo especificado
CONSULTAS DE
SELECCIN
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.
2. CONSULTAS DE SELECCIN
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.
Descripcin
ALL
Devuelve todos
los campos de la tabla
TOP
DISTINCT
DISTINCROW
ALL:
TOP:
Devuelve un cierto nmero de registros que entran entre al
principio o al final de un rango especificado por una
clusula ORDER BY. Supongamos que queremos recuperar los
nombres de los 25 primeros estudiantes del curso 1994:
2.4 ALIAS
En determinadas circunstancias es necesario asignar un nombre
a alguna columna determinada de un conjunto devuelto, otras
veces por simple capricho o por otras circunstancias. Para
resolver todas ellas tenemos la palabra reservada AS que se
encarga de asignar el nombre que deseamos a la columna
deseada. Tomado como referencia el ejemplo anterior 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 procederamos de la siguiente forma:
CRITERIOS DE
SELECCIN
3. CRITERIOS DE SELECCIN
En el captulo anterior se vio la forma de recuperar los registros
de las tablas, las formas empleadas devolvan todos los registros
de la mencionada tabla. A lo largo de este captulo se estudiarn
las posibilidades de filtrar los registros con el fin de recuperar
solamente aquellos que cumplan unas condiciones
preestablecidas.
Antes de comenzar el desarrollo de este captulo hay que recalcar
tres detalles de vital importancia. El primero de ellos es que cada
vez que se desee establecer una condicin referida a un campo
de texto la condicin de bsqueda debe ir encerrada entre
comillas simples; la segunda es que no se posible establecer
condiciones de bsqueda en los campos memo y; la tercera y
ltima hace referencia a las fechas.
Las fechas se deben escribir siempre en formato mm-dd-aa en
donde mm representa el mes, dd el da y aa el ao, hay que
prestar atencin a los separadores -no sirve la separacin
habitual de la barra (/), hay que utilizar el guin (-) y adems la
fecha debe ir encerrada entre almohadillas (#). Por ejemplo si
deseamos referirnos al da 3 de Septiembre de 1995 deberemos
hacerlo de la siguiente forma; #09-03-95# #9-3-95#.
3.1
OPERADORES LGICOS
Operador
<expresin2>
Resultado
Verdad
AND
Falso
Falso
Verdad
AND
Verdad
Verdad
Falso
AND
Verdad
Falso
Falso
AND
Falso
Falso
Verdad
OR
Falso
Verdad
Verdad
OR
Verdad
Verdad
Falso
OR
Verdad
Verdad
Falso
OR
Falso
Falso
Verdad
XOR
Verdad
Falso
Verdad
XOR
Falso
Verdad
Falso
XOR
Verdad
Verdad
Falso
XOR
Falso
Falso
Verdad
Eqv
Verdad
Verdad
Verdad
Eqv
Falso
Falso
Falso
Eqv
Verdad
Falso
Falso
Eqv
Falso
Verdad
Verdad
Imp
Verdad
Verdad
Verdad
Imp
Falso
Falso
Verdad
Imp
Null
Null
Falso
Imp
Verdad
Verdad
Falso
Imp
Falso
Verdad
Falso
Imp
Null
Verdad
Null
Imp
Verdad
Verdad
Null
Imp
Falso
Null
Null
Imp
Null
Null
Modelo
Planteado
Coincide
No
Coincide
Varios caracteres
a*a
aBC
Carcter especial
a[*]a
a*a
aaa
Varios caracteres
ab*
abcdefg, abc
cab, aab
Un solo carcter
a?a
aBBBa
Un solo dgito
a#a
aaa, a10a
Rango de
caracteres
[a-z]
f, p, j
2, &
Fuera de un rango
[!a-z]
9, &, %
b, a
Distinto de un
dgito
[!0-9]
A, a, &, ~
0, 1, 9
Combinada
a[!b-m]#
abc, aj0
3.4 EL OPERADOR IN
Este operador devuelve aquellos registros cuyo campo indicado
coincide con alguno de los indicados en una lista. Su sintaxis es:
Expresin [Not] In(valor1, valor2, . . .)
AGRUPAMIENTO DE
REGISTROS
4. AGRUPAMIENTO DE REGISTROS
4.1 GROUP BY
Combina los registros con valores idnticos, en la lista de campos
especificados, en un nico registro. Para cada registro se crea un
valor sumario si se incluye una funcin SQL agregada, como por
ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es:
4.2 AVG
Calcula la media aritmtica de un conjunto de valores contenidos
en un campo especificado de una consulta. Su sintaxis es la
siguiente
Avg(expr)
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.
4.3 COUNT
Calcula el nmero de registros devueltos por una consulta. Su
sintaxis es la siguiente
Count(expr)
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.
Aunque expr puede realizar un clculo sobre un
campo, Count simplemente cuenta el nmero de registros sin
tener en cuenta qu valores se almacenan en los registros. La
4.6 SUM
Devuelve la suma del conjunto de valores contenido en un campo
especfico de una consulta. Su sintaxis es:
SumP(expr)
En donde expr 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).
CONSULTAS DE
ACTUALIZACIN
Las consultas de accin son aquellas que no devuelven ningn
registro, son las encargadas de acciones como aadir y borrar y
modificar registros.
5. CONSULTAS DE ACTUALIZACIN
Las consultas de actualizacin son aquellas que no devuelven
ningn registro, son las encargadas de acciones como aadir y
borrar y modificar registros.
5.1 DELETE
FROM TablaOrigen
5.3 UPDATE
Crea una consulta de actualizacin que cambia los valores de los
campos de una tabla especificada basndose en un criterio
especfico. Su sintaxis es:
TIPOS DE
DATOS
Los tipos de datos SQL se clasifican en 13 tipos de datos
primarios y de varios sinnimos vlidos reconocidos por dichos
tipos de datos.
6. TIPOS DE DATOS
Los tipos de datos SQL se clasifican en 13 tipos de datos
primarios y de varios sinnimos vlidos reconocidos por dichos
tipos de datos.
Tipos de datos primarios:
Tipo
de Datos
Longitud
Descripcin
BINARY
1 byte
BIT
1 byte
BYTE
1 byte
COUNTER
4 bytes
CURRENCY
8 bytes
DATETIME
8 bytes
4 bytes
8 bytes
SINGLE
DOUBLE
SHORT
2 bytes
LONG
4 bytes
LONGTEXT
1 byte por
carcter
LONGBYNARY
Segn se
necesite
TEXT
1 byte por
caracter
SUBCONSULTAS
Una subconsulta es una instruccin SELECT anidada dentro de
una instruccin SELECT, SELECTINTO, INSERTINTO,
DELETE, o UPDATE o dentro de otra subconsulta.
7. SUBCONSULTAS
Una subconsulta es una instruccin SELECT anidada dentro de
una instruccin SELECT, SELECTINTO, INSERTINTO,
DELETE, o UPDATE o dentro de otra subconsulta.
Puede utilizar tres formas de sintaxis para crear una subconsulta:
En donde:
Comparacin: Es una expresin y un operador de comparacin
que compara la expresin con el resultado de la subconsulta.
Expresin: Es una expresin por la que se busca el conjunto
resultante de la subconsulta.
Instruccin
sql : Es una instruccin SELECT, que sigue el mismo formato y
reglas que cualquier otra instruccin SELECT. Debe ir entre
parntesis.
Se puede utilizar una subconsulta en lugar de una expresin en la
lista de campos de una instruccin SELECT o en una
clusula WHERE o HAVING. En una subconsulta, se utiliza una
instruccin SELECT para proporcionar un conjunto de uno o ms
valores especificados para evaluar en la expresin de la
clusula WHERE o HAVING.
Se puede utilizar el predicado ANY o SOME, los cuales son
sinnimos, para recuperar registros de la consulta principal, que
satisfagan la comparacin con cualquier otro registro recuperado
en la subconsulta. El ejemplo siguiente devuelve todos los
productos cuyo precio unitario es mayor que el de cualquier
producto vendido con un descuento igual o mayor al 25 por
ciento.:
CONSULTAS DE
REFERENCIAS
CRUZADAS
Una consulta de referencias cruzadas es aquella que nos permite
visualizar los datos en filas y en columnas, estilo tabla.
8. CONSULTAS DE REFERENCIAS
CRUZADAS
1996
1997
Pantalones
1.250
3.000
Camisas
8.560
1.253
Zapatos
4.369
2.563
En donde:
Funcin agregada: Es una funcin SQL agregada que opera
sobre los datos seleccionados.
Instruccin select: Es una instruccin SELECT.
Campo pivot: Es el campo o expresin que desea utilizar para
crear las cabeceras de la columna en el resultado de la consulta.
valor1, valor2: Son valores fijos utilizados para crear las
cabeceras de la columna.
Para resumir datos utilizando una consulta de referencia cruzada,
se seleccionan los valores de los campos o expresiones
especificadas como cabeceras de columnas de tal forma que
Ejemplos:
UN CASO PRCTICO:
Se trata de resolver el siguiente problema: tenemos una tabla de
productos con dos campos, el cdigo y el nombre del producto,
tenemos otra tabla de pedidos en la que anotamos el cdigo del
producto, la fecha del pedido y la cantidad pedida. Deseamos
consultar los totales de producto por ao, calculando la media
anual de ventas.
ESTRUCTURA
Y DATOS DE LAS TABLAS:
1. ARTCULOS:
ID
Nombre
Zapatos
Pantalones
Blusas
2. PEDIDOS:
Id
Fecha
Cantidad
11/11/1996
250
11/11/1996
125
11/11/1996
520
12/10/1996
50
04/05/1996
250
05/08/1996
100
01/01/1997
40
02/08/1997
60
05/10/1997
70
12/12/1997
15/12/1997
520
17/10/1997
1250
Cdigo
TOTAL
Media
1996
1997
Zapatos
48
87
00
48
Pantalones
955
238,75
75
580
1940
485
620
1320
Blusas
Comentarios a la consulta:
La clusula TRANSFORM indica el valor que deseamos visualizar
en las columnas que realmente pertenecen a la consulta, en este
caso 1996 y 1997, puesto que las dems columnas son
opcionales.
SELECT especifica el nombre de las columnas opcionales que
deseamos visualizar, en este caso Producto, Cdigo, Total y
Media, indicando el nombre del campo que deseamos mostrar en
cada columna o el valor de la misma. Si incluimos una funcin de
clculo el resultado se har en base a los datos de la fila actual y
no al total de los datos.
FROM especifica el origen de los datos. La primera tabla que
debe figurar es aquella de donde deseamos extraer los datos,
esta tabla debe contener al menos tres campos, uno para los
ttulos de la fila, otros para los ttulos de la columna y otro para
calcular el valor de las celdas.
En este caso en concreto se deseaba visualizar el nombre del
producto, como el tabla de pedidos slo figuraba el cdigo del
mismo se aadi una nueva columna en la clusula select
llamada Producto que se corresponda con el campo Nombre de la
tabla de artculos.
Para vincular el cdigo del artculo de la tabla de pedidos con
el nombre del misma de la tabla artculos se insert la clusula
INNER JOIN.
La clusula GROUP BY especifica el agrupamiento de los
registros, contrariamente a los manuales de instruccin esta
clusula no es opcional ya que debe figurar siempre y debemos
agrupar los registros por el campo del cual extraemos la
informacin. En este caso existen dos campos del cual extraemos
CONSULTAS DE UNIN
INTERNAS
9. CONSULTAS DE UNIN
INTERNAS
Las vinculaciones entre tablas se realizan mediante la clusula
INNER que combina registros de dos tablas siempre
que haya concordancia de valores en un campo comn. Su
sintaxis es:
En donde:
tb1, tb2:
Son los nombres de las tablas desde las que se combinan los
registros.
campo1, campo2: Son los nombres de los campos que se
combinan. Si no son numricos, los campos deben ser del mismo
tipo de datos y contener el mismo tipo de datos, pero no tienen
que tener el mismo nombre.
comp: Es cualquier operador de comparacin relacional
: =, <, >, <=, >=, o <>.
Se puede utilizar una operacin INNER JOIN en cualquier
clusula FROM. Esto crea una combinacin por equivalencia,
conocida tambin como unin interna. Las combinaciones Equi
son las ms comunes; stas combinan los registros de dos tablas
siempre que haya concordancia de valores en un campo comn a
ambas tablas. Se puede utilizar INNER JOIN con las
SELECT campos
SELECT campos
FROM tb1 INNER JOIN
(tb2 INNER JOIN [( ]tb3
[INNER JOIN [( ]tablax [INNER JOIN ...)]
ON tb3.campo3 comp tbx.campox)]
ON tb2.campo2 comp tb3.campo3)
ON tb1.campo1 comp tb2.campo2;
* [Cantidad]) AS [Ventas],
[Nombre] & " " & [Apellidos] AS [Nombre completo] FROM
[Detalles de pedidos],
Pedidos, Empleados, Pedidos INNER JOIN [Detalles de pedidos]
ON Pedidos.
[ID de pedido] = [Detalles de pedidos].[ID de pedido],
Empleados INNER JOIN
Pedidos ON Empleados.[ID de empleado] = Pedidos.[ID de
empleado] GROUP BY
[Nombre] & " " & [Apellidos];
CONSULTAS DE
UNIN EXTERNAS
Aprenderemos a hacer consultas combinando los resultados de
dos o ms consultas o tablas independientes
En donde:
consulta1, consulta2, consultan: Son instrucciones SELECT,
el nombre de una consulta almacenada o el nombre de una tabla
almacenada precedido por la palabra clave TABLE. Puede
combinar los resultados de dos o ms consultas, tablas e
instrucciones SELECT, en cualquier orden, en una nica
operacin UNION. El ejemplo siguiente combina una tabla
existente llamada Nuevas Cuentas y una instruccin SELECT:
ESTRUCTURAS DE
LAS TABLAS
Aprenderemos la estructura de las tablas, creacin de ndices y
como modificiar el diseo de las mismas.
En donde:
Parte
Descripcin
tabla
campo
tipo
tamao
ndice
ndice
multicampo
Crea una nueva tabla llamada Empleados con dos campos, uno
llamado Nombre de tipo texto y longitud 25 y otro
llamado Apellidos con longitud 50.
Parte
Descripcin
nombre
primarioN
unicoN
refN
tabla externa
campos externos
Tipo de Indice
Descripcin
UNIQUE
PRIMARY KEY
FOREIGN KEY
En donde:
Parte
Descripcin
ndice
tabla
campo
ASC|DESC
UNIQUE
DISALLOW NULL
IGNORE NULL
PRIMARY
En donde:
Parte
Descripcin
tabla
campo
tipo
tamao
ndice
ndice
multicampo
Operacin
Descripcin
ADD COLUMN
ADD
DROP COLUMN
DROP
CONSULTAS CON
PARMETROS
Parte
Descripcin
Nombre
Es el nombre
del parmetro
Tipo
Es el tipo de
datos del parmetro
Consulta
Una consulta
SQL
Set Rs = Qd.OpenRecordset()
End Sub
Ejemplo:
BASES DE DATOS
EXTERNAS
Una base de datos externa es una base de datos que no sea la
activa. Aunque para mejorar los rendimientos es mejor adjuntarlas
a la base de datos actual y trabajar con ellas.
LA CLUSULA
PROCEDURE
Esta clusula es poco usual y se utiliza para crear una consulta a
la misma vez que se ejecuta, opcionalmente define los
parmetros de la misma.
En donde:
Parte
Descripcin
NombreConsulta
Parmetro
tipo
ConsultaSQL
TUTORIAL DE SQL,
ANEXOS
Anexos del Tutorial de SQL y resolucin de problemas
16 ANEXOS
16.1 RESOLUCIN
DE PROBLEMAS
16.1.1 BUSCAR
INFORMACIN DUPLICADA EN UN CAMPO DE UNA TABLA.
Para generar este tipo de consultas lo ms sencillo es utilizar el
asistente de consultas de Access, editar la sentencia SQL de la
consulta y pegarla en nuestro cdigo. No obstante este tipo de
consulta se consigue de la siguiente forma:
16.2 UTLIZAR
SQL DESDE VISUAL BASIC
Existen dos tipos de consultas SQL: las consultas de seleccin
(nos devuelven datos) y las consultas de accin (aquellas que no
devuelven ningn registro). Ambas pueden ser tratadas en Visual
Basic pero de forma diferente.
Las consultas de seleccin se ejecutan recogiendo la informacin
en un recordset previamente definido mediante la
instruccin openrecordset(), por ejemplo:
Set RS=MiBaseDatos.OpenRecordSet(SQL)
Sintaxis
Descripcin
Now
Variable= Now
Date
Variable=Date
Time
Variable=Time
Year
Variable=Year(Fecha)
Month
Variable=Month(Fecha)
Day
Variable=Day(Fecha)
Weekday
Variable=Weekday(Fecha)
Hour
Variable=Hour(Hora)
Minute
Variable=Minute(Hora)
Second
Variable=Second(Hora)
DatePart
Esta funcin devuelve una parte sealada de una fecha concreta.
Su sintaxis es:
ComienzoAo)
Descripcin
yyyy
Ao
Trimestre
Mes
Da del
ao
Da del
mes
Da de
la semana
ww
Semana del ao
Hora
Minutos
Segundos
Descripcin
Utiliza el valor
pode efecto del sistema
Domingo (Valor
predeterminado)
Lunes
Martes
Mircoles
Jueves
Viernes
Sbado
Valor
Descripcin
Comienza el ao
el 1 de enero (valor predeterminado).
Empieza con la
semana que tenga al memos cuatro das en el nuevo ao.
Empieza con la
semana que est contenida completamente en el nuevo ao.
iif(Expresion,Valor1,Valor2)