Академический Документы
Профессиональный Документы
Культура Документы
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.
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
*
/
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
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
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
Id_depto = 8
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
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
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
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
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;
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
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
ser
cualquiera
de
los
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
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
Desplegar el apellido paterno y nombre de la tabla empleado, para todos los registros con apellido paterno igual a CAMACHO
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
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
SELECT apellido_paterno, NVL(TO_CHAR(id_director), No tiene asignado jefe) FROM empleado WHERE Id_director IS NULL;
48
Fin Unidad4
49