Вы находитесь на странице: 1из 9

Universidad Autnoma de Chiapas Facultad de Contadura y Administracin C-I Licenciatura en Sistemas Computacionales Lenguajes de Consultas

MCE. Lus Alejandro Trujillo Santos ltsantos@unach.mx MATI.AlejandroDomnguezLpez adguez@unach.mx

Unidad 4 Tratamiento de datos con tablas

Abril 2010
1 2

Objetivo especfico: Que el alumno aprenda a escribir consultas sobre una base de datos
Contenido:
Consultas simples Expresiones aritmticas Prevenir la seleccin de registros duplicados (DISTINCT ) ( Ordenamiento de los resultados de la consulta (Clusula ORDER BY) Restringir los registros seleccionados (Clusula WHERE) Operadores Consulta de datos con mltiples condiciones Reglas de precedencia para procesamiento de consultas Funciones con registros

Consultas simples
Sentencia SELECT La sentencia SELECT recupera informacin de la base de datos Sintaxis: SELECT [DISTINCT] { *, columna [alias], ....} FROM tabla; Es importante tomar en cuenta las siguientes consideraciones: Los comandos SQL pueden ser escritos en un o ms lneas. Las lneas son usualmente escritas en lneas separadas para una mejor comprensin del cdigo. Las identaciones (Tabulaciones) pueden ser utilizadas para hacer ms legible el cdigo. Los comandos no pueden ser divididos en lneas separadas, ni tampoco se permite abreviaturas. Todos los comandos son escritos en maysculas y todas las dems palabras como nombres de tablas y columnas, son escritas en minsculas. Los comandos SQL , no son sensibles a la escritura, al 4 menos que lo indiquen.

Seleccin de todas las columnas y todos los registros

Seleccin de columnas especficas


Se puede restringir el desplegado de la consulta nicamente a ciertas columnas, esto se realiza especificando el nombre de las columnas, separndolas por comas ( , ), en la clusula SELECT. Especificar el orden de las columnas de la columnas, manera en que desees que aparezcan. Ejemplo:
SELECT FROM
Id_dep,apellido_paterno,id_director

Sintaxis:

SELECT FROM

* departamento;

La clusula SELECT, especfica que columnas van a desplegarse. La clusula FROM, especfica que tabla contiene las columnas listadas en la clusula SELECT. El * selecciona todas las columnas de la tabla .
5

Empleado;

Expresiones aritmticas
Se puede necesitar modificar la manera en que los datos son desplegados, o ejecutar clculos. Esto es posible aritmticas. utilizando expresiones Ejemplo:

Expresiones aritmticas

Una expresin aritmtica puede contener nombre de columnas, constantes numricas y operadores numricos.
Operadores
+

Utilicemos el operador multiplicacin para desplegar el salario anual y su porcentaje por comisin para todos los empleados.
SELECT FROM apellido_paterno,sueldo * 12, pct_comision Empleado;

Descripcin

*
/

Suma Resta Multiplicacin Divisin

Precedencia de los operadores:


Si una expresin aritmtica contiene ms de un operador, la multiplicacin y la divisin son evaluadas primero. Si dentro de una expresin los operadores de tienen la misma prioridad entonces la evaluacin es de izquierda a derecha. Ejemplo: Desplegar el apellido paterno, sueldo y compensacin anual de los empleados. Calcular la compensacin anual multiplicando el salario mensual por 12 y sumndole un bono de $100.
SELECT FROM apellido_paterno, sueldo , 12 * sueldo + 100 Empleado; 9

Precedencia de los operadores:


Utilicen parntesis para mejorar la claridad de la expresin. Por ejemplo: la expresin anterior puede ser escrita como: ( (12 * sueldo) + 100, y el resultado no cambia. ) ,
SELECT FROM apellido_paterno, sueldo , 12 * (sueldo + 100) Empleado;

10

Prevenir la seleccin de registros duplicados (DISTINCT) Al menos que se indique los lenguajes de consulta despliegan los resultados de una consulta sin eliminar registros duplicados. Por ejemplo.
SELECT FROM apellido_p p paterno Empleado;

DISTINCT con mltiples Columnas Se puede especificar mltiples columnas despus del calificador DISTINCT. El calificador DISTINCT afecta a todas las columnas seleccionadas.
SELECT FROM DISTINCT apellido paterno nombre apellido_paterno, Empleado;

La palabra DISTINCT elimina registros duplicados en el resultado, la palabra DISTINCT debe ser incluida enseguida de la clusula SELECT.
SELECT FROM DISTINCT apellido_paterno Empleado;
11 12

Ordenamiento de los resultados de la consulta (Clusula ORDER BY) El orden de los registros seleccionados en el resultado de la consulta es indefinido. La clusula ORDER BY puede ser usado para ordenar los registros. SI es utilizada, se debe colocar la clusula ORDER BY hasta el ltimo.
SELECT FROM [ ORDER BY En donde:
ORDER BY

Ejemplo: (Clusula ORDER BY)


SELECT FROM ORDER BY apellido_paterno, fecha_contratacin,id_dep Empleado apellido_paterno;

Ordenamiento de los datos por Default

expr Tabla {column,expr} [ASC|DESC] ];

Especfica el orden en el cual los registros son recuperados y desplegados Orden ascendente de los registros. Este es el default Orden descendente de los registros.
13

ASC DESC

El ordenamiento por default es ascendente Los L valores l numricos i son desplegados, d l d primeramente los valores ms bajos, por ejemplo 1999. Los valores de fechas son desplegados, primero los valores ms recientes primero, por ejemplo 01Enero-1998 antes de 01-Junio-1998. Los valores alfabticos son desplegados en orden alfabtico, por ejemplo A primero y Z al ltimo.
14

Invirtiendo el ordenamiento por default Para invertir el orden en el cual los registros son desplegados, el palabra DESC es colocada despus del nombre de la columna en la clusula ORDER BY. Ejemplo:
SELECT FROM ORDER BY
apellido_paterno, fecha_contratacion,id_dep Empleado fecha_contratacin DESC;

Ordenamiento por posicin: Otro mtodo de ordenar los resultados de la consulta es ordenarlos por posicin. Esto es especialmente til cuando ordenamos expresiones muy largas. En lugar de escribir la expresin de nuevo puedes especificar su posicin en la lista SELECT. Ejemplo: SELECT apellido_paterno, sueldo * 12 FROM Empleado ORDER BY 2;

15

16

Ordenamiento por muchas columnas.


Tambin se puede ordenar los resultados de la consulta incluyendo ms de una columna en la clusula ORDER BY. El lmite es el nmero de columnas en la tabla. En la clusula ORDER BY, especificamos las columnas, y separamos los nombres de las columnas utilizando comas. Si queremos invertir el orden de una columna, especificamos la palabra DESC despus de su nombre o posicin. Ejemplo:
SELECT apellido_paterno, id_dep, sueldo FROM Empleado ORDER BY Id_dep, sueldo DESC;

Restringir los registros seleccionados (Clusula WHERE)


Se puede restringir los registros seleccionados por un consulta utilizando la clusula WHERE. Una clusula WHERE contiene una condicin que debe ser cumplida, y se coloca enseguida de la clusula FROM. Sintaxis:
SELECT FROM [WHERE [ ORDER BY expr Tabla Condicin(es)] expr ];

En donde:
WHERE
Condicin
17

Restringe la consulta para los registros que cumplan una condicin Est compuesto por nombre de columnas, expresiones, 18 constantes y operadores de comparacin

Clusula WHERE (cont.) Los operadores de comparacin estn divididos en 2 categoras: Lgicos y SQL. Son utilizados en la clusula WHERE para comparar una expresin a otra usando el siguiente formato. Sintaxis
WHERE expr operador Valor

Operadores de Comparacin:
En la clusula WHERE, las cadenas de caracteres y las fechas deben ser encerradas por comillas simples ( ). Sin embargo, en las constantes numricas no es necesario. Ejemplo: SELECT FROM WHERE apellido_paterno, nombre nivel estudios apellido paterno nombre, nivel_estudios Empleado apellido_paterno = GUTIERREZ

Ejemplo: WHERE SELECT FROM WHERE

Id_depto = 8

apellido_paterno, id_dep, sueldo Empleado Id_depto = 8 19

En algunos ambientes (Unix), todos los caracteres son sensibles a maysculas y minsculas. Por consiguiente si cambiamos la cadena de caracteres a Gutierrez, puede generar un resultado distinto. 20

Operadores de Comparacin:
Operador = > >= < <= Operador BETWEEN...AND... BETWEEN AND IN (lista) LIKE IS NULL Significado Igual a Mayor que Mayor o igual que Menor que Menor o igual que Significado Entre 2 valores (inclusive) Relaciona cualquiera de los valores (4,5,6) Relaciona un patrn de caracteres VELAS% Es un valor nulo

Expresiones con negaciones:


Se puede encontrar que es ms fcil encontrar el registro que no cumple con una condicin. Para estos casos se utilizan los operadores de comparacin y SQL con una expresin de negacin.

Operadores SQL que operan con todos los tipos de datos:

Negacin de los operadores lgicos:


Operador != ^= = <> NOT colnombre = NOT colnombre > No sea igual a (IBM) No sea igual a (todos los sistemas operativos) No sea igual a No es mayor que
22

Significado No sea igual a (VAX, UNIX, PC)

Operadores Lgicos:
Operador AND OR NOT Significado Si ambos componentes de la condicin son verdaderas, entonces el resultado es verdadero. Si cualquiera de los componentes de la condicin son verdaderas, entonces el resultado es verdadero
21

Retorna la condicin opuesta

Negacin de operadores SQL.


Operador NOT BETWEEN...AND... NOT IN (lista) NOT LIKE IS NOT NULL Significado No esta entre 2 valores (inclusive) Relaciona cualquiera de los valores (4,5,6) No est en la cadena comparada Valores no nulos

Operadores SQL BETWEEN y IN

Operador BETWEEN: Para desplegar registros en un rango de valores utilice el operador BETWEEN Ejemplo:
SELECT FROM WHERE apellido_paterno, nombre, fecha_contratacion Empleado fecha_contratacion BETWEEN 09-May-91 AND 17-jun-2001 ;

Si comparamos un valor conocido a un valor nulo, se utilizan los operadores de comparacin IS o IS NOT NULL. Si comparamos valores nulos con otros operadores, el resultado siempre ser Falso. Por ejemplo, Pct_comision != NULL es siempre falso por que un valor nulo no puede ser igual o no igual a cualquier otro valor, incluso a cualquier valor nulo.
23

24

Operadores SQL BETWEEN y IN Operador IN: Para probar valores en una lista especificada, utilice el operador IN Ejemplo: Desplegar el nmero de departamento, nombre y nmero de regin de los departamentos en las regiones 1 o 3 3. SELECT Id,nombre,id_region FROM WHERE departamento Id_region IN (1,3) ;

Operadores SQL Operador LIKE: En ocasiones, no siempre se conoce el valor exacto de la bsqueda. Se puede seleccionar registros que cumplan con un patrn de caracteres p utilizando el operador LIKE Los 2 smbolos para construir bsquedas son:
Smbolo % _ Descripcin Representa cualquier secuencia de 0 mas caracteres Representa cualquier carcter
26

Si los caracteres o fechas estn utilizadas en la lista deben ser encerradas en ( ).


25

Operadores SQL Operador LIKE: Ejemplos:


SELECT apellido_paterno FROM WHERE Empleado apellido_paterno LIKE M% ;

Operadores SQL Operador LIKE (cont.): Ejemplo: Desplegar el apellido paterno y la fecha de contratacin de la tabla empleados, a quienes se le haya contratado en el ao 1999 SELECT FROM WHERE apellido_paterno, fecha_contratacion Empleado fecha_contratacion fecha contratacion LIKE %91 ; %91

Desplegar todos los empleados que no contengan una a dentro de su apellido.


SELECT FROM WHERE apellido_paterno Empleado apellido_paterno NOT LIKE %a% ;
27

Combinando caracteres comodnes. Los caracteres comodnes % y _ pueden ser combinados con caracteres. Ejemplo: SELECT apellido_paterno FROM Empleado WHERE apellido_paterno LIKE _a% ;
28

Operador IS NULL
El operador IS NULL prueba los valores que son nulos Un valor nulo significa que el valor no esta disponible, desconocido o inaplicable. Por esta razn no se pueden realizar pruebas con = por que un valor nulo no puede ser igual a cualquier valor. Ejemplo: Desplegar el nmero de cliente, el nombre y Crdito autorizado para todo cliente quienes no tengan un representante de ventas. SELECT Id,nombre, Credito_autorizado , , _ FROM WHERE FROM WHERE SELECT FROM WHERE Cliente Id_rep_ventas = NULL; Cliente Id_rep_ventas = ; Id,nombre, Credito_autorizado Cliente Id_rep_ventas IS NULL;
29

Operador IS NULL Ejemplo: Desplegar el apellido paterno, puesto y porcentaje por comisiones para todo empleado quienes tengan comisiones
SELECT FROM WHERE Apellido_paterno, puesto, pct_comision Empleado E l d Pct_comision IS NOT NULL;

SELECT Id,nombre, Credito_autorizado

30

Consultas de datos con mltiples condiciones Se puede llegar a tener la necesidad de especificar criterios complejos, y combinar varias condiciones de bsqueda. Los operadores AND y OR pueden ser utilizados para h tili d hacer expresiones l i i lgicas compuestas. El operador AND retorna TRUE si ambas condiciones evaluadas son verdaderas. El operador OR retorna TRUE si cualquiera de las condiciones es verdadera.
31

Consultas de datos con mltiples condiciones Ejemplos:


SELECT FROM WHERE AND apellido_paterno, Id_dep,sueldo,nivel_estudios Empleado Id_dep = 2 Puesto = G P t Gerente ; t

SELECT FROM WHERE OR

apellido_paterno, Id_dep,sueldo,nivel_estudios Empleado Id_dep = 2 Puesto = Gerente;


32

Reglas de precedencia. Se puede combinar los operadores AND y OR en una misma expresin lgica. Los resultados de todas las condiciones est determinado por la precedencia de los operadores. Cuando los operadores de igual precedencia son utilizados se ejecutan de izquierda a utilizados, derecha. Cada AND es ejecutada primero que el operador OR El operador AND tiene la ms alta precedencia que el OR Cuando utilizamos expresiones con negacin, los operadores de comparacin se evalan primero 33

Reglas de precedencia.
Orden de evaluacin

Operador Todos los operadores de comparacin (=,<>,>,>=,<,<=, IN, LIKE, IS NULL, BETWEEN) AND OR

1 2 3

34

Ejemplos de reglas de precedencia. Desplegar el apellido paterno, sueldo y nmero de departamento para aquellos empleados del departamento 4 quienes ganan 10,000 o ms, as como tambin todos los empleados del departamento 2.
SELECT FROM WHERE AND OR apellido_paterno, sueldo, id_dep empleado Sueldo >= 10000 dep_id = 4 dep_id = 2;

Ejemplos de reglas de precedencia. Desplegar el apellido paterno, sueldo y nmero de departamento para aquellos empleados del departamento 4 o 2 quienes ganan 10,000 o ms. SELECT FROM WHERE AND OR apellido_paterno, sueldo, id_dep empleado Sueldo >= 10000 (dep_id = 4 dep_id = 2);

35

36

Funciones con registros


Las funciones hacen a las consultas bsicas ms poderosas y son utilizadas para manipular los valores de los datos Las funciones se pueden clasificar en 2 tipos:
Funciones de registro simple Funciones de grupo

Funciones con registros simples


Las funciones de registro simple son utilizadas para manipular datos. Aceptan uno o ms argumentos y retornan un valor para cada registro recuperado por la consulta Un argumento puede siguientes casos:
Una Una Una Una constante variable columna expresin

Los tipos de funciones de registro simple que podemos encontrar son:


Carcter Numricas N i Fechas Funciones que convierten de un tipo de dato a otro AVG COUNT MAX MIN STDDEV SUM VARIANCE

ser

cualquiera

de

los

Ejemplos de funciones de grupo son:

Caractersticas de las funciones de registro simple

Actan sobre cada registro recuperado en la consulta Regresan un resultado por registro Pueden regresar un valor de dato diferente al de referencia. Las funciones pueden anidarse Se pueden utilizar en las clusulas SELECT, WHERE y ORDER BY
38

37

Funciones de carcter.
Funcin LOWER(columna\expresin) UPPER(columna\expresin) INITCAP(columna\expresin) Propsito Convierte minsculas a los caracteres a

Ejemplos de Funciones de carcter.


Desplegar el apellido paterno en minsculas, el userid con la primera letra maysculas y las dems en minsculas y el nivel de estudios en maysculas, para todos aquellos que en nivel de estudios inicien con LIC. SELECT FROM WHERE LOWER(apellido_paterno), userid, UPPER(nivel_estudios) Empleado Nivel_estudios Nivel estudios LIKE LIC ; LIC. ;

Convierte a los caracteres a maysculas Convierte el primer carcter de cada palabra en maysculas y los dems caracteres en minsculas Concatena el valor de la columna1 al valor de la columna2 Regresa los caracteres especificados de la columna\expresin, iniciando en la posicin m, con n caracteres de longitud. Retorna el nmero de caracteres en la columna\expresin Si es nulo, convierte el primer valor a el segundo valor 39

CONCAT(columna1\expresin1, columna2\expresin2) SUBSTR(columna\expresin,m\n\)

Desplegar el apellido paterno y nombre de la tabla empleado, para todos los registros con apellido paterno igual a CAMACHO

LENGHT(columna\expresin) NVL(columna1\expresin1, columna2\expresin2)

SELECT FROM WHERE

apellido_paterno, nombre Empleado UPPER(apellido_paterno) = CAMACHO;


40

Ejemplos de Funciones de carcter. Desplegar el nombre y pas de los clientes con crdito autorizado mayor que 100,000. Concatenando nombre y pas SELECT FROM WHERE CONCAT(nombre, pais) cliente Credito_autorizado > 100,000;
Funcin

Funciones numricas.
Propsito

ROUND(columna\expresin,n) Redondea el valor de la columna\expresin a n decimales TRUNC(columna\expresin,n) MOD(m,n) Trunca el valor de la columna a n decimales, si n es omitido, no se consideran los decimales. Regresa el residuo de la divisin de m por n

Desplegar el nombre del producto y la longitud del nombre para todos los productos en donde los primeros 3 caracteres sean TEN SELECT FROM WHERE nombre, LENGHT(nombre) producto SUBSTR(nombre,1,3) = TEN;
41

Las funciones TRUNC y ROUND trabajan con argumentos similares. Si el segundo argumento es 0 se omite, entonces el valor es truncado a redondeado a cero decimales. ROUND(45.923,2) 45.92 ROUND(45.923,0) 46 TRUNC(45.923,2) 45.92 TRUNC(45.923) 45
42

Ejemplos de Funciones numricas. Calcular el residuo de la razn de sueldo y porcentaje de comisin para todos los empleados con sueldo mayor que 6,000 SELECT FROM WHERE apellido_paterno, MOD(sueldo,pct_comision) empleado Sueldo > 6000;
Operacin Fecha + nmero Fecha - nmero Fecha - Fecha

Funciones con Fechas Desde que las bases de datos almacenan fechas como nmeros, se puede ejecutar clculos usando operadores aritmticos tales sumas y restas. Se pueden realizar sumas y restas con campos de tipo fecha Operaciones aritmticas con fechas:
Resultado Fecha Fecha Nmero de das Descripcin Suma el nmero de das a la fecha Resta el nmero de das a la fecha Refleja la diferencia entre fechas

43

44

Funciones de Conversin
SQL provee 3 funciones para convertir un valor de un tipo de dato a otro.
Funcin TO_CHAR(nmero\fecha,fmt) TO_NUMBER(caracter) TO NUMBER(caracter) TO_DATE(caracter) Propsito Convierte un valor numrico o fecha carcter a

Funcin TO_CHART con formato Tipo Fecha La funcin TO_CHART permite convertir una fecha a un formato especificado por el usuario. Ejemplo: Desplegar el nmero de orden para todas las ordenes realizadas por el representante de ventas 10. Desplegando con un formato de fecha que incluya el mes y el ao.

Convierte una cadena de caracteres conteniendo dgitos a un valor numrico Convierte una cadena de caracteres representando una fecha a un valor Fecha

SELECT id,TO_CHART(fecha_orden,MM/YY) Orden FROM WHERE id_rep_ventas = 10;


46

45

Funcin TO_CHART con Formato Tipo Numrico Cuando trabajamos cadenas de caracteres con valores numricos, se necesita convertir esos nmeros a tipo carcter utilizando la funcin TO_CHART. Esto es especialmente til cuando se requiere concatenar cadenas. Ejemplo: SELECT Orden || TO_CHART(id) || tiene un importe total de || TO_CHAR(total,$9,999,99) FROM Orden [WHERE Fecha_envio = 21-09-2001;
47

Funciones de Registro Simple Anidadas


Las funciones de registro simple pueden ser anidadas Las funciones anidadas son evaluadas del nivel ms interno hasta el nivel ms externo Ejemplo: F3(F2(F1(col,arg1),arg2),arg3)
Paso 1 Paso 2 Paso 3

Desplegar el apellido paterno y si el empleado tiene asignado un jefe.

SELECT apellido_paterno, NVL(TO_CHAR(id_director), No tiene asignado jefe) FROM empleado WHERE Id_director IS NULL;

48

Fin Unidad4

49

Вам также может понравиться