MATERIAL INTRODUCTORIO ORACLE 11G

Esp. JONATHAN GUERRERO ASTAIZA

Capacidades de una sentencia SELECT La sentencia SELECT recibe información a partir de una base de datos. Con la sentencia SELECT usted puede realizar lo siguiente: • • •

Proyección: Seleccionar las columnas de las tablas que son retornadas por la consulta. Seleccione tantas como crea necesario Selección: Seleccionar las filas a ser retornadas por la consulta. Varios criterios pueden ser usados para restringir las filas a recibir Uniones: Traer información que esta almacenada en más de una tabla especificando el vincula entre ellas.

Sentencia Básica SELECT En su forma simple, una sentencia SELECT debe incluir lo siguiente: • •

Una clausula SELECT, La cual especifica las columnas a ser desplegadas Una clausula FROM, que identifica la tabla o tablas que contienen las columnas especificadas en la clausula SELECT

En la sintaxis SELECT * DISTINCT Column|expression Alias FROM table

Es una lista de una o más columnas Selecciona todas las columnas Elimina duplicados Selecciona las columnas nombradas o la expresión Da a las columnas seleccionadas una cabecera diferente Especifica la tabla que contiene las columnas

Seleccionando todas las columnas Puede desplegar todas las columnas de datos de una tabla usando el carácter * en un SELECT. También puede realizar esta acción escribiendo una a una las columnas que componen la estructura de la tabla para mostrarlas todas.

Especificando columnas especificas Puede usar la cláusula SELECT para especificar una a una las columnas deseadas para proyectar en la consulta, debe separarlas por coma (,), de igual forma es importante el orden en el que coloca cada una de las columnas en la cláusula SELECT ya que este indica la posición en la que será mostrada en el resultado de la ejecución.

Expresiones Aritméticas Puede ser que necesite modificar la forma en que la información es mostrada, o desarrollar cálculos o mirar posibles escenarios. Todo esto es posible usando expresiones aritméticas. Una expresión aritmética puede contener nombres de columnas, valores numéricos constantes, y operadores aritméticos. NOTA: para valores de tipos DATE o TIMESTAMP solo puede usar los operadores de suma y resta.

Precedencia de los operadores Si una expresión aritmética tiene más de un operador, la multiplicación y la división serán los primeros operadores a ser evaluados. Si los operadores tienen la misma prioridad, la evaluación es realizada de izquierda a derecha. Puede usar paréntesis para forzar la ejecución de algunos operadores de manera previa. Reglas de precedencia • • •

Multiplicación y división ocurre antes que la suma y la resta Operadores de la misma prioridad se evalúan de izquierda a derecha Los paréntesis son usados para sobrescribir la precedencia por defecto o para clarificar la sentencia.

Si a una fila le falta un valor en una columna en particular, tal valor es llamado nulo o que contiene un valor nulo. Null es un valor que es desconocido, no asignado, no disponible o inaplicable. Null no es lo mismo que cero o un espacio en blanco. El cero es un número y el espacio es un carácter. NOTA: por defecto sql usara la palabra null para especificar un valor desconocido pero usted puede modificar esto por un valor que considere más adecuado, Cambiando el valor en tools->Preferences->Database->Advanced Parameters

Valores nulos en expresiones aritméticas Si cualquier valor de una columna es null en una expresión aritmética, esta es evaluada en null.

Usando alias de columnas Generalmente cuando se utiliza una expresión en la cláusula SELECT la cabecera proyectada en los resultados obedece a la descripción de la expresión. También puede ser que el nombre de la columna no es lo suficientemente claro para expresar la información de las tablas, es en estos casos donde usar un alias de columna es conveniente. Para realizar esto puede después de la expresión o columna colocar la palabra AS seguida del nuevo nombre de la cabecera. La palabra AS no es obligatoria por lo que puede crear alias simplemente colocando el nuevo nombre de cabecera inmediatamente después de la columna o expresión. Si el alias contiene espacios debe usar “ ” para asignar el alias a la columna o la expresión.

Operador de Concatenación Puede unir columnas a otras columnas, expresiones aritméticas, o valores constantes para crear expresión de caracteres usando el operador de concatenación (||). Elementos a cada lado del operador se combinan para una única columna de salida. Si concatena una cadena de caracteres con una columna o expresión con valores nulos, se combina realmente con un carácter vacío.

Literales Un literal es carácter, numero o fecha que es incluida en una lista de elementos del SELECT. No es una columna o un alias de columna. Es impresa por cada fila retornada. Literales fecha y caracteres deben ser encerados entre comillas simples ‘ ’.

Operador alternativo Quote(q) Se debe usar este operador cuando por alguna razón los valores de los literales incluyen el carácter comilla simple ya que esta tiene función particular y un significado especifico. Puede seleccionar cualquier delimitador conveniente, incluyendo cualquiera de los siguientes pares de caracteres: [],{},() o .

Eliminación de Duplicados SQL por defecto cuando ejecuta una consulta no elimina valores duplicados, para que lo haga debe especificar la palabra DISTINCT. Una vez se coloca la palabra DISTINCT se considerar como fila repetida aquella en que sus valores coincida con una fila previamente registrada en el resultado de la consulta.(debe coincidir todos y cada uno de los campos que proyecta la cláusula SELECT)

Desplegado la estructura de una tabla Puede ver la estructura de una tabla usando la cláusula DESCRIBE o DESC con el nombre de la tabla, esta permite visualizar cuales son cada una de la columnas que componen la tabla especificando el tipo de dato de cada columna y si estas tienen la restricción de admitir o no valores nulos.

Limitando las filas que son seleccionadas Puede restringir las filas seleccionadas de una consulta usando la cláusula WHERE. Una clausula WHERE contiene una condición que debe ser verificada y esta inmediatamente después de la cláusula FROM. La condición es evaluado en true, la fila evaluada es agregado al resultado. En la sintaxis: WHERE

restringe la consulta para que las filas sean verificadas por una condición

Condition Está compuesta de nombres de columnas, expresiones, constantes y un operador de comparación. Una condición especifica la combinación de una o más expresiones y operadores lógicos, y retorna el valor de TRUE, FALSE O NULL

NOTA: no se pueden usar alias de columna en una clausula WHERE

Cadenas de caracteres y fechas Cadenas de caracteres y fechas en una clausula WHERE deben ser encerradas entre comillas simples ‘ ’. Todas las búsquedas de caracteres son sensibles a mayúsculas y minúsculas. La base de datos Oracle almacena fechas en un formato numérico interno, representando la centuria, año, mes, día, horas, minutos y segundos. El despliegue por defecto de las fechas es en el formato DD-MON-RR

Operadores de comparación Operadores de comparación son usados en condiciones para comparar una expresión con otro valor o expresión.

Condiciones de rango usando el operador BETWEEN Puede desplegar filas basado en un rango de valores usando el operador BETWEEN. El rango especificado debe tener un valor límite inferior y uno superior los cuales se incluyen dentro de valores validos del rango. Este operador puede ser también usado con valores de tipo carácter y de tipo fecha.

Condición de membresía usando el operador IN Para verificar valores en un conjunto especifico, ese el operador IN. La condición definida usando el operador IN es también conocida como condición de membresía. El operador IN puede ser usado con valores de cualquier tipo de dato. Si los valores usados son de tipo carácter o fecha estos deben colocarse entre comillas simples ‘ ’. Internamente el servidor de Oracle procesa el operador IN como si fuera un conjunto de comparaciones lógicas OR y no tiene ningún beneficio de rendimiento sobre esta estructura, es usado lógicamente por simplicidad.

Patrones de emparejamiento usando el operador LIKE Puede ser que no siempre conozca el valor exacto a buscar. Puede seleccionar filas que concuerden con un patrón de caracteres usando el operador LIKE. Dos símbolos pueden ser usados para construir la cadena de búsqueda. Símbolo % -

Descripción Representa cualquier secuencia de cero o más caracteres Representa cualquier carácter (solo uno)

El símbolo % y _ pueden ser usados en cualquier combinación con caracteres literales. Identificador de escape Se usan cuando por alguna razón el carácter % o el carácter _ o ambos necesitan ser usados como patrones de búsqueda y no como comodines del patrón con su significado. SELECT * FROM EMPLOYEES WHERE JOB_ID LIKE ‘’%SA\_%’ ESCAPE ‘\’

Usando condiciones con NULOS Se incluye el operador IS NULL yIS NOT NULL para trabajar valores o expresiones con valores nulos. Tenga en cuenta que no es posible verificar si un valor es nulo con el operador =.

Definiendo condiciones Usando operadores Lógicos límite Una condición lógica combina el resultado de dos condiciones o más para producir un único resultado. Una fila será considerada en la respuesta únicamente si el resulta final de toda la estructura es evaluada como TRUE.

Resultado de combinar dos expresiones con el operador AND

Ojo que en todas las búsquedas de caracteres tiene importancia si se usa minúscula o mayúscula.

Resultado de combinar dos expresiones con el operador OR

La siguiente tabla muestra los resultados de aplicar el operador NOT a una condición:

El operador NOT puede ser usado en conjunto con otros operadores SQL como BETWEEN, LIKE, IN y NULL.

Usando la cláusula ORDER BY El orden en que las filas son retornadas al ejecuta una consulta es indeterminado. La cláusula ORDER BY es usada para ordenar las filas. Sin embargo si usa la cláusula ORDER BY esta debe ser la última dentro de la estructura SQL. Puede especificar una expresión, un alias, o una posición de columna como condición de ordenamiento. NOTA: use las clausulas NULLSFIRST o NULLSLAST para especificar donde las filas retornadas con valores nulos deben aparecer, al único o al final de la secuencia de ordenamiento.

Variables de Sustitución Hasta ahora todas las sentencias SQL han sido ejecutadas con columnas, condiciones y valores predeterminados. Puede crear reportes que permiten a los usuarios proveer valores propios para restringir el rango de datos retornados usando variables de sustitución. Puede incluir variables de sustitución en un archivo decomandos o una sentencia SQL. Una variable puede ser pensada como un contenedor en el cual los valores son temporalmente almacenados. Cuando la sentencia se ejecuta, el valor almacenado es sustituido. También puede definir variables usando el comando DEFINE. DEFINE crea y asigna un valor a una variable.

Usando & para variables de sustitución Cuando se ejecuta un reporte, los usuarios usualmente quieren restringir la información resultante de manera dinámica. SQL PLUS o SQL Developer permiten esto por medio de variables de sustitución. Use un ampersand& para identificar cada variable en su sentencia SQL. Notación &variable_usuario

Descripción Indica una variable en una sentencia SQL; si la variable no existe, SQL *Plus o SQL Developer pide al usuario un valor (la nueva variable es descartada después que es usada)

Con el &, se le pedirá al usuario un valor cada vez que el comando es ejecutado si la variable no existe.

NOTA: Tenga en cuenta que cuando el valor de sustitución es una cadena de caracteres o fechas debe colocar la variable de sustitución entre comillas simples ‘ ’.

Las variables de sustitución pueden ser usadas para reemplazar valores de la columnas en la cláusula SELECT, nombres de tablas en la cláusula FROM, condiciones en la cláusula WHERE y criterios de ordenamiento en la cláusula ORDER BY.

Cuando necesite definir una variable de sustitución que es usada varias veces en una misma sentencia sería conveniente definirla de tal forma que solicite este valor solo una vez, para que esto ocurra debe definirla con el operador &&

Adicionalmente también puede definir variables de sustitución con valores fijos, por medio de la sentencia DEFINE. Con DEFINE la variable definida tendrá vigencia durante el tiempo que el usuario tenga una sesión activa, para liberarla debe usar el operador UNDEFINE