Vous êtes sur la page 1sur 7

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 puede ser modificable. Consultas bsicas La sintaxis bsica de una consulta de seleccin 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, Telfono FROM Clientes

Esta sentencia devuelve un conjunto de resultados con el campo nombre y telfono de la tabla clientes. Devolver Literales En determinadas ocasiones nos puede interesar incluir una columna con un texto fijo en una consulta de seleccin, por ejemplo, supongamos que tenemos una tabla de empleados y deseamos recuperar las tarifas semanales de los electricistas, podramos realizar la siguiente consulta:

SELECT Empleados.Nombre, 'Tarifa semanal: ', Empleados.TarifaHora * 40 FROM Empleados WHERE Empleados.Cargo = 'Electricista'

Ordenar los registros Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clusula 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

Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. 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 clusula (ASC - se toma este valor por defecto) descendente (DESC)
SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC SQL (Structured Query Language) Las operaciones sobre la base de datos estn determinadas por el Lenguaje SQL, bajo estndares determinados los cuales pueden ser utilizadas de forma bsica o avanzada segn el DBMS utilizado. Las operaciones SQL correspondientes al SELECT se realizarn con el siguente ejempo:

1. OPERACIN SELECT La sintaxis bsica de esta operacin es: SELECT <lista de atributos> FROM <lista de tablas> WHERE <condiciones> Ejemplos: a. Select bsico. Se desea obtener la cdula y el nombre de todas las personas que trabajan en la compaa. SELECT cedula, nombre FROM personas b. Select con clausula WHERE. Se desea obtener toda la informacin de la persona cuya cdula sea igual a 12453535. SELECT nombre,primer_apellido,segundo_apellido,direccion,telefono FROM personas WHERE cedula = 12453535

c. En la clausula WHERE es posible utilizar los conectores lgicos AND - OR. Se necesita la cdula y el nombre de las personas cuyo apellido sea BETANCUR y su sexo sea MASCULINO: SELECT cedula,nombre FROM personas WHERE primer_apellido = 'Betancur' AND sexo = 'M'

d. Select combinando tablas y utilizacin del comodn '*'. Se desea obtener la informacin de todos los dependientes de las personas cuyo apellido sea BETANCUR y su sexo sea MASCULINO. Cuando se trabaja con varias tablas y se utiliza el '*', se le debe anteponer el nombre de la tabla de la cual se desea extraer la informacin: SELECT dependientes.* FROM personas, dependientes WHERE primer_apellido = 'Betancur' AND sexo = 'M' AND dependiente.cedula = personas.cedula

e. Utilizando alias o sinnimos de trabajo a las tablas del Select. Estos se utilizan por facilidad en el manejo de la instruccin. La misma consulta anterior: SELECT d.* FROM personas p, dependientes d WHERE primer_apellido = 'Betancur' AND sexo = 'M' AND d.cedula = p.cedula

f. Cuando se necesita extraer informacin distintiva dentro de un grupo de tuplas, se utiliza la clausula DISTINCT. Por ejemplo, se necesita extraer los diferentes valores de salarios que se pagan en la compaa: SELECT distinct salario FROM personas

g. Una de las clausulas ms significativas en el Select es el COUNT, la cual se utiliza para contar la cantidad de registros que cumplen con una condicin especfica: g.1 Mostrar el total de empleados en la compaa: SELECT FROM count(*) personas

g.2 Mostrar el total de proyectos que tiene asignada la dependencia 3 SELECT count(*) FROM proyectos WHERE codigo_dep = 3

g.3 Mostrar cuntos salarios diferentes o distintas se pagan en la compaa: SELECT FROM count(distinct salario) personas

h. Clusula WHERE compara sus campos comunmente con valores nicos, pero tambien es posible comparar con un "conjunto" de valores. Esto es realizable a travs del operador IN. Ejemplo, se desea saber qu empleados estn involucrados en los proyectos 139001 o 139002. h.1 Forma bsica: SELECT personas.* FROM personas, proyectos WHERE (numero_proy = 139001 OR numero_proy =139002) AND cod_dep = codigo_dep h.2 Forma con IN: SELECT personas.* FROM personas, proyectos WHERE numero_proy IN (139001,139002) AND cod_dep = codigo_dep

i. Operacin Select con anidamientos. La clausula WHERE comunmente compara los campos con valores exactos, pero tambin es probable utilizarla comparando sus campos con otras sentencias Select. Esta forma tambin es llamada Consulta anidada: i.1 Mostrar los diferentes proyectos en donde el ingeniero OCHOA participa:

SELECT distinct numero_proy FROM proyectos WHERE numero_proy IN (select numero_proy from proyectos p, departamentos d, personas where p.codigo_dep = d.codigo_dep and primer_apellido = 'Ochoa')

i.2 Mostrar los empleados cuyo jefe es de apellidos BETANCUR BERMUDEZ: SELECT personas.* FROM personas WHERE cedula_sup IN (select cedula from personas where primer_apellido = 'Betancur' and segundo_apellido = 'Bermudez') i.3 Mostrar el nombre de los empleados cuyo salario es mayor que el de todos los empleados del departamento 3. Aqu se utiliza la utilizacin de la clusula ALL: SELECT nombre, primer_apellido, segundo_apellido FROM personas WHERE salario > ALL (select salario from personas where cod_dep = 3)

j. En el select es posible validar la existencia de informacin nula a travs de la clusula NULL. Ejemplo, Mostrar los empleados que no tengan asignado salario: SELECT * FROM personas WHERE salario IS NULL k. Otra clusula que es posible utilizar en el Select es EXIST, la cual ayuda a validar si el resultado de una consulta anidada es vacio o no. k.1 Seleccionar todos los empleados cuyo dependiente tenga la misma cedula, sexo y nombre. SELECT p.nombre, p.primer_apellido, p.segundo_apellido FROM personas p WHERE EXIST (select * from dependiente d where p.cedula = d.cedula and d.sexo = p.sexo and nombre = nombre_dep) k.2 Seleccionar los empleados que no tienen dependientes: SELECT p.nombre, p.primer_apellido, p.segundo_apellido FROM personas p WHERE NOT EXIST (select * from dependiente d where p.cedula = d.cedula)

l. Con la operacin de Select tambin es posible utilizar funciones agregadas para: sumar (SUM), maximizar (MAX), minimizar (MIN) y promediar (AVG). Se pueden utilizar al nivel de la clusula SELECT o en la clusual HAVING (que veremos posteriormente. Ejemplo, el total pagado por la compaa, el mximo y el mnimo salario y el promedio pagado: SELECT sum(salario), max(salario), min(salario), avg(salario) FROM personas

m. Agrupacin de tuplas y aplicacin de condiciones para ellas. Aqu se utilizan dos clusulas nuevas: GROUP BY, la cual agrupa tuplas segn las columnas puestas en la clusula Select; HAVING, permite hacer operaciones sobre estas agrupaciones. Veamos: m.1 Mostrar el nmero y el nombre del proyecto en donde trabajen ms de dos empleados SELECT nombre, numero_proy FROM proyectos, trabaja_en WHERE numero_proy = nump GROUP BY nombre, numero_proy HAVING count(*) > 1 n. La clusula WHERE adems de las anteriores instrucciones tambin puede utilizar la instruccin LIKE, que le sirve para encontrar informacin string no precisa. Veamos el siguiente ejemplo: SELECT nombre, numero_proy FROM proyectos WHERE nombre LIKE '%lic%' o. En la clusula Select tambin es posible realizar operaciones aritmticas '+', '-', '*', con los campos de valor: SELECT salario*1.18 FROM personas WHERE salario < 1200000 p. Una clusula ms que podemos utilizar en la operacin Select es la que me permite dale un orden a las tuplas, ORDER BY, segn el o los criterios indicados a travs de columnas. SELECT * FROM personas ORDER BY nombre, primer_apellido, segundo_apellido

Vous aimerez peut-être aussi