Goo.
Consultas de Seleccién
iB ivo General
Conociendo la estructura de una tabla, poder construir consultas
Ml. Conter
a. Comando Select
b. Consultas Simples
c. Ordenamiento de registros
d. Consultas con predicado
e. Alias
1. Comando Select
Como dijimos en el capitulo 1, el comando Select es uno de los
SQL, y se utiliza para consultar datos de los registros de las tables
‘andes intemos de
Una sentencia Select es un lectura a la tabla de datos; las consults de selecoién se
utilizan para indicar el motor de datos que devuelva informacion bases de datos,
esta informacién es devuelta en forma de conjunto de registros.
2. Consultas Simples
La sintaxis basica de una consulta de seleccién es la siguient=
SELECT Campos FROM Tabla;
Donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los
mismos; para mostrar algunos ejemplos del uso de la sentencia select mostraremos, la
estructura de una tabla.
Nombre deTabla: Empleados -oa. tngnidetoan
Esta tabla esta disponible en la base de datos que le serviré como laborato‘o, por tanto
mostraremos la salida o parte ella en cada ejemplo de sentencia Select.
Conociendo los campos de la tabla empleados, hagamos algunos ejemplos del uso de la
seniencia Select,
Select Nombre, Telefono From Empleados
[2324141
WANLELOOS SANTOS [amet
MANUEL OFONTES ——(oszanél =
SOFAMELARA (saath
ARID ZONIGA aia
JORGE ALBERTO GIRON [2774006
[GERARDO ALMENOAREZ (9677505
|PABIO JUNIOR 224000
PABLO ESGUVEL 3A
MARIA ALMENDAREZ iat
ULC BONILLA [aaah
[ROSA ALCANTARA aN Figura 22
Esta consulta devuelve un arreglo de dos columnas con el campo nombre y telefono de le
tabla de Empleados
3. Ordenamionto de registros
Adicionalmente se puede especificar el orden en que se desean recuperar los regisivos de
las tablas mediante la clausula ORDER BY lista de campos. En donde lisia de campos:
representa los campos a ordenar. Miremos el siguiente ejemplo:
SELECT Codigopostal, Nombre, telefono FROM Emploados ORDER BY Nombre;
‘CARLOS CONTRERAS azAtel
2 (Carlos LUIS ACOSTA ate
12 (CARMEN MENDOZA ‘aaoatat
10 DORIS MARTINEZ [232-414
23465
ot ELMER LOPEZ
|GERARDO ALMENDAREZ
GERARDO LOPEZ (7358866
ot JONATAN FALOPE [ess
iz NORGE ALBERTO GRON [2274506
or JJOSELOPEZCACERES [2354556
jo% =. [JOSE LUIS ORTEGA, lasoasar |
io JOSELINA VALLE seater
2 VAN LORENZANA eatat
Figura 2.3
Esta consulta devuelve los campos Codigopostal, Nombre, telefono de la tabla Empleados
cordenados por el campo Nombre.
Se pueden ordenar los registros por mas de un campo; cuando se ordena por ejemplo por
dos campos debe tomarse en cuenta que el ordenamiento del segundo campo inicia en
cada cambio de grupo en relacién con el primer campo. SQL no tiene limites en cuanto al
No. de campos por los cuales se desea ordenar una tabla de datos.
Analicemos el siguiente ejemplo
SELECT CodigoPostal, Nombre, telefono FROM Empleados ORDER BY
CodigoPostal, Nombre;
[CARLOS CONTRERAS east
ELMER LOPEZ 2246
at (GERARDO ALMENDAREZ [9677585
ot (GERARDO LOPEZ | 350866
jot [JONATANFALOPE [2365665
or JOSE LOPEZ CACERES (2364505
et [JOSE LUIS ORTEGA 2524867
ot JU BONILLA [2aa-atat
at ROSA PENA LOPEZ [esata
[oz [Carlos LUIS ACOSTA [
S
ea MANUEL CIF Figura 2.4sat gees regomis
Note que si se ordena por mas de un campo deben ir separados por coma ()) y el titime
camao no tiene coma ()
incluso se puede especificar el orden de los registros, ya sea ascendente mediante la
cléusula ASC 0 descendente mediante la cléusula DESC. Si no se especificala forma de!
‘ordenamiento se asume Ascendentemente (ASC).
‘Agreguemos a la consulta anterior el concepto de ordemaiento Asc y Desc:
SELECT CodigoPostal, Nombre, telefono FROM Empleados ORDER 8Y
CodigoPostal DESC, Nombre ASC;
JORGE ALBERTO GRON
[JUAN LORENZANA,
\WULIO SAVALA
ROSA ALCANTARA
TSOFIAWELARA
[JOSELINA VALLE
uISAACOSTA = (zaTat
IMARCELA VALE zat
MARIO VARGAS.
Figura 2.5
En esta consulta se mostraria el codigopostal de mayor a menor, mientras que el nombre
‘se mostraria de menor (comenzando con la A si hubiera un nombre que empiece con esta
letra) a mayor (hasta la Z si hubiera un nombre que empiece con esta letra). El
ordenamiento del nombre inicia cada vez que cambia el dato del codigopostal; note el
ejemplo de la salida
4, Consultas con Predicado
El predicado es un agregado que le indica a SQL que debe considerar ciettas variantes
cualquier predicado se incluye antes de describir la lista de campos; entre los posibles
predicados a usar tenemos los siguientes:
*(asterisco)
Se usa para decir que queremos mostrar todos los campos de Ia tabla: este predicado s=
usa en vez de describir la lista de campos. No es conveniente abusar de ests presicado(
ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para
Reriguar los campos que contiene; es mucho mas rapido indicar el listado de campos,
deseados. Miremos el siguiente ejemplo:
Select* from Empleados;
n ose
eco EET
{panTEL Dos exros —EEUEGALPR
Tae FONT’ coc. S10
[SOFA MELARA [KLIHSDUKFH
ao TIN con wi
WORGE ALBERTO GIRON__[INTERAMERICANA
ea Cou is
cemeo oR
PASO ESCUNEL a
TorEN NORE —TEOUGCATPA
|SOUO BONILLA (COL LOPEZ,
— ite aoatan orc
Dose US aTieca [Orc
eaewet eioorK [eo re
ANREuANA OLA
Nuestra todos los campos de la tabla empleados con todos sus datos
Top
Devuelve un detenminado No. de registtos de la tabla; Supongamos que queremos
recuperar los nombres de los 25 primeros de Ie tabla EMPLEADOS:
SELECT TOP 25 Nombre, Direceién FROM Empleados ORDER BY Nombre DESC;
DISTINCT
Omite fos registros que contiene datos duplicados en los campos seleccionados. Por
ejemplo, varios empleados listados en la tabla Empleados pueden tenet el mismo
Nombre, Si dos registros contienen el mismo dato en el campo Nombre, la siguiente
instruccién SQL devuelve un Gnico registro:
‘SELECT DISTINCT Nombre FROM Empleados; |
La cléusula Distinct es de gran utlidad para saber datos inicos dentro de la tabla de
datos: recuerde que si hay un dato repetido entre los registros, solo se devuelve un dato
inioo, Para el caso se desea saber cudles son los diferentes cédigos postales de los
templeados; [a instruccién Select que nos da esta informacian seria la siguiente:sansmpeietresnnain QQ
Solect distinct codigopostal from empleados
Figura 2.7
Ei departamento de Recursos Humanos ha solicitado al departamento de cSmputo una
lista de las diferentes fechas de nacimiento de los empleados, para celebrar los
cumpleatios de los empleados. La instruccién Select que nos da esta informacion seria la
siguiente:
Select distinct Fechanac from empleados
am
DaUTri98e
‘ovTigeg
a1 i869
aT 965
1208/1965]
a
EB
aesrar
ara
| 1302973]
| zansna73}
| 12017975]
18077975]
Figura 2.8
Empleados que tenga la misma fecha de nacimiento son considerados como un solo
registro; solo apareceran las fechas de nacimiento inicas
La Gerencia ha solctado al departamento de cémputo una lista de los diferertes suekios
cue la empresa paga. La instruccién Select que nos da esta informacion seria a siguiente
Select distinct Sueldo from empleados
Note que la cléusula Distinct debe ir antes del nombre del campo al cual se apicars: jos
resultados de la instruccién anterior serian los siguientes:Oise cnc
S50 Figura 2.10
Hay campos en la tabla de datos a los cuales no tiene sentido aplicarle la cléusula
Distinet; para el caso miremos la siguiente instruccién:
Select distinct codigo from empleados
‘Sabemos que en una tabla de empleados el codigo de! empleado no se pusde repetir, ast
que la dausula Distinct esté demas
Note la siguiente instruccién:
Select distinct sexo from empleados i
‘Sabemos que solo hay dos sexo: F y M, asi que la cldusula Distinct esta demas |
5. Alias
En determinadas circunstancias es necesario asignar un nombre a una columna en fa
salida como resultado de una sentenca Select, en cualquier sentencia select, ol nombre |
que aparece en cada columna es el nombre del campo, pademos cambiar esto usando la
Giausula As, quien nos proporciona un Alias. Miremos la siguiente instruccion
SELECT CODIGO, NOMBRE AS Empleado FROM CMPLEADOS
EI nombre de! campo que tiene el nombre del empieado es NOMBRE, pero en el caso de
{a instruccién anterior aparecera en lugar de la palabra NOMBRE la palabra Emploado,
pues lo estamos indicando con la clausula As. |
El Alias (As) es de gran uso en los casos cuando estamos tratando con tablas con tablas
donde los nombres de los campos no describen su contenido; imagineso usted que el
campo NOMBRE se llamara CMP02; muchos analistas ocultan de esta manera los
nombres de! campo, para proteccién de los datos segiin ellos.
Los resultados del ejercicio anterior serian los siguientes:nn
[Carlos LUIS ACOSTA
MANUEL DOS SANTOS
|SOFIAMELARA
TMARIO ZUNIGA
‘JORGE ALBERTO GIRON
~_|GERAROO ALMENDAREZ
PABLO JUNIOR
PABLO ESGUNEL
[MARIA ALMENDAREZ
[SUG BONILLA
ep ee PSS
Figura 2.11
En la columna del nombre aparecera la palabra Empleado, y no Nombre que es el
nombre del campo.
Si el Alias es una oracién de varias palabras, debe agruparse con los caracterés [ ]
(dentro de las llaves angulares [ ] no debe ir un punto)
‘SELECT CODIGO, NOMBRE AS [Nombre del Empleado] FROM EMPLEADOS
[Carlos LUIS ACOSTA
ion [MANUEL DOS SANTOS
fa IMANUEL CIFONTES:
[oe [SOFIA MELARA,
on MARIO ZUNIGA,
ta (JORGE ALBERTO GIRON
|GERARDO ALMENDAREZ
[PABLO JUNIOR
(oos [PABLO ESQUIVEL
ota (MARIA ALMENDAREZ
lon (JUUO BONILLA
loi2 _|ROSAALCANTARA _
ora “JOSE LUIS ORTEGA
lore [CARMEN MENDOZA
Figura 2.10
En la columna del nombre aparecera la palabra Nombre del Empleado, y no Nombre
que es el nombre del campo.
Ala hora de indicar qué Alias queremos designar debemos considerar dos aspectos:scare sions
a. No podemos asignar como Alias el mismo nombre del campo
‘SELECT CODIGO, NOMBRE AS nombre FROM EMPLEADOS
b._ No podemos incluir el punto dentro de un Alias:
SELECT CODIGO, NOMBRE AS [Nom. del Empleado] FROM EMPLEADOSSQL, Longuale de Programacién e@
Guia de trabajo Capitulo No. 2
‘A continuacién se le presentan una serie de propuestas, de las cuales usted debe indicar
‘cual es la instruccién SELECT que la satisface. Estas respuestas debe ser comprobadas
en su laboratorio e indicar cuantos registros le fueron devueltos por la instiucci6n
Las siguientes preguntas serdn contestadas tomando en cuenta la siguiente tabla:
Nombre de tabla: Facturas.
[enna
Figura 2.11
1, week en de factura, fecha y totalneto
Selech Fackuwn p FECA sElelelrete No. de registros ——
t = Toon Factsto)
2. Mostrar los datos de Factura, Fecha, Cliente y Vendedor ordenado por Cliente:
No. de tos,
deleck : ae
3, Mostrar los datos de Factura, Fecha, Cliente, Vendedor y Totalneto ordenado
descendentemente por Vendedor y ascendentemente por Totalneto:
No. de registros,
4, Mostrar todos los campos de la tabla de Facturas:
No. de registros_
5. Mosirar los primeros 20 registros de la tabla Facturas; mostrar solo los datos Factura,
Fecha y Cliente ordenado por Factura:
No. de registros,
6. Mostrar en forma nica (distinct) los diferentes clientes a quienes se les ha facturado:
No. de registros,
7. Mostrar en forma tinica las diferentes fechas en que se ha facturado:
No. de registros.
8. Mostrar en forma tinica las diferentes fechas en que se ha habido vertas:
No. de registros_———
9, Mostrar los datos de Factura, Fecha, Cliente, Vendedor y Totalneto con los siguientes
Alias:
No. De Factura Fecha CodCliente Cod Vendedor Monto Factura
No. de registros_
40. Mostrar todos los campos de la tabla de Facturas ordenados por Fecha, Vendedor y
ag No. de registros_
411. Mostrar en forma tinica los diferentes clientes @ quienes se les ha facturado:
No: de registros_
Las siguientes preguntas serén contestadas tomando en cuenta la siguiente tabla:
42. Mostrar los datos de Codell, Nomell, Direccion y Creditomax con los
siguientes Alias:
Codigo Nombre del Cliente” Direccién de casa Crédito Maximo
No. de registros.
13, Mostrar todos los campos o informacion de la tabla
No. de registros
414, Mostrer los datos Codali, Nome! Direccion, telefono, ordenado en forma descendente
por Creditomax
No. de registros_
48. Mostrar en forma Unica los diferentes creditos maximos
No, de registros__
46. Mostrar los datos de Codeli, Nomeli, Direccion y Creditomax ordenado por Credito
maximo en forma descendente, y por nombre ascendentemente en la misma
instrucci6n
No. de registros.soimennaregnms
17. Qué errores encuentra en las siguientes instrucciones:
a. Select Nombre, Telefono, From Empleados:
b. SELECT Codigopostal, Nombre, telefono FROM Empleados ORDER Nombre
¢.SELECT Codigo Postal, Nombreempleado, telefono FROM Empleados ORDER BY
CodigoPostal Nombre;
d.SELECT CodigoPostal, Nombre, telefono as telefono FROM Empleado ORDER:
CodigoPostal DESC, Nombre ASC;
SELECT * TOP 25 Nombre, Direccion FROM Empleados ORDER BY Nombre DESC;
{SELECT DISTINTC Nombre FROM Empleados;
g.SELECT CODIGO as copdigo del empleado, NOMBRE AS [Nom, del Empleado]
FROM EMPLEADOS
48. La siguiente tabla se llama: APORTACIONES: