Está en la página 1de 15

EJERCICIO GUIADO. BASES DE DATOS.

SQL
Lenguaje de Consulta SQL
El lenguaje SQL (lenguaje de consulta estructurado) es un lenguaje que permite actuar
sobre una base de datos.
Con este lenguaje se pueden construir rdenes que permiten hacer lo siguiente (entre otras
cosas)
! "#adir registros a las tablas.
! $odi%icar registros de las tablas.
! Eliminar registros de las tablas.
! &eali'ar Consultas sobre las tablas.
(racias a este lenguaje) se construir*n rdenes desde nuestra aplicacin ja+a) que se
aplicar*n a la base de datos) actuando sobre ella.
Las rdenes de aadir, modificar, eliminar reali'an cambios dentro de la base de datos) pero
no de+uel+en nada al programa ja+a.
,or otro lado) cuando se da una orden de realizar una consulta) la base de datos nos
de+uel+e el resultado de dicha consulta
(racias a este lenguaje) nuestra aplicacin tiene dominio total sobre la base de datos.
,uede actuar sobre ella introduciendo nue+os datos) o modi%icando los que hab-a) o
elimin*ndolos. .ambi/n puede e0traer in%ormacin de ella accediendo a las consultas de la
base de datos o reali'ando nue+as consultas.
" continuacin se comentar*n las reglas b*sicas de este lenguaje.
,rograma
1a+a
2ase de
3atos
4&3E5ES SQL
a#adir) modi%icar) eliminar
,rograma
1a+a
2ase de
3atos
Consulta SQL
&esultado de la consulta
Creacin de consultas en SQL
Se empe'ar* estudiando como reali'ar consultas sobre una base de datos usando el
lenguaje SQL (m*s adelante se +er* como reali'ar consultas de accin a#adir) modi%icar
eliminar)
Cdigo !ase en SQL "ara reali#ar consultas
,ara consultar una base de datos usar* un cdigo general como el que sigue
SELECT campos a visualizar
FROM tablas donde se encuentran dichos campos
WHERE condiciones que deben cumplir los reistros
OR!ER "# $orma de ordenar la consulta%
Como puede +er) una consulta en SQL tiene cuatro partes (SELEC.) 6&7$) 89E&E :
7&3E& 2;) de las cuales solo las dos primeras son obligatorias.
Se debe mantener el orden indicado. Es decir) primero SELEC.) luego 6&7$) luego
89E&E : luego 7&3E& 2;.
Este cdigo debe terminar siempre con punto : coma <
" continuacin se +er*n ejemplos de uso de este cdigo general.
$isuali#ar una ta!la entera %todos los ca&"os ' todos los registros(
Ejemplo: Visualizar la tabla Clientes
SELECT &
FROM clientes%
7bser+a) el = signi%ica +er todos los campos. En el 6&7$ se indica la tabla que se quiere
+er. 7bser+a como ha: que terminar con un <
$isuali#ar algunos ca&"os de una ta!la %algunos ca&"os ' todos los registros(
Ejemplo: Visualizar CIF, nombre y Direccion de todos los clientes
SELECT clientes'C(F) clientes'nombre) clientes'direccion
FROM clientes%
7bser+a como se indican los campos a +isuali'ar en la cl*usula SELEC.. Se indica la tabla
: luego el nombre del campo) separados por un punto.
$isuali#ar solo a)uellos registros de la ta!la )ue cu&"lan una condicin
Ejemplo: Visualizar todos los campos de auellos trabajadores ue cobren un sueldo
superior a los !""" euros
SELECT &
FROM traba*adores
WHERE traba*adores'sueldo + ,---%
7bser+a el uso de la cl*usula 89E&E para aplicar una condicin al resultado.
Ejemplo: Visualizar el nombre, apellido y sueldo de auellos trabajadores ue cobren un
sueldo entre #"" y $""" euros
SELECT traba*adores'nombre) traba*adores'apellidos) traba*adores'sueldo
FROM traba*adores
WHERE traba*adores'sueldo "ETWEE. /-- 0.! 1---%
7bser+a el uso de 2E.8EE5 > "53 para indicar que el sueldo est/ entre ?@@ : A@@@
*ota. +,s adelante en este ejercicio guiado se &uestran las distintas "osi!ilidades
)ue tene&os a la -ora de indicar criterios en la cl,usula ./ERE
$isuali#ar el contenido de una ta!la ordenado
Ejemplo: Visualizar la tabla de trabajadores ordenada por sueldo de menor a mayor
SELECT &
FROM traba*adores
OR!ER "# traba*adores'sueldo 0SC%
7bser+a el uso de la cl*usula 7&3E& 2; para indicar que se ordene por sueldo. La palabra
"SC indica ascendente (de menor a ma:or)
Ejemplo: Visualizar nombre, apellidos y sueldo de los trabajadores ordenados por sueldos
de mayor a menor
SELECT traba*adores'nombre) traba*adores'apellidos) traba*adores'sueldo
FROM traba*adores
OR!ER "# traba*adores'sueldo !ESC%
7bser+a el uso de 3ESC para indicar una ordenacin descendente.
Ejemplo: Visualizar nombre, apellidos y sueldo de los trabajadores ue cobren m%s de !"""
euros, ordenados por apellidos y nombre
SELECT traba*adores'nombre) traba*adores'apellidos) traba*adores'sueldo
FROM traba*adores
WHERE traba*adores'sueldo + ,---
OR!ER "# traba*adores'apellidos 0SC) traba*adores'nombre 0SC%
7bser+a aqu- como ordenar por dos campos) primero por apellidos : luego por nombre. Esto
signi%ica que aquellos trabajadores que tengan el mismo apellido ser*n ordenados por
nombre.
$isuali#ar datos de 0arias ta!las
Ejemplo: Visualizar todos los ser&icios' Interesa ue aparezca el nombre del trabajador ue
(izo el ser&icio, la fec(a del ser&icio realizado y el tipo de ser&icio
SELECT traba*adores'nombre) servicios'$echa) servicios'tipo
FROM traba*adores) servicios
WHERE traba*adores'!.(2servicios'!.(%
7bser+a aqu- como se indica en la cl*usula 6&7$ las dos tablas de las que e0traemos
datos. Es importante que te %ijes tambi/n en como se unen ambas tablas igualando en la
cl*usula 89E&E el campo de unin de ambas tablas) que en el ejemplo es el 35B.
Ejemplo: Visualizar todos los ser&icios' Interesa ue aparezca el nombre del trabajador ue
(izo el ser&icio, el tipo de ser&icio y el nombre del cliente al ue se le (izo el ser&icio
SELECT traba*adores'nombre) servicios'tipo) clientes'nombre
FROM traba*adores) servicios) clientes
WHERE traba*adores'!.(2servicios'!.( 0.! clientes'C(F2servicios'C(F%
7bser+a aqu- una consulta sobre tres tablas) las cuales aparecen en el 6&7$. Es necesario
indicar en la cl*usula 89E&E los campos de unin. La tabla .rabajadores se relaciona con
la tabla Ser+icios a tra+/s del campo 35B) : la tabla .rabajadores se relaciona con Clientes a
tra+/s del campo CB6. 7bser+a el uso de "53 para unir +arias condiciones.
Ejemplo: Visualizar los ser&icios ue (ayan costado m%s de $"" euros' Interesa &er la fec(a
del ser&icio, el nombre del cliente y el coste ordenado por cantidad
SELECT servicios'$echa) clientes'nombre) servicios'cantidad
FROM servicios) clientes
WHERE servicios'C(F2clientes'C(F 0.! servicios'cantidad+1--
OR!ER "# servicios'cantidad%
7bser+a como la cl*usula 89E&E contiene por un lado la condicin de unin de ambas
tablas : por otro lado la condicin que se busca (cantidad C A@@)
1OR+A DE I*DICAR CRITERIOS E* LA CL2USULA ./ERE
Se +an a indicar a continuacin una serie de reglas que se deben seguir a la hora de crear
condiciones en la cl*usula 89E&E de una consulta SQL
O"eradores Relacionales
O"erador Signi3ica4 Eje&"los
D Bgual que 89E&E cantidad D A@@
89E&E tipo D ELimpie'aF
89E&E %echa D G?!H!A@@IG
C $a:or que
(para nJmeros)
,osterior a
(para %echas)
89E&E cantidad C A@@
89E&E %echa C G?!H!A@@IG
CD $a:or o igual que
(para nJmeros)
Esa %echa o posterior
(para %echas)

89E&E cantidad CD A@@
89E&E %echa CD G?!H!A@@IG
K $enor que
(para nJmeros)
"nterior a
(para %echas)
89E&E cantidad K A@@
89E&E %echa K G?!H!A@@IG
KD $enor o igual que
(para nJmeros)
Esa %echa o anterior
(para %echas)
89E&E cantidad KD A@@
89E&E %echa KD G?!H!A@@IG
KC 3istinto de
(para %echas) nJmeros :
te0tos)
89E&E cantidad KC A@@
89E&E %echa KC G?!H!A@@IG
89E&E tipo KC ELimpie'aF
2etLeen...and Entre +alorM : +alorA
(aplicable a nJmeros :
%echas)
89E&E cantidad 2E.8EE5 M@@ "53 A@@
89E&E %echa 2E.8EE5 G?!H!A@@IG "53 GM!MA!A@@IG
LiNe Ecadena=F Que empiece por cadena
(aplicable a te0tos)
89E&E nombre LBOE E1ose=F
LiNe E=cadenaF Que termine por cadena
(aplicable a te0tos)
89E&E nombre LBOE E=1oseF
LiNe E=cadena=F Que contenga cadena
(aplicable a te0tos)
89E&E nombre LBOE E=1ose=F
BS 5PLL Que el campo est/ +ac-o
(aplicable a nJmeros) te0tos)
%echas)
89E&E tele%ono BS 5PLL
57. ... BS 5PLL Que el campo no est/ +ac-o
(aplicable a nJmeros) te0tos)
%echas)
89E&E 57. tele%ono BS 5PLL
O"eradores Lgicos
O"erador Signi3ica4
Eje&"los
"53 7bliga a que se cumplan las
dos condiciones que une.
89E&E cantidad C A@@ "53 tipo D ELimpie'aF
(3ebe cumplirse que la cantidad sea ma:or de A@@ : que
el tipo de ser+icio sea )impieza)
7& 2asta con que se cumpla
una sola de las dos
condiciones que une.
89E&E cantidad C A@@ 7& tipo D ELimpie'aF
(2asta con que la cantidad sea ma:or de A@@) o que el tipo
de ser+icio sea )impieza para que se cumpla la condicin)
57. Si no se cumple la
condicin) la condicin
global se cumple.
89E&E 57. cantidad C A@@
(Se cumple la condicin si la cantidad 57 es ma:or de
A@@)
1or&a de indicar los 0alores
Como puedes obser+ar en los ejemplos anteriores) tendr*s que tener en cuenta las
siguientes reglas para indicar +alores
Qalores num/ricos
Bndica los +alores num/ricos tal cual) teniendo en cuenta que debes usar el punto decimal
cuando quieras representar decimales.
Ejemplo
WHERE cantidad + 1--',1
Qalores de te0to
Los +alores de te0to se indican rode*ndolos entre comillas simples E
Ejemplos
WHERE nombre 2 34ose5
WHERE direcci6n L(7E 3&avenida&5
Qalores de %echa
Las %echas se indican rode*ndolas entre almohadillas G. Se debe tener en cuenta que las
%echas deben indicarse separadas por guiones > o barras R : que su %ormato debe ser el
siguiente
$es > 3ia > "#o
Ejemplos
WHERE $echa + 8-19-,91--:8
(Signi%ica que la %echa debe ser posterior al M de %ebrero de A@@H)
WHERE $echa ;+ 8,-9,191--<8
(Signi%ica que la %echa debe ser distinta del MA de 7ctubre de A@@I)
1or&a de indicar los ca&"os
5ormalmente los campos que se usan en el 89E&E (: en otras cl*usulas) se indican de la
siguiente %orma
Tabla'Campo
,or ejemplo)
WHERE traba*adores'sueldo + ,---
(*ueldo es un campo de la tabla trabajadores)
Si tenemos la seguridad de que no e0iste otro campo de otra tabla que se llame igual)
entonces podemos prescindir del nombre de la tabla.
,or ejemplo)
WHERE sueldo + ,---
(5o e0iste otro campo sueldo en otras tablas de la consulta)
En el caso de que el nombre del campo contenga espacios) entonces tendremos que rodear
el campo con corchetes.
,or ejemplo)
WHERE =sueldo del traba*ador> + ,---

(El campo se llama sueldo del trabajador)
EJERCICIO GUIADO *5 6
"CCESS permite la creacin de consultas usando SQL. Esto nos permitir* practicar con el
lenguaje SQL antes de que se aplique posteriormente en nuestras aplicaciones 1a+a.
En este ejercicio guiado se e0plicar* como crear una consulta usando el lenguaje SQL en
"ccess.
M. Entre en $is 3ocumentos. "ll- +er* la base de datos $"5E$,S". Sbrala.
A. "cti+e la opcin de Consultas para acceder al listado de consultas de la base de
datos.
T. Qamos a crear una nue+a consulta) por lo que tendr* que acti+ar la opcin Crear una
consulta en &ista Diseo
U. En el cuadro de eleccin de tablas no agregaremos ninguna. "s- pues pulsaremos
directamente el botn Cerrar.
H. El resultado es que aparece la +entana de dise#o de consultas. En la parte superior
i'quierda de esa +entana podr*s +er un botn con el te0to SQL. Este botn nos
permitir* crear la consulta usando el lenguaje SQL. ,Jlsalo.
I. "parecer* una pantalla casi en blanco donde escribir* la consulta SQL. 7bser+e que
:a aparece la cl*usula SELEC. escrita
V. ,ara empe'ar mostraremos el contenido de la tabla +rabajadores. ,ara ello) debe
escribir la siguiente consulta SQL
SELECT &
FROM traba*adores%
?. ,ara +er el resultado de esta consulta debe pulsar el botn Vista que se encuentra en
la parte superior i'quierda de la +entana
W. El resultado es que +er* el contenido de la tabla +rabajadores
M@. "caba de crear una consulta dentro de "ccess usando el lenguaje SQL. ,ara
modi%icar de nue+o la consulta SQL tendr* que desplegar el botn Vista : acti+ar de
nue+o la opcin SQL
MM. 3e esta manera entrar* de nue+o en el editor de consultas SQL de "ccess) donde
aJn permanecer* la consulta creada
MA. "hora modi%icaremos la consulta para que solo nos muestre los campos nombre,
apellidos, sueldo y fec(a. ,ara ello tendr* que escribir la siguiente consulta
SELECT traba*adores'nombre) traba*adores'apellidos) traba*adores'sueldo) traba*adores'$echa
FROM traba*adores%
MT. Psa el botn Vista para +er el resultado de la consulta. 7bser+a como ahora solo
+emos los campos indicados
MU. Quel+e a la 'ona de edicin de consultas SQL : cambia la consulta para que quede
as-
SELECT traba*adores'nombre) traba*adores'apellidos) traba*adores'sueldo) traba*adores'$echa
FROM traba*adores
WHERE traba*adores'apellidos L(7E ?&ez?%
Como +es) hemos a#adido una cl*usula ,(ere) para buscar solo aquellos
trabajadores cu:o apellido termine en ez.
MH. Comprueba el resultado
MI. Quel+e a la 'ona de edicin SQL. Qamos a complicar un poco la consulta.
Supongamos que queremos +er los ser+icios que han reali'ado cada uno de estos
trabajadores. ,ara ello tendremos que incluir a la tabla ser+icios en la consulta.
Supongamos que queremos +er el tipo de ser+icio reali'ado : el coste de cada
ser+icio. ,or otro lado) de cada trabajador solo queremos +er el nombre : los
apellidos.
9a: que tener en cuenta que es necesario a#adir en el 89E&E una condicin que
iguale el campo de unin entre la tabla trabajadores : la tabla ser&icios' Este campo
de unin es el 35B.
La consulta debe quedar as-
SELECT traba*adores'nombre) traba*adores'apellidos) servicios'tipo) servicios'cantidad
FROM traba*adores) servicios
WHERE traba*adores'apellidos L(7E ?&ez? 0.! traba*adores'!.(2servicios'!.(%
(7bser+a la inclusin en el 6&7$ de la tabla ser+icios) : como se ha a#adido una
condicin de unin entre la tabla trabajadores : ser&icios a tra+/s del campo 35B)
MV. Qisuali'a el resultado de la consulta (botn Vista) "parecer* lo siguiente
Como +es) aparecen todos los ser+icios : el nombre : apellidos del trabajador que
hi'o cada uno. Solo aparecen los ser+icios de los trabajadores cu:o apellido termine
en Ee'F.
M?. Quel+e a la +ista de edicin SQL. Qamos a complicar aJn m*s la consulta. Esta +e'
+amos a hacer que apare'ca el nombre del cliente al que se le hi'o el ser+icio.
Esto implica la inclusin de una nue+a tabla (clientes) : la necesidad de relacionar la
tabla ser&icios con la tabla clientes segJn el modelo E!& de esta base de datos. El
campo de unin es el CB6.
$odi%ica la consulta para que quede de la siguiente %orma
SELECT traba*adores'nombre) traba*adores'apellidos) servicios'tipo) servicios'cantidad)
clientes'nombre
FROM traba*adores) servicios) clientes
WHERE traba*adores'apellidos L(7E ?&ez? 0.! traba*adores'!.(2servicios'!.( 0.!
servicios'C(F2clientes'C(F%
(7bser+a la inclusin de la tabla clientes en la cl*usula 6&7$) : la adicin de una
nue+a condicin de unin) entre la tabla ser&icios : la tabla clientes en la cl*usula
89E&E. Esta condicin de unin une ambas tablas usando el campo CB6)
MW. Qeamos el resultado de la consulta
Como se puede obser+ar) aparece el listado de los ser+icios reali'ados por los
trabajadores cu:o apellido termine en Ee'F. "parece in%ormacin incluida en tres tablas
distintas trabajadores, ser&icios y clientes.
A@. Quel+e a la 'ona de dise#o SQL. "#adiremos una Jltima modi%icacin a la consulta :
la %inali'aremos.
"hora estableceremos un orden. Concretamente) ordenaremos el resultado de la
consulta segJn apellidos del trabajador. ,ara ello tendremos que a#adir una cl*usula
7&3E& 2;
SELECT traba*adores'nombre) traba*adores'apellidos) servicios'tipo) servicios'cantidad)
clientes'nombre
FROM traba*adores) servicios) clientes
WHERE traba*adores'apellidos L(7E ?&ez? 0.! traba*adores'!.(2servicios'!.( 0.!
servicios'C(F2clientes'C(F
OR!ER "# traba*adores'apellidos 0SC%
AM. Ejecuta la consulta : obser+a el resultado. "hora el listado de ser+icios aparece
ordenado segJn el apellido del trabajador que lo reali'a) al%ab/ticamente.
AA. 9emos %inali'ado con la consulta. Ci/rrela : gu*rdela. ,uede ponerle de nombre
*er&icios realizados por trabajadores ez.
AT. Este ha sido un ejemplo de consulta reali'ada en "ccess usando el lenguaje de
consulta SQL. Este lenguaje ser* +ital para hacer que nuestra aplicacin ja+a
manipule la base de datos correspondiente.
*OTA.
En Bnternet se pueden encontrar mJltiples manuales sobre SQL. Se recomienda buscar
in%ormacin sobre el tema para ampliar los conocimientos aqu- e0puestos.
La sinta0is del lenguaje SQL puede +ariar segJn el programa de base de datos que se use.
En este ejercicio guiado se ha usado la sinta0is del SQL incluido en el programa "ccess.
.enga en cuenta que puede haber +ariaciones entre este SQL : el incluido en otro gestor de
base de datos) aunque estas +ariaciones son m-nimas.
CO*CLUSI7*
El lenguaje de consulta SQL "er&ite &ani"ular la !ase de datos.
A tra08s de este lenguaje9 se "ueden crear rdenes )ue "er&itan:
; Introducir nue0os datos en la !ase de datos.
; Eli&inar datos de la !ase de datos.
; +odi3icar datos de la !ase de datos.
; Reali#ar consultas so!re la !ase de datos.
<ara reali#ar consultas en la !ase de datos usando el lenguaje SQL es necesario usar
instrucciones SELECT9 las cuales tienen la siguiente 3or&a general:
SELECT ca&"os a 0isuali#ar
1RO+ ta!las a las )ue "ertenecen dic-os ca&"os
./ERE condiciones a cu&"lir9 condiciones de unin de ta!las
ORDER B= ca&"os "or los )ue se ordena
El "rogra&a ACCESS "er&ite crear consultas usando el lenguaje SQL9 "or lo )ue
"uede ser una !uena -erra&ienta "ara "racticar este lenguaje.
*uestro "rogra&a de !ases de datos ja0a9 usar, este lenguaje "ara &ani"ular la !ase
de datos corres"ondiente.

También podría gustarte