Capítulo 2.
Recuperando Datos utilizando la sentencia SQL SELECT.
2.01. Lista de capacidades de la sentencia SQL SELECT.
2.02. Ejecutando un SELECT básico.
2.03. Dos minutos.
Este capítulo explora los conceptos de extracción o recuperación de datos en tablas relacionales utilizando la sentencia SELECT. La declaración se presenta en su forma básica y construyendo progresivamente hasta extender su funcionalidad. A medida que aprende las reglas que rigen la sentencia, un punto importante a recordar es que nunca una sentencia SQL altera la información almacenada en la Base de Datos. Proporciona un método de solo lectura para extraer información. Cuando haces una pregunta utilizando SQL SELECT, que están garantizados para extraer los resultados, incluso a partir de las preguntas difíciles.
Objetivo de Certificación 2.01
Lista de Capacidades de la sentencia SQL SELECT.
Saber cómo recuperar los datos en un formato utilizado un lenguaje de consulta es el primer paso hacia la compresión de las capacidades de la sentencia SELECT. Describir las relaciones involucradas ofrece un vinculo tangible entre la teoría de cómo se almacenan los datos en tablas y la visualización práctica de la estructura de estas tablas. Estos temas forman un importante precursor de la discusión de las capacidades de la sentencia SELECT. Las tres principales aéreas exploradas son las:
- Introducción a la sentencia SELECT.
- El comando DESCRIBE Table.
- Capacidades de la Sentencia SELECT.
Introducción a la Sentencia SQL SELECT.
La sentencia SELECT del Lenguaje de Consulta Estructurado (SQL) tiene que ser el único constructor nonspoken lenguaje. La sentencia SELECT es un mecanismo elegante, flexible, extensible y altamente creado para recuperar información desde una tabla de base de dato. Una base de datos serviría de poco si no se va a consultar para responder a todo tipo de preguntas interesantes. Por ejemplo, usted puede tener una base de datos que contiene datos personales de carácter financiero, como declaraciones bancarias, facturas de servicios y nominas. Desde aquí se puede pedir a la base de datos para obtener una lista actualizada ordenada de sus facturas de servicios eléctricos durante los últimos seis meses, o consultar su estado de cuenta bancaria para obtener una lista de los pagos efectuados a una cuenta determinada en el mismo período. La belleza de la instrucción SELECT se encapsula en sus simples ingles-como el formato que permite a preguntas que se harán de la base de datos de una manera natural.
Tablas, también conocidos como relaciones, consiste de filas de información divididas por las columnas. Consideremos dos de las tablas presentadas en el capitulo anterior: la tabla de EMPLOYEES y la tabla DEPARTAMENTS.
Este conjunto de datos de ejemplo se basa en Recursos Humanos (HR) de información para una organización ficticia. En la terminología Oracle, cada tabla pertenece a un esquema (owner): en este caso el esquema HR, la tabla empleados almacena filas o registros de información. Estos contienen varios atributos (columnas) que describen a cada empleado en esta organización. La tabla DEPARTMENTS contiene información descriptiva sobre cada departamento dentro de esta organización, almacena filas de datos divididas en columnas. Asumiendo una conexión a una base de datos que contiene el esquema de RH está disponible, luego utilizando SQL PLUS o SQL Developer puede establecer una sesión de usuario. Una vez conectado a la base de datos, usted ya está listo para iniciar su gira de SQL.
El comando DESCRIBE Table.
Obtener las respuestas que uno busca, hay que hacer las preguntas correctas. La comprensión de los términos de referencia, que en este caso, son tablas relacionadas, es esencial para la formulación de las preguntas correctas. Una descripción estructural de una tabla es útil para establecer que preguntas se puedan hacer en ella. El servidor Oracle almacena información sobre todas las tablas de un conjunto de tablas relacionales llamado diccionario de datos, con el fin de su gestión. El diccionario de datos es muy similar a un diccionario de lenguaje regular. Almacena definiciones de los objetos de base de datos es un formato centralizado, ordenado y estructurado.
Una clara distinción debe hacerse entre el almacenamiento de la definición y el contenido de una tabla. La definición de una tabla incluye información como el nombre de la tabla, propietario de la tabla, detalles acerca de las columnas que la componen. Y su tamaño de almacenamiento físico en disco. Esta información también se conoce como metadatos. El contenido de una tabla se almacena en filas y se conocen como de datos.
Los metadatos estructurales de una tabla se pueden obtener mediante la consulta de la base de datos para la lista de columnas que lo componen con el comando DESCRIBE. La forma general de la sintaxis de este comando es intuitiva:
DESC[RIBE] .tablename
Este comando será desempaquetado sistemáticamente. La palabra clave DESCRIBE puede ser reducido a DESC. Todas las tablas pertenecen a un esquema o propietario. Si usted está describiendo una tabla que pertenece al esquema al que se ha conectado, la parte del comando puede ser omitida. La figura 2-1 muestra como la tabla EMPLOYEES es descrita desde SQL PLUS después de conectarse a la Base de Datos como HR con el comando DESCRIBE EMPLOYEES y como la tabla DEPATAMENTS es descrita utilizando la notación corta DESC HR.DEPARTAMENTS. El HR prefijo se puede omitir ya que la tabla pertenece al esquema HR. El esquema HR (y todos los otros esquemas) tienen accesos a una tabla llamada DUAL, que petenece al esquema SYS, esta tabla puede ser estructuralmente descrita con el comando: DESCRIBE SYS.DUAL.
Las tablas que describen los rendimientos de los resultados interesantes y útiles. Usted sabe que las columnas de una tabla se pueden seleccionar porque sus nombres están expuestos. También conocemos la naturaleza de los datos contenidos de estas columnas ya que el tipo de columna se expone.
Los tipos de columnas son discutidos en el capítulo 11, para la actual discusión, es suficiente conocer las diferencias de los tipos de columnas.
Columnas numéricas a menudo son especificadas como NUMERIC(p,s), donde el primer parámetro es precisión y el segundo es la escala. En la figura 2-1, la columna SALARY de la tabla EMPLOYEES tiene un tipo de datos: NUMBER(8,2). Esto significa que los valores almacenados en esta columna pueden tener como máximo 8 dígitos. De estos 8 dígitos, 2 deben ser estar a la derecha del punto decimal. Un valor en SALARY de 999999.99 es aceptable, pero un valor en SALARY de 9999999.9 no lo es, a pesar que ambos tienen 8 dígitos.
VARCHAR2(length) tipo de columna de almacenamiento variable de datos alfanuméricos, donde la longitud determina el número máximo de caracteres que una columna puede contener. La columna FIRST_NAME de la tabla EMPLOYEES tiene el tipo de datos VARCHAR2(20), lo que significa que puede almacenar nombres de los empleados de hasta 20 caracteres.
Tenga en cuenta que si esta columna no contiene datos o su contenido es inferior a 20 caracteres, no necesariamente utilizara el mismo espacio que se utilizaría para almacenar un nombre de 20 caracteres de longitud.
El tipo de columna CHAR(size) especifica las columnas de longitud fija donde el espacio de la fila se reserva para contener un número fijo de caracteres sin importar su contenido. CHAR es mucho menos frecuente utilizado que VARCHAR2. A menos que la longitud de los datos es predecible y constante, el tipo de datos CHAR utiliza almacenamiento ineficiente, rellenando todos los componentes con espacios.
Columnas del tipo de datos DATE y TIMESTAMP almacenan Fechas e información de tiempo. DATE almacena un momento en el tiempo con precisión incluyendo day, month, year , hour, minutes y seconds. TIMESTAMP(f) almacena la misma información como DATE pero también es capaz de almacenas fracciones de segundos.
En el Trabajo.
Una variedad de tipos de datos están disponibles para uso como tipo de datos de columna. Muchos tiene un propósito especializado como Objetos Binarios Grandes (BLOBs), se utiliza para almacenar datos binarios como datos de música o video. La gran mayoría de las tablas, sin embargo, usan tipos de datos primitivos NUMBER, VARCHAR2, DATE. El tipo de dato TIMESTAMP ha sido ampliamente utilizado desde su introducción en Oracle 9i. Familiarizarse e interactuar con estos tipos de datos primitivos genérico que se prepara para hacer frente a una gama importante de consultas sobre bases de datos.
Columnas obligatoria, que se ven obligadas a almacenar datos de cada fila, están expuestos por la salida de la columna “Null?" del comando DESCRIBE tener el valor: NOT NULL. Se garantiza que cualquier de datos que está restringida por NOT NULL cuando la tabla es creada debe contener algunos datos. Es importante tener en cuenta que NULL tiene un significado especial para el servidor Oracle. NULL se refiere a la ausencia de datos. Los espacios en blanco no cuentan como NULL, ya que están presentes en la fila y tienen cierta longitud, aun que no son visibles.
La sentencia SQL SELECT se rige matemáticamente por estos tres principios. Una combinación ilimitada de proyecciones, selecciones y uniones proporciona el lenguaje para extraer los datos relacionales necesarios.
Examen
Los tres conceptos de proyección, selección y unión, que constituyen la base subyacente de las capacidades de la instrucción SELECT, se miden siempre en el examen, estos conceptos se pueden presentar en una lista de otros conceptos falsos y se le puede pedir para elegir la correcta de tres conceptos fundamentales. O bien, una lista de sentencias SQL se pueden presentar, y es posible que se le pidan que elija la declaración que muestra una o más de estos conceptos.
Objetivo de Certificación 2.02
Ejecutando una Instrucción SELECT básica.
Las capacidades prácticas de la instrucción SELECT se realizan en su ejecución. La clave para la ejecución de cualquier sentencia del lenguaje de consulta es una comprensión completa de su sintaxis y las reglas que rigen su uso. Este tema se discutió por primera vez. Es seguido por una discusión de la ejecución de una consulta básica antes de las expresiones y los operadores, lo que incrementa exponencialmente la utilidad de los datos almacenados en tablas relacionales, se introducen a continuación, el concepto de valor nulo (null) se desmitifica, ya que sus riesgos están expuestos. Estos temas se trataran en las siguientes cuatro secciones:
- Sintaxis de la instrucción SELECT primitiva.
- Las reglas a seguir.
- SQL Expresiones y Operadores.
- NULL es nada.
Sintaxis de la Instrucción SELECT primitiva.
En su forma más primitiva, la sentencia SELECT soporta la proyección de columnas y la creación de la aritmética, el carácter y expresiones de fecha. También facilita la eliminación de valores duplicados del conjunto de resultados. La sintaxis básica es la siguiente:
SELECT *|{[DISTINCT] column|expression [alias],…}
FROM table;
Las palabras claves o palabras reservadas de la sintaxis de la instrucción SELECT aparecen en mayúsculas. Al utilizar los comandos, sin embargo, el caso de las palabras reservadas en su sentencia de consulta, no importa. Las palabras reservadas no pueden ser utilizadas como nombres de columnas o otros nombres de objetos de la base de datos. SELECT, DISTINCT y FROM son tres palabras. La instrucción SELECT siempre se compone de dos o más clausulas.
Las dos clausulas son la clausula SELECT y la clausula FROM. La barra vertical es utilizado para denotar OR (o). Así que usted puede leer la primera forma de la instrucción SELECT anterior como:
SELECT *
FROM table;
En este formato, el símbolo asterisco (*) se utiliza para denotar todas las columnas. SELECT * es una manera de pedir al servidor Oracle para devolver todas las posibles columnas. Se utiliza como una abreviatura, símbolo de ahorro de tiempo en lugar de escribir SELECT column1, column1, column3, …, para seleccionar todas las columnas. La clausula FROM especifica que Tabla a consultar para recuperar las columnas solicitadas en la clausula SELECT.
Usted puede ejecutar el siguiente comando SQL para recuperar todas las columnas y todas las filas de la tabla REGIONS en el esquema HR.
SELECT * FROM REGIONS;
Como se muestra en la figura 2-2, cuando se ejecuta este comando en SQL PLUS, que regresa todas las filas de datos y todas las columnas que pertenecen a esta tabla. El uso del asterisco en la sentencia SELECT se refiere a veces como “ciego” porque las columnas exactas a extraer no se especifican.
La segunda forma de l instrucción SELECT básica tiene la misma clausula FROM como la primera forma, pero la clausula SELECT es diferente:
SELECT {[DISTINCT] column|expression [alias],…}
FROM table;
This SELECT clause can be simplified into two formats:
SELECT column1 (possibly other columns or expressions) [alias optional]
OR
SELECT DISTINCT column1 (possibly other columns or expressions) [alias
optional]
Un Alias es un nombre alternativo para hacer referencia a una columna o expresión. Los alias se utilizar típicamente para mostrar la salida de una manera fácil de usar. También sirve como una forma abreviada para referirse a las columnas o expresiones para reducir la escritura. Alias se discutirán en detalle más adelante en este capítulo. De forma explícita lista solo las columnas relevantes en su clausula SELECT, en efecto, proyectar el subconjunto exacto de los resultados que desee recuperar. La siguiente declaración regresara la columna REGION_NAME de la tabla REGIONS como se muestra en la figura 2-2.
SELECT REGION_NAME
FROM REGIONS;
Se le puede pedir para obtener todos los job roles en la organización que los employees han cumplido históricamente. Para ello se puede ejecutar el comando: SELECT * FROM JOB_HISTORY, sin embargo, en suma, la construcción SELECT * regresa las columnas EMPLOYEE_ID, START_DATE y END_DATE. Los que contengan solo JOB_ID y DEPARTMENT_ID pueden ser obtenidas con la siguiente declaración ejecutada en SQL PLUS como se muestra en la figura 2-3.
Usar la palabra DISTINCT permite que las filas duplicadas se eliminen del conjunto de resultados. En numerosas situaciones un conjunto único de filas son requeridad. Es importante señalar que el criterio empleado por el Servidor Oracle para determinar una,
Fila es única o distinto depende totalmente de lo que se especifica después de la palabra clave DISTINCT en la clausula SELECT. Selección de diferentes valores JOB_ID de la tabla JOB_HISTORY devuelve los ocho distintos tipos de trabajo como se muestra en la figura 2-4
Compare esta salida Figura 2-3, donde 10 filas son regresadas. Puede ver que hay dos ocurrencias de los valores AC_ACCOUNT y ST_CLERK en JOB_ID? Estas son dos filas duplicadas que ha sido eliminada mediante la búsqueda con distinct JOB_ID. Selección en la columna distinct DEPARTAMENT_ID de la tabla JOB_HISTORY regresa solo 6 filas, como se muestra en le figura 2-5. Valores de DEPARTMENT 50, 80, 90 y 110 cada una se produce dos veces en la tabla JOB_HISTORY y por lo tanto cuatro filas se han eliminado mediante distinct a los valores de DEPARTMENT_ID.
Una importante característica de la palabra clave DISTINCT es la eliminación de valores duplicados de combinaciones de columnas. Hay diez filas en la Tabla JOB_HISTORY. Ocho filas contienen distinct JOB_ID. Seis filas contienen distintos valores en DEPARTMENT_ID. ¿Puedes adivinar cuántas filas contienen distintas combinaciones de valores JOB_ID y DEPARTMENT_ID? Como muestra la Figura 2.6 revela, hay nueve filas devueltas en el conjunto de resultados que contienen diferentes combinaciones de JOB_ID y DEPARTMENT_ID, con una fila de la Figura 3.2 de haber sido eliminado. Esto es, por supuesto, la fila que contiene un valor de JOB_ID ST_CLERK y un valor de 50 DEPARTMENT_ID.
Capacidades de la Sentencia SELECT
Todas las Bases de Datos relacionales se basan en una solida base matemática llamada, La Teoría Relacional. En esta teoría, las relaciones, o tablas son operados por un lenguaje llamado algebra relacional. SQL es una interpretación comercial de las construcciones de algebra relacional. Tres conceptos de la teoría relacional abarcan la capacidad de la instrucción SELECT: Proyección, selección y unión.
Proyección se refiere a la restricción de atributos (columnas) seleccionados de una relación o tabla. Cuando solicita información de una tabla, usted puede pedir ver todas las columnas. Por ejemplo, en la tabla HR.DEPARTMENT, puede recuperar todas las filas y todas las columnas con un simple SELECT. Esta consulta regresará DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, y LOCATION_ID información para cada registro almacenado en la tabla. Y si quisiera una lista que solo contenga A DEPARTMENT_NAME y MANAGER_ID? Bien, podría pedir solo esas dos columnas de la tabla. Esta restricción de columnas es llamada proyección.
La selección se refiere a la restricción de las tuplas o filas seleccionados de una relación (tabla). A menudo no es deseable recuperar todas las filas de una tabla. Las tablas pueden contener muchas filas y, en lugar de preguntar por todas ellas, la selección es un medio para restringir las filas regresadas. Tal vez se le ha pedido a identificar solo a los empleados que pertenecen al departamento 30. Con la selección es posible limitar el conjunto de resultados a las filas de datos que tienen un valor de 30 en DEPARTMENT_ID.
Unión, como un concepto relacional, se refiere a la interacción de las tablas entre si en una consulta, la tercera forma normal, como se explica en el capítulo 1, presentó el concepto de separar los distintos tipos de datos en las tablas autónomas para evitar la duplicación y las anomalías de mantenimiento y para asociar datos relacionados con las relaciones de clave primaria y foránea. Estas relaciones proporcionan el mecanismo para unir tablas entre sí. Unirse se trata ampliamente en Capítulo7.
Suponga que hay una necesidad de obtener las direcciones e-mail para todos los empleados que trabajan en el Departamento de Ventas. La columna e-mail pertenece a la tabla EMPLOYEES, mientras la columna DEPARTMENT_NAME pertenece a la tabla DEPARTMENTS.
Proyección y Selección de la tabla DEPARTMENTS puede ser utilizada para obtener el valor DEPARTMENT_ID que corresponde al Departamento de Ventas. Las filas coincidentes en la tabla EMPLOYEES pueden ser combinadas con la tabla DEPARTMENT basados en el valor DEPARTMENT_ID común. La columna email entonces puede ser proyectada de este conjunto de resultados.
En el Trabajo.
La capacidad de proyectar columnas determinadas de una tabla es muy útil. Junto con la capacidad de eliminar valores duplicados o combinación de valores le da el poder para ayudar con los requisitos básicos de información del usuario. En muchas aplicaciones de bases de datos, la tablas a veces pueden almacenar los datos duplicados. Informar al usuario final con frecuencia requiere que estos datos se presentan como un conjunto manejable de registros únicos. Esto es algo que ahora tienen la capacidad de hacer. Tenga cuidado, sin embargo, cuando el uso de consultas ciega para seleccionar los datos de las tablas de gran tamaño. La ejecución de un SELECT * FROM HUGE_TABLE; declaración puede causar problemas de rendimiento si la tabla contiene millones de filas de datos.
Las Reglas deberán ser seguidas.
SQL es un lenguaje bastante estricta en términos de las reglas de sintaxis, pero sigue siendo simple y lo suficientemente flexible como para soportar una variedad de estilos de programación. En esta sección se analizan algunas de las normas básicas que rigen las sentencias SQL.
Mayúsculas o Minúsculas.
Se trata de una cuestión de gusto personal sobre el caso en que las sentencias SQL se envían a la base de datos. Los ejemplos utilizados hasta ahora han sido escritos en mayúsculas. Muchos desarrolladores, incluyendo el autor de este libro, prefieren escribir sus declaraciones SQL en minúsculas. También hay una idea errónea de que las palabras reservadas de SQL deben ser especificados en mayúsculas. De nuevo, esto depende de usted. La adhesión a un formato coherente y uniforme se recomienda. Los siguientes tres afirmaciones son sintácticamente equivalentes:
SELECT * FROM LOCATIONS;
Select * from locations;
select * from locations;
Hay una advertencia en relación con mayúsculas y minúsculas. Al interactuar con los valores literales, el caso importa, cuando interactúa con valores literales, el caso importa. Considere la columna JOB_ID de la tabla JOB_HISTORY. Esta columna contiene filas de datos que resulten ser almacenados en la Base de Datos en mayúsculas; por ejemplo, SA_REP y ST_CLERK. Al solicitar que el conjunto de resultados se limita por una columna literal, el caso es crítico. El servidor Oracle trata la solicitud para todas las filas en la tabla JOB_HISTORY que contienen un valor de St_Clerk en la columna JOB_ID diferentes a la solicitud de todas las filas que tiene un valor de ST_CLERK en la columna JOB_ID. Metadatos sobre objetos de base de datos se almacenan por defecto en mayúsculas en el diccionario de datos. Si consulta una tabla de diccionario de datos para obtener una lista de tablas propiedad del esquema de HR, es probable que los nombres de tabla sean almacenados en mayúsculas. Esto no significa que las tablas no se pueden crear con un nombre en minúsculas, puede ser. Simplemente es más común y el comportamiento predeterminado del servidor Oracle para crear
Y almacenar tablas, columnas y otros objetos de base de datos metadatos en mayúsculas en el diccionario de base de datos.
Examen
Las sentencias SQL pueden ser enviados a la base de datos en minúsculas o mayúsculas. Debe prestar especial atención al caso de la hora de interactuar con los datos de carácter literal y alias. Pedir una columna llamada JOB_ID o job_id devuelve la misma columna, pero pedir filas donde el JOB_ID es PRESIDENT es diferente de pedir las filas donde el valor JOB_ID es PRESIDENT. Datos de caracteres literales debe ser tratado de unas maneras mayúsculas y minúsculas.
Terminadores de Declaraciones.
Punto y coma se utilizan generalmente como terminadores de declaraciones SQL. SQL PLUS siempre requiere un terminador de declaración y generalmente es un punto y como. Una sola sentencia de SQL o incluso grupos de sentencias asociadas a menudo se guarda como archivos scripts para uso futuro. Las declaraciones individuales en SQL suelen ser separadas por un Enter y una barra en la siguiente línea, en lugar de punto y coma. Usted puede crear una sentencia SQL, y terminarla con un corte de línea (line break), incluir la barra inclinada para ejecutar la sentencia y guardarlo en un archivo script. Archivos scripts se pueden llamar desde sql plus. Tenga en cuente que SQL Developer no requiere de un terminador de sentencia, si una sola sentencia esta presente, pero no se oponga, si se usa una. Es una buena práctica para terminar siempre sus estados de SQL con un punto y coma. Varios ejemplos de declaraciones de SQL * Además las siguientes:
select country_name, country_id, location_id from countries;
select city, location_id,
state_province, country_id
from locations
/
El primer ejemplo del código demuestra dos importantes reglas, la declaración es terminada por puntos y comas, segundo, toda la sentencia es escrita en una sola línea. Es totalmente aceptable para una sentencia SQL o cualquier escrito en una sola línea o varias líneas, siempre y cuando no hay palabras cortadas entre líneas. El segundo ejemplo demuestra código de una declaración que se extiende por tres líneas que se termina con una nueva línea y se ejecuta con una barra inclinada.
Identación, Legibilidad y Buenas Prácticas.
Considere la siguiente consulta:
select city, location_id,
state_province, country_id
from locations
/
Este ejemplo pone de relieve los beneficios de la identación para sus declaraciones SQL para mejorar la legibilidad de su código. El Servidor Oracle no tiene objeciones si una línea completa es escrita en una línea sin identación. Es buena práctica de separar las distintas clausulas de la instrucción SELECT en las diferentes líneas. Cuando una expresión en una clausula es particularmente compleja, a menudo es mejor separar el termino de la declaración en una nueva línea. En el desarrollo de SQL para satisfacer sus necesidades de información, el proceso suele ser iterativo. El intérprete de SQL es mucho más útil durante el desarrollo de expresiones complejas, si están aisladas en líneas separadas, ya que los errores suelen ser lanzados en el formato “Error en la línea X” Esto hace que el proceso de depuración mucho más simple.
Examen.
Una técnica común empleada por los diseñadores del examen es preguntar los detalles. Una sola marca de falta de puntuación como punto y coma puede hacer la diferencia entre una respuesta correcta y una incorrecta. Las faltas de ortografía de los nombres de los objetos debe poner atención. Es posible que se le pida que elija el comando correcto que consulta la tabla REGIONES. Una de las opciones puede parecer correcta, pero hace referencia a la tabla REGION. Esta falta de ortografía puede llevar a una declaración incorrecta de ser elegido.
Escenarios y Soluciones
Desea construir y ejecutar consultas contra Tablas almacenadas en la Base de Datos Oracle. ¿Está limitado a utilizar SQL PLUS o SQL DEVELOPER? No, Oracle ofrece SQL PLUS y SQL DEVELOPER como herramientas gratuitas para crear y ejecutar consultas. Hay numerosas herramientas disponibles de Oracle (por ejemplo, Discoverer, Forms, y JDeveloper) y otros proveedores de thirdparty que proporcionan una interfaz para las tablas almacenadas en una base de datos Oracle.
Para explorar su entorno de base de datos, le gustaría un listado de sus tablas, propiedad de su esquema actual, para realizar consultas. ¿Cómo interrogar el diccionario de la base de datos para proporcionar estos metadatos? El diccionario de datos es un conjunto de tablas y vistas de las otras Tablas que se pueden consultar a través de SQL. La declaración SELECT TABLE_NAME de USER_TABLES, consulta el diccionario de la base de una lista de nombres de tablas que pertenecen al usuario actual.
Cuando consulta la tabla JOBS por cada fila que contiene solo las columnas JOB_ID y MAX_SALARY, es una proyección, selección o unir para llevarlo a cabo? Una proyección es desarrollada desde las columnas en la tabla JOBS se han limitado a las columnas JOB_ID y MAX_SALARY.
Expresiones SQL y Operadores.
La forma general de la instrucción SELECT introdujo la noción de que las columnas y expresiones son seleccionables. Una expresión se compone generalmente de una operación que se realiza de uno o más valores de columna. Los operadores que pueden actuar sobre los valores de columna para formar una expresión dependen del tipo de datos de la columna. Son los cuatro operadores cardinales de aritmética (suma, resta, multiplicación y división) para columnas numéricas; el operador de concatenación para carácter o strings; y el de suma y resta pata columnas fecha y timestamp. Al igual que en aritmética regular, hay un orden predefinido de evaluación (prioridad de operadores) cuando más de un operador en una expresión. Entre paréntesis tienen la prioridad más alta. Las operaciones de División y Multiplicación son los siguientes en la jerarquía y se evalúan antes que la suma y la resta que tiene menos prioridad. Estos niveles de prioridad se muestran en la tabla 2-1.
Operaciones con el mismo nivel de prioridad se evalúan de izquierda a derecha. Entre paréntesis por lo tanto, se puede utilizar para hacer cumplir la procedencia de operadores no predeterminado. Utilizando paréntesis generosamente en la construcción de expresiones complejas es una buena práctica. Se lleva a un código legible que es menos propenso a errores. Expresiones abrir un gran número de útiles posibilidades de manipulación de datos.
Operadores Aritméticos.
Consideremos el ejemplo de la tabla JOB_HISTORY, que almacena fecha de inicio y fecha final del plazo de un empleado en un puesto de trabajo anterior. Puede ser útil para propósitos de impuestos o pensiones, por ejemplo, calcular el tiempo que un empleado trabaja en ese puesto. Esta información se puede obtener utilizando una expresión aritmética. Hay algunos elementos interesantes tanto de la sentencia SQL y los resultados devueltos por la figura 2.7 que merecen la discusión.
Cinco elementos que se hayan especificado en la clausula SELECT. Las primeras cuatro son columnas de la tabla JOB_HISTORY: EMPLOYEE_ID, JOB_ID, START_DATE y END_DATE. Los dos últimos términos que proporciona la fuente de información requiere el cálculo de el número de días que un empleado llena la posición particular. Considere Employee número 176 en la novena fila de la salida. Este empleado comenzó como Sales, Manager en Enero 1, 1999 y finalizó el empleo el 31 de diciembre de 1999. Por lo tanto, este empleado trabajó durante exactamente un año, lo que, en 1999, constaba de 365 días.
El número de días para que empleo un empleado puede ser calculador utilizando el quinto elemento en la clausula SELECT, que es una expresión. Esta expresión demuestra que la aritmética acabo en columnas que contienen información actualizada devuelve valores numéricos que representan un determinado número de días.
Para hacer cumplir la precedencia de operadores de la operación de resta, la subexpresion end_date-start_date está encerrado con paréntesis. Un día fue añadido para compensar la pérdida de un día derivado de la operación de resta. Supongamos que un empleado comenzó a trabajar el 1 de enero y salir ese mismo día. Un día, se debe agregar a la fórmula, de lo contrario la sub-expresión fecha_final-fecha_inicial incorrectamente retorno cero días trabajados.
Una formula hipotética para predecir la probabilidad de una lluvia de meteoros en una región geográfica particular, ha sido concebido. Las dos expresiones que figuran en la figura 2-8 son idénticas excepto por la lluvia de meteoros probabilidad % expresión. Sin embargo, como los resultados en la siguiente tabla demuestran, un cálculo diferente se está haciendo en cada expresión. Tengan en cuenta que las dos expresiones difieren muy poco. Expresión 2 tiene un par de paréntesis al final, cerrando (10-5). Considere como las expresiones son evaluadas para la región de Asia donde la región es 3 como se muestra en la siguiente tabla.
Paso Expresión 1 Expresión 2
1 Región_id * 100/5 + 20/10 - 5 Región_id * 100/5 * 20 / (10-5)
2 Sustituir región_id con valor:
3*100/5+20/10-5 Sustituir región_id con valor:
3 * 100 / 5 + 20 / (10-5)
3 Los operadores con mayor prioridad son las dos divisiones y una multiplicación. Estos deben ser evaluados primeramente. Si más de un operador con el mismo nivel de procedencia están presente en una expresión, estos deben ser evaluados de izquierda a derecha. Por lo tanto, la primera subexpresion que debe ser evaluada es: 3*100:
300 / 5 + 20 / 10 - 5 El operador con mayor prioridad es el par de paréntesis y estos deben ser evaluados primeramente. Por lo tanto la primera sub expresión a ser evaluada es (10 - 5):
3*100/5+20/5
4 La siguiente sub expresión a ser evaluada es: 300/5:
60+20/10-5 Los operadores siguientes en la expresión con la prioridad de más alta procedencia son los de división y multiplicación. Si más de un operador con el mismo nivel de prioridad está presente en una expresión, entonces serán evaluados de izquierda a derecha, por lo tanto, la siguiente sub expresión a evaluarse es: 3 * 100:
300/5 + 20/5
5 La siguiente sub expresión a ser evaluada es: 20/10:
60 + 2 -5 La siguiente sub expresión a ser evaluada es: 300 / 5:
60 * 20 / 5
6 Los operadores aun son una adición y la substracción que comparten el mismo nivel de procedencia. Por lo tanto la evaluación será de izquierda a derecha. La siguiente sub expresión a evaluar es: 60 + 2:
62 – 5 = 57 La siguiente sub expresión a ser evaluada es: 20 / 5:
60 + 4 = 64
En el Trabajo.
Expresiones ofrece un sinfín de posibilidades y son una de las construcciones fundamentales en los SELECT. A medida que la práctica de SQL en su entorno de base de datos, usted puede encontrar dos infames errores de Orcle : “ORA-00923”: FROM keyword where expected y “ORA-00942” table or view not exist. Estas son indicativas de errores de ortografía o puntuación, tales como falta de comillas encerrando caracteres literales. No se perturbe por estos mensajes. Recuerde, no puede causar daño a la base de datos si todo lo que estamos haciendo es seleccionar los datos. Se trata de una operación de sólo lectura y lo peor que puede lo que es ejecutar una consulta nonperformant.
Expresiones y Alias de Columna.
La figura 2-7 introduce un nuevo concepto llamado alias de columna. Note como la columna de expresión tiene un encabezado llamada Days Employed. Este encabezado es un alias. Un Alias es un nombre alternativo para una columna o una expresión. Si esta expresión no ha hecho uso de un Alias, el encabezado de la columna sería: (END_DATE – START_DATE) + 1, que es no atractivo y no muy descriptivo. Los alias son especialmente útiles con las expresiones o cálculos y puede ser implementado en varias formas. Hay algunas pocas reglas que rigen el uso de alias de columna en la declaración SELECT. En la figura 2-7, el Alias dado para la expresión calculada llamada “Days Employed” se ha especificado dejando un espacio e ingresar el alias en comillas dobles. Estas comillas son necesarias por dos razones. Primero, este alias se compone de más de una palabra reservada. Segundo, preservación de un alias es posible si el alias es encerrado en doble comillas, como muestra la Figura 2.9 un “ORA-00923”: FROM palabra clave no se encuentra donde esperaba se devuelve un error cuando un alias multipalabra no es doble comilla.
Error ORA-00923 no se genera aleatoriamente por el servidor. El intérprete de Oracle intenta procesar la declaración y encuentra un problema. Como el procesamiento de esta declaración en particular, que encuentra un problema con la línea 2. Un símbolo de asterisco se inserta en el punto del problema. La palabra empleada. Line 2 was processed and the expression was aliased with the word Days. El espacio después de días indica que el interprete de Oracle, dado que no hay ninguna coma adicional para indicar otro término que pertenezca a la clausula SELECT, es completo. Por lo tanto, espera encontrar la clausula FROM. En su lugar encuentra la palabra Employed y campos de este error. Mensajes de error del Servidor Oracle son informativos y los deberían leer cuidadosamente para resolver los problemas. Este error se evita encerrando un alias que contiene un espacio u otros caracteres especiales, tales como # and $ en dobles comillas, como se muestra en los alias de “Days Employed” en la figura 2-7.
El segundo ejemplo en la figura 2-9 ilustra otra característica importante de los alias de columna. Las comillas dobles se han vuelto a prescindir de un carácter de subrayado y es sustituto por el espacio entre las palabras para evitar un error. El intérprete de Oracle procesa la instrucción, no encuentra problemas y la ejecuta. Tenga en cuenta que aunque el alias se especifica como Date_Employed, con solo las letras de titulo del alias de ser capitalizados, la expresión encabezado se devuelve como DATE_EMPLOYED: todas las letras fueron automáticamente convertidas a mayúsculas. Por lo tanto, para preservar el caso del alias, deben escribirse encerradas entre comillas.
Los alias registrados hasta el momento han sido especificados mediante un espacio después de una columna o una expresión y la inserción de los alias. SQL ofrece más formas formalizadas de la inserción de los alias. La palabra AS es insertada entre la columna o expresión y el alias. La Figura 2-10 ilustra el uso de los diferentes tipos de alias de columnas. Tanto las columnas EMPLOYEE_Id y JOB_ID son alias utilizando la palabra clave AS. La palabra clave AS es opcional ya que también es posible utilizar un espacio antes de especificar un alias, como se explico anteriormente. El uso de la palabra clave AS, sin embargo, mejora la legibilidad de las declaraciones SQL, y los autores creen que es un buen hábito de codificación SQL a formar.
Caracteres y el Operador de Concatenación de Cadenas.
Los símbolos de doble pipe || representa el carácter de concatenación. Este operador es utilizado para unir expresiones de caracteres o columnas para crear una expresión de caracteres grande. Columnas de una tabla puede estar relacionado con cada uno o de otras cadenas o de otros literales para crear una expresión de caracteres resultante.
La figura 2-8 muestra que el operador de concatenación es lo suficientemente flexible para ser usado varias veces y casi en cualquier lugar de una expresión de caracteres. Aquí, el carácter literal “The” se concatena con los datos contenidos de la columna REGION_NAME. Esta nueva cadena de caracteres posteriormente es concatenado con la cadena literal “región i son Planet Earth” y el total de la expresión es un alias con el nombre de “Planetary Location”. Observe ahora como cada fila del conjunto de resultado es construido por la aplicación sistemática de la expresión para cada valor de las filas de la tabla.
Considere la primera fila de datos de la columna expresión “Planetary Location”. Regresa “The Europe región i son Planeth Earht”. Una sentencia legible para las filas de datos ha sido creada mediante la concatenación de cadenas literales, de caracteres y espacios a ambos lados para cada fila de la columna REGION_NAME. La columna REGION_ID ha sido aliased para mostrar que las columnas regulares, así como las expresiones pueden ser aliased, encabezado de columnas se muestran de forma predeterminada en mayúsculas pero se pueden anular mediante un alias como “Region Id.”. Los tipos de datos de las columna que son consultados determina como SQL PLUS y SQL Developer presentara sus salidas de datos por defecto. Si el tipo de datos es numérico entonces los datos de la columna es formateado alineado a la derecha. Si los datos es de tipo carácter o fecha, entonces los datos de la columna es alineado a la izquierda.
Literales y la Tabla Dual.
Los valores Literales en expresiones son una ocurrencia común. Estos valores se refieren a numéricos, carácter, fecha y hora en la clausula SELECT que no proceden de ningún objeto de base de datos. La concatenación de caracteres literales de la columna de datos puede ser útil, como se presenta en la figura 2-8.
Qué pasa con el procesamiento de literales que no tiene nada que ver con la columna de datos existentes? Para garantizar la consistencia relacional, Oracle ofrece una solución inteligente al problema de la utilización de la base de datos para evaluar expresiones que no tienen nada que ver con las tablas o columna. Para obtener la base de datos para evaluar una expresión, una instrucción SELECT sintácticamente legal debe ser presentada. Qué pasa si usted quería saber la suma de dos números o dos literales numéricos? Estas preguntas solo se pueden responder mediante la interacción con la base de datos de una manera relacional, Oracle resuelve el problema de la interacción relacional con la operación de la base de datos sobre expresiones literales ofreciendo una tabla especial llamada DUAL. Recordemos la tabla DUAL descrita en la figura 2-1. Contiene una columna llamada DUMMY de tipo de datos carácter. Usted puede consultar: SELECT * FROM DUAL, y los datos “X” se devuelve como el contenido de la columna ficticia. La tabla DUAL permite expresiones literales para ser seleccionados a partir para su procesamiento y devuelve los resultados de una expresión en su fila. Es extraordinariamente útil ya que permite una gran variedad de diferentes solicitudes de procesamiento a ser hechos en la base de datos. Es posible que desee saber cuantos segundos hay en un año. La figura 2-11 demuestra una expresión aritmética ejecutada contra la tabla dual. Prueb expresiones complejas durante el desarrollo, mediante la consulta de la tabla dual, es un método efectivo para evaluar si estas expresiones trabajan correctamente. Expresiones literales pueden ser consultadas desde cualquier tabla, pero recuerde que la expresión será procesada para cada registro de la tabla.
select 'literal'||'processing using the REGIONS table'
from regions;
La declaración anterior regresa cuatro líneas en el conjunto de resultados, ya que hay cuatro filas de datos en la tabla REGIONS.
Dos Comillas Simples o el Operador Comilla alternativo.
La concatenación de cadenas de caracteres literales hasta ahora han sido palabras en singular y añadidas a las expresiones de la columna. Estos caracteres literales se especifican con comillas simples. Por ejemplo:
select 'I am a character literal string'
Qué pasa con caracteres literales que contienen comillas simples? Plurales plantea un problema particular para el procesamiento de literales. Considere la siguiente declaración:
select 'Plural's have one quote too many' from dual;
como el ejemplo en la figura 2-12 muestra, la ejecución de esta instrucción causa un error “ORA-00923” se produce. Puede parecer un error extraño, pero un examen más detenido, el interprete de Oracle procesa con éxito la sentencia SELECT hasta la posición 16, momento en el que espera una clausula FROM. Posición 1 a la posición 16 es:
select 'Plural's
El proceso del servidor Oracle de este segmento en el sentido que el carácter literal Plural es el alias como columna s. en este punto. El interprete espera FROM, pero encuentra la palabra “have” esto genera un error.
Entonces, como son las palabras que contienen comillas simples tratados? Fundamentalmente, hay dos mecanismos disponibles. El más popular es añadir una marca adicional comilla simple a cada comilla natural único en la cadena de caracteres. La figura 2-13 demuestra como el error anterior se evita mediante la sustitución de un carácter literal ‘plural´s con el literal ‘Plural”s.
El segundo ejemplo en la figura 2-13 muestra que el uso de dos comillas simples para manejar cada ocurrencia natural de comilla simple en un carácter literal puede llegar a ser desordenado y propenso a errores. Como afecta el numero de literales afectados. Oracle ofrece una clara forma de lidiar con este tipo de carácter literal en la forma del operador alternativo (q).
Tenga en cuenta que el problema es que Oracle eligió el carácter comilla simple como el par de símbolo que encierra o envuelve a cualquier carácter literal. Estos caracteres encierran símbolos podría haber sido otra cosa que comillas simples. Teniendo en mente, considere el operador alternativo quote (q). El operador q le permite elegir entre un conjunto de posibles pares de envolver los símbolos de caracteres literales como alternativas a los símbolos de comilla simples. Las opciones son los de un solo byte:
O el carácter multibyte o los cuatro brackets (soporte): (entre paréntesis – round brackets), {llaves – curly braces}, [corchetes – square brackets] o . Usando el operador q, el carácter delimitador puede ser efectivamente se puede cambiar de una comilla simple a cualquier otro carácter, como se muestra en la figura 2-14.
La sintaxis del operador comilla alternativa es la siguiente: q ‘delimiter’ carácter literal que puede incluir el delimitador comillas simples’ donde el delimitador puede ser cualquier carácter o bracket. Los primeros y segundos ejemplos en la figura 2-14 muestra el uso del Angulo y square brackets como caracteres delimitadores, mientras en el tercer ejemplo demuestra como una mayúsculas “X” se ha utilizado como el carácter especial símbolo delimitador a través del operador comilla alternativa.
Null es Nada.
El concepto de valor Null se introdujo en la discusión anterior del comando DESCRIBE. Tanto el número cero y el espacio en blanco son diferentes a null ya que ocupan espacio. Null se refiere a la ausencia de datos. Una fila que contiene un valor null carece de datos de esa columna. Null se define formalmente como un valor que no está disponible, sin asignar, lo desconocido, o inaplicables. En otras palabras, las reglas de compromiso con los valores nulos necesidad de un examen cuidadoso. La falta de atención el tratamiento especial que requieren los valores nulos es casi seguro que conducir a un error, o peor aún, una respuesta incorrecta.
Los valores nulos puede ser un concepto difícil de llegar a controlar. El problema se deriva de la ausencia de null en una recta numérica. No es un valor real y tangible que se puede relacionar con el mundo físico. Null es un marcador de posición en una columna no obligatoria hasta algunos datos reales se almacena en su lugar. Hasta entonces, tenga cuidado con la realización de operaciones aritméticas con las columnas nulas.
Esta sección se centra en la interacción con datos de la columna nulos con la instrucción SELECT y su impacto en las expresiones.
Dentro del Examen.
Hay dos objetivos de la certificación en este capítulo. Las capacidades de la instrucción SELECT introducir los tres conceptos teóricos fundamentales de la proyección, selección y unión. Ejemplos prácticos que ilustran la selección incluyen la construcción de la cláusula SELECT y el uso de la palabra clave DISTINCT para limitar las filas devueltas. Proyección se demuestra en los ejemplos donde las columnas y expresiones están restringidas para su recuperación. El segundo objetivo de la ejecución de una sentencia SQL mide la comprensión de la forma básica de la instrucción SELECT. El examen mide dos aspectos. En primer lugar, la sintaxis se mide: se le requiere para detectar errores de sintaxis. Los errores de sintaxis SQL se produce cuando el intérprete de Oracle no entiende una declaración. Estos errores podrían adoptar la forma de falta de terminaciones, como un punto y coma, no encierra caracteres literales en apropiados operadores quote comilla, o declaraciones que hagan uso de palabras reservadas no válida. En segundo lugar, el significado de una sentencia se mide. Se le presentará una declaración sintácticamente legítimo y le pide que elija entre las descripciones exactas e inexactas de esa declaración. El examen mide el conocimiento en torno a los objetivos de certificación con varias preguntas de opción. Su comprensión de alias de columna, operadores aritméticos y de concatenación, citando carácter literal, el operador comilla alternativa, la sintaxis SQL, y los tipos básicos de columna de datos se pondrá a prueba.
Not Null y Nullable Columns
Las tablas almacenan filas de datos que se dividen en una o más columnas. Estas columnas tienen nombres y tipos de datos asociados con ellos. Algunos de ellos se ven limitados por las reglas de base de datos a las columnas obligatorias. Es obligatorio para algunos datos que se almacenan en las columnas NOT NULL en cada fila. Cuando las columnas de una tabla, sin embargo, no están obligados por las limitaciones de la base de datos para almacenar los datos de una fila, estas columnas se corre el riesgo de estar vacío.
En la figura 2-15. La tabla EMPLOYEES se describe, y unas cuantas columnas se seleccionan de la misma forma. Hay cinco columnas NOT NULL y seis columnas NULLABLE. Nullable es un término usado a veces para describir una columna que se puede almacenar valores nulos. Una de las columnas nullable es la columna COMMISSION_PCT.
La figura 2-15 muestras las primeras dos filas de los datos de la tabla EMPLOYEES. Esto es suficiente para ilustrar que estos dos registros de Employee tienen valores nulos en sus columnas COMMISSION_PCT.
SQL DEveloper simplifica para observar los valores nulos en las columnas, como se muestran en la figura 2-16. Aquí, la palabra (null) se emite cuando un valor null es encontrado, como con la columna COMMISSION_PCT. Sql Developer soporta personalización de esta descripción de valor nulo.
La columna de alias como “Null Arithmetic” es una expresión construida de COMMISSION_PCT + EMPLOYEE_ID + 10. En lugar de devolver un valor numérico, esta columna regresa NULL.
Hay una importante razón para esto: Cualquier cálculo aritmético con un Valor Null regresa siempre Null.
Oracle ofrece un mecanismo para interactuar aritméticamente con valores NULL mediante las funciones generales en el capítulo 5. Como la expresión de columna alias de "División por Null", ilustra, aunque la división por un valor nulo en los resultados nulos, a diferencia de la división por cero, lo que resulta en un error. Por último, observe el impacto de la palabra clave null cuando se utiliza con el operador de concatenación de caracteres. Null es concatenada entre las columnas FIRST_NAME y APELLIDOS, sin embargo, no tiene ningún impacto. Los operadores de concatenación de caracteres ignorar nula, mientras que las operaciones aritméticas que implican valores null siempre se traduce en nula.
Foreign Keys y Nullable Columns.
Diseño de modelo de datos a veces lleva a situaciones problemáticas cuando las tablas se relacionan entre sí a través de una relación de clave principal y externa, pero la columna que la clave externa se basa en es nullable.
La tabla DEPARTMENTS tiene, como llave primaria, la columna DEPARTMENT_ID. La tabla EMPLOYEES tiene una columna DEPARTMENT_ID que se ve limitada por su relación de clave externa de la columna DEPARTMENT_ID de la tabla DEPARTMENTS. Esto significa que no hay registro en la tabla EMPLOYEES que se les permita tener en su columna DEPARTMENT_ID que no esté en la tabla DEPARTMENTS. Esta integridad referencial es la base de la tercera forma normal y es fundamental para la integridad de la base de datos general.
Pero ¿qué pasa con los valores NULL? ¿Puede la columna DEPARTMENT_ID en la tabla de departamentos se tener nulos? La respuesta es no. Oracle insiste en que cualquier columna que es la clave principal está implícitamente obligado a ser obligatoria. Pero ¿qué pasa con las restricciones implícitas en las columnas de clave? Este es un dilema para Oracle, pero que pasa con constraint implícitos sobre columnas foreign key. Esto es un dilema para Oracle, ya que para ser flexibles y atender a la mayor audiencia, no se puede insistir en que las columnas relacionadas a través de restricciones de integridad referencial debe ser obligatoria. Además, no todas las situaciones de demanda de esta funcionalidad.ID en la tabla EMPLOYEES es actualmente nullable. Por lo tanto, existe el riesgo de que existen registros con valores nulos DEPARTMENT_ID presente en esta tabla. De hecho, hay registros en la tabla EMPLEADOS. El modelo de datos de recursos humanos permite a los empleados, correctamente o no, no pertenecer a ningún departamento. Al realizar combinaciones entre las tablas relacionales, es muy posible que se pierda o excluir ciertos registros que contienen valores nulos en la columna de combinación. El capítulo 7 explora maneras de lidiar con este desafío.
Escenarios y Soluciones
Usted está construyendo una expresión aritmética que calcula la base imponible en base al salario de un empleado y columnas COMMISSION_PCT, los cuales se puede nullable. ¿Es posible convertir los valores nulos en cualquiera de las columnas a cero para volver siempre una renta imponible numérico?. Sí, pero no con la información que hemos cubierto hasta ahora. Los valores nulos requieren un manejo especial. En el capítulo 5, se discute la función NVL, que proporciona un mecanismo para convertir los valores nulos en la más amigable aritmética los valores de los datos.
Un alias proporciona un mecanismo para cambiar el nombre de una columna o una expresión. ¿Bajo qué condiciones debe incluir un alias entre comillas? Si un alias contiene más de una palabra o si se trata de un alias debe ser preservado, entonces debe estar encerrado entre comillas dobles. La falta de doble comillas de un alias multiworded generará un error de Oracle. La falta de doble comillas de un alias de una sola palabra se traducirá en el alias de ser devuelto en mayúsculas.
Cuando se trabaja con valores de caracteres literales que incluyen entre comillas simples, ¿cómo se especifican estos literales en la cláusula SELECT sin provocar un error? Hay dos mecanismos. El enfoque más común consiste en reemplazar cada cita natural único, con dos comillas simples. El otro enfoque consiste en hacer uso del operador de quote alternativo para especificar un par de alternativas de personajes con los que encierran los literales de carácter.
Objetivo de Certificación.
La construcción de la sentencia SELECT forma la base para la mayoría de las interacciones que se producen con una base de datos Oracle. Estas interacciones pueden tomar la forma de las consultas emitidas a partir de SQL Developer o SQL * Plus o cualquier número de Oracle y otras herramientas de cliente de terceras partes. En su esencia, estas herramientas traducir las solicitudes de información en las instrucciones SELECT, que luego son ejecutados por la base de datos.
La estructura de una tabla se ha descrito. Filas de datos se han recuperado y el formato orientadas a conjuntos de los resultados fue revelada. Los resultados fueron refinados por proyección. En otras palabras, las consultas pueden incluir sólo las columnas que están interesados en la recuperación y excluir el resto de columnas en una tabla.
Las reglas sintácticas de SELECT son básicas y flexible y errores de lenguaje debe ser rara a su gramática de ingles. Terminar declaraciones usando punto y comas, respecto del carácter literal de mayúsculas y minúsculas, y la conciencia de los valores nulos deben facilitar evitando errores.
Expresiones exponer un panorama de posibilidades de manipulación de datos a través de la interacción de los operadores aritméticos y de carácter con la columna o datos literales, o una combinación de los dos.
La forma general de la instrucción SELECT se exploró y la base para la expansión de esta declaración fue construida.
Los ejercicios de autoevaluación se compone de dos componentes. El primer componente está compuesto por preguntas que le dará una idea acerca de lo que se le puede pedir durante el examen. El segundo componente que permite la práctica de las habilidades lingüísticas en este capítulo en un formato de laboratorio. Las soluciones a ambos tipos de preguntas se discuten en detalle en la sección de soluciones.
Dos Minutos.
Lista de Capacidades de la sentencia SQL SELECT.
- Las tres operaciones fundamentales que las sentencias SELECT son capaces de son la proyección, selección y unión.
- Proyección se refiere a la restricción de las columnas seleccionadas de una tabla. Usando la proyección, se recuperan sólo las columnas de interés y no todas las columnas posibles.
- La selección se refiere a la extracción de filas de una tabla. La selección incluye la restricción adicional de las filas extraídos en función de diversos criterios o condiciones. Esto le permite recuperar únicamente las filas que son de interés y no cada fila de la tabla.
- joining implica vincular dos o más tablas basadas en atributos comunes. joining permite que los datos se almacenan en tercera forma normal en las tablas discretas, en lugar de en una gran tabla.
- Una combinación ilimitada de las proyecciones, las selecciones, y se unión proporciona el lenguaje para extraer los datos relacionales necesarias.
- Una definición estructural de la tabla se puede obtener mediante el comando DESCRIBE.
- Las columnas de las tablas de almacenar diferentes tipos de datos utilizando distintos tipos de datos, la más común de lo que son el número, VARCHAR2, DATE y TIMESTAMP.
- Los tipo de datos NUMBER(x,y) implica que la información numérica en esta columna puede tener en la mayoría x dígitos, pero por lo menos y de estos dígitos que aparecen en la parte derecha del punto decimal.
- El comando DESCRIBE se enumeran los nombres, tipos de datos y el estado de todas las columnas que aceptan valores NULL en una tabla.
- Columnas obligatorias también se les conoce como columnas NOT NULL.
Ejecutar una sentencia básica SELECT.
- The syntax of the primitive SELECT clause is as follows: SELECT *|{[DISTINCT] column|expression [alias],…}
- La sentencia SELECT también se conoce como una consulta SELECT y comprende al menos dos cláusulas: la cláusula SELECT y la cláusula FROM.
- La cláusula SELECT determina la proyección de las columnas. En otras palabras, la cláusula SELECT especifica las columnas que se incluyen en los resultados devueltos.
- El asterisco (*) se utiliza como un símbolo de comodín para indicar todas las columnas. Por lo tanto, la sentencia SELECT * FROM CUENTAS devuelve todas las columnas disponibles en la tabla de cuentas.
- La cláusula FROM especifica las tablas de origen a partir de qué elementos están seleccionados.
- La palabra clave DISTINCT anterior los elementos de la cláusula SELECT hace que las combinaciones de duplicados de estos artículos a ser excluidos de los resultados devueltos conjunto.
- Sentencias SQL se deben terminar con un punto y coma. Como una alternativa, una nueva línea se puede agregar después de una instrucción y una barra puede ser utilizado para ejecutar la sentencia.
- Las sentencias SQL pueden ser escritos y ejecutados en mayúsculas o minúsculas. Tenga cuidado al interactuar con los caracteres literales, ya que estos son mayúsculas y minúsculas.
- Los operadores aritméticos y el operador de concatenación de cadenas que actúan sobre la columna y datos literales forman la base de expresiones SQL.
- Expresiones y columnas regulares puede tener un alias usando la palabra clave AS o dejando un espacio entre la columna o expresión y el alias.
- Si un alias contiene varias palabras o el caso de los alias es importante, debe estar encerrado entre comillas dobles.
- Ocurrencias naturales de comillas simples en unos caracteres literales pueden ser seleccionado haciendo uso de un apóstrofe adicional por la ocurrencia natural o el operador alternativo quote.
- La tabla DUAL es una tabla única columna y fila única que se utiliza a menudo para evaluar expresiones que no se refieren a determinadas columnas o tablas.
- Columnas que no se rigen por una restricción NOT NULL tienen el potencial para almacenar valores nulos y se refieren a veces como columnas nullables columns.
- Los valores NULL no son los mismos que un espacio en blanco o cero. Los valores NULL se refieren a la ausencia de datos. Null se define como un valor que no está disponible, sin asignar, lo desconocido, o inaplicables.
- Se debe tener precaución cuando se trabaja con valores nulos ya que la aritmética con un valor nulo siempre produce un resultado nulo.
Comentarios
Publicar un comentario