SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

42
Copyright © 2004, Oracle. Todos los derechos reservados. Recuperación de Datos mediante la Sentencia SELECT de SQL

description

Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Transcript of SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Page 1: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Copyright © 2004, Oracle. Todos los derechos reservados.

Recuperación de Datos mediantela Sentencia SELECT de SQL

Page 2: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-2

Copyright © 2004, Oracle. Todos los derechos reservados.

Objetivos

Al finalizar esta lección, debería estar capacitado para:

� Enumerar las capacidades de las sentenciasSELECT de SQL

� Ejecutar una sentencia SELECT básica

� Diferenciar entre sentencias SQL y comandos deiSQL*Plus

Objetivos

Para extraer datos de la base de datos, debe utilizar la sentencia SELECT de SQL (Lenguaje Estructurado de Consulta). Puede que tenga que restringir las columnas que se van a mostrar.Esta lección describe todas las sentencias SQL necesarias para realizar estas acciones. Esposible que desee crear sentencias SELECT que se puedan utilizar más de una vez.

Esta lección trata también el entorno iSQL*Plus, en el que se pueden ejecutar sentencias SQL.

Page 3: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-3

Copyright © 2004, Oracle. Todos los derechos reservados.

Capacidades de las Sentencias SELECT de SQL

SelecciónProyección

Tabla 1 Tabla 2

Tabla 1Tabla 1

Unión

Capacidades de las Sentencias SELECT de SQL

Las sentencias SELECT recuperan información de la base de datos. Con las sentenciasSELECT puede utilizar estas capacidades:

� Proyección: Seleccione las columnas de una tabla que se han devuelto mediante una consulta. Elija la cantidad de columnas que necesite.

� Selección: Seleccione las filas de una tabla que se han devuelto mediante una consulta. Se pueden utilizar varios criterios para restringir las filas que se recuperarán.

� Unión: Junte datos almacenados en diferentes tablas especificando el enlace que hayentre ellos. Las uniones SQL se describen más detalladamente en una lección posterior.

Page 4: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-4

Copyright © 2004, Oracle. Todos los derechos reservados.

Sentencia SELECT Básica

� SELECT identifica las columnas que se van a mostrar

� FROM identifica la tabla que contiene esas columnas

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;

Sentencia SELECT Básica

En su forma más sencilla, una sentencia SELECT debe incluir:� Una cláusula SELECT, que especifica las columnas que se van a mostrar� Una cláusula FROM, que identifica la tabla que contiene las columnas que se muestran

en la cláusula SELECT

En la sintaxis:

SELECT es una lista de una o más columnas* selecciona todas las columnasDISTINCT suprime los duplicadoscolumn|expression selecciona la columna o la expresión especificadasalias proporciona a las columnas seleccionadas

cabeceras diferentesFROM table especifica la tabla que contiene las columnas

Nota: A lo largo de este curso, las expresiones palabra clave, cláusula y sentencia se utilizan como se indica a continuación:

� Una palabra clave hace referencia a un elemento SQL individual.Por ejemplo, SELECT y FROM son palabras clave.

� Una cláusula es una parte de una sentencia SQL.Por ejemplo, SELECT employee_id, last_name, ... es una cláusula.

� Una sentencia es una combinación de dos o más cláusulas.Por ejemplo, SELECT * FROM employees es una sentencia SQL.

Page 5: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-5

Copyright © 2004, Oracle. Todos los derechos reservados.

Selección de Todas las Columnas

SELECT *FROM departments;

Selección de Todas las Columnas de Todas las Filas

Puede mostrar todas las columnas de datos de una tabla si agrega un asterisco (*) después de la palabra clave SELECT. En el ejemplo de la diapositiva, la tabla DEPARTMENTS contiene cuatro columnas: DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID y LOCATION_ID. La tabla contiene siete filas, una para cada departamento.

También puede mostrar todas las columnas de la tabla enumerando todas las columnasdespués de la palabra clave SELECT. Por ejemplo, la siguiente sentencia SQL (como elejemplo de la diapositiva) muestra todas las columnas y todas las filas de latabla DEPARTMENTS:

SELECT department_id, department_name, manager_id, location_idFROM departments;

Page 6: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-6

Copyright © 2004, Oracle. Todos los derechos reservados.

Selección de Columnas Específicas

SELECT department_id, location_idFROM departments;

Selección de Columnas Específicas de Todas las Filas

Puede utilizar la sentencia SELECT para mostrar columnas específicas de la tabla especificando los nombres de columna, separados por comas. El ejemplo de la diapositiva muestra todos los números de departamento y los números de ubicación de la tabla DEPARTMENTS.

En la cláusula SELECT, especifique las columnas que desee, en el orden en que quiere que aparezcan en la salida. Por ejemplo, para que la ubicación se muestre antes del número dedepartamento de izquierda a derecha, utilice esta sentencia:

SELECT location_id, department_idFROM departments;

Page 7: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-7

Copyright © 2004, Oracle. Todos los derechos reservados.

Escritura de Sentencias SQL

� Las sentencias SQL no son sensibles amayúsculas/minúsculas.

� Las sentencias SQL pueden estar en una o más líneas.

� Las palabras clave no se pueden abreviar o dividir entre líneas.

� Las cláusulas se sitúan normalmente en líneas separadas.

� Se utilizan sangrados para mejorar la legibilidad.

� En iSQL*Plus, opcionalmente, las sentencias SQLpueden terminar en punto y coma (;). Los puntos ycomas son obligatorios si ejecuta varias sentencias SQL.

� En SQL*plus, es obligatorio que todas las sentenciasSQL terminen en punto y coma (;).

Escritura de Sentencias SQL

Mediante las sencillas reglas que se detallan a continuación, puede crear sentencias válidas que resulten fáciles de leer y de editar:

� Las sentencias SQL no son sensibles a mayúsculas/minúsculas. (a menos que se indique que lo sean).

� Las sentencias SQL se pueden introducir en una o en varias líneas. � Las palabras clave no se pueden dividir en líneas ni se pueden abreviar.� Las cláusulas se suelen colocar en líneas aparte para facilitar su lectura y su edición.� Se deben utilizar sangrados para facilitar la lectura del código.� Las palabras clave se suelen introducir en mayúsculas; el resto de palabras, como

nombres y columnas, se introduce en minúsculas.

Ejecución de Sentencias SQL

Mediante iSQL*Plus, haga clic en el botón Execute para ejecutar el comando o los comandosde la ventana de edición.

Mediante SQL*Plus, termine la sentencia SQL con un punto y coma y pulse la tecla Enterpara ejecutar el comando.

Page 8: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-8

Copyright © 2004, Oracle. Todos los derechos reservados.

Valores por Defecto de Cabeceras de Columnas

� iSQL*Plus:� Alineación de cabecera por defecto: centrada

� Visualización de cabecera por defecto: mayúsculas

� SQL*Plus:� Las cabeceras de las columnas CHARACTER y DATE

están alineadas a la izquierda� Las cabeceras de columnas NUMBER están alineadas

a la derecha

� Visualización de cabecera por defecto: mayúsculas

Valores por Defecto de Cabeceras de Columnas

En iSQL*Plus, las cabeceras de columnas se muestran en mayúsculas y centradas.

SELECT last_name, hire_date, salaryFROM employees;

Puede sustituir la visualización de la cabecera de columna por un alias. Los alias de columna se describirán posteriormente en esta lección.

Page 9: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-9

Copyright © 2004, Oracle. Todos los derechos reservados.

Expresiones Aritméticas

Cree expresiones con datos numéricos y de fecha utilizando operadores aritméticos.

Multiplicación*

División/

Resta-

Suma+

DescripciónOperador

Expresiones Aritméticas

Es posible que deba modificar el modo en que se muestran los datos o que desee realizar cálculos o consultar supuestos hipotéticos. Todo esto es posible mediante expresiones aritméticas. Una expresión aritmética puede contener nombres de columna, valores numéricos constantes y los operadores aritméticos.

Operadores Aritméticos

La diapositiva muestra los operadores aritméticos disponibles en SQL. Puede utilizar operadores aritméticos en cualquier cláusula de una sentencia SQL (excepto en lacláusula FROM).

Nota: Con los tipos de datos DATE y TIMESTAMP, puede utilizar únicamente los operadoresde suma y de resta.

Page 10: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-10

Copyright © 2004, Oracle. Todos los derechos reservados.

SELECT last_name, salary, salary + 300FROM employees;

Uso de Operadores Aritméticos

Uso de Operadores Aritméticos

El ejemplo de la diapositiva utiliza el operador de suma para calcular una aumento en el salario de 300 dólares para cada empleado. La diapositiva muestra también una columna SALARY+300 en la salida.

Observe que la columna calculada resultante SALARY+300 no es una nueva columna de latabla EMPLOYEES; sólo tiene propósitos de visualización. Por defecto, el nombre de una nueva columna proviene del cálculo que la generó (en este caso, salary+300).

Nota: Oracle Server ignora los espacios en blanco que van antes y después del operador aritmético.

Prioridad de Operadores

Si un operador aritmético contiene más de un operador, la multiplicación y la división se evalúan en primer lugar. Si los operadores de una expresión tienen la misma prioridad, la evaluación se realiza de izquierda a derecha.

Puede utilizar paréntesis para forzar a que la expresión que vaya entre paréntesis seevalúe primero.

Reglas de Prioridad:� La multiplicación y la división tienen lugar antes que la suma y la resta.� Los operadores con la misma prioridad se calculan de izquierda a derecha.� Los paréntesis se utilizan para omitir la prioridad por defecto o para aclarar la sentencia.

Page 11: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-11

Copyright © 2004, Oracle. Todos los derechos reservados.

SELECT last_name, salary, 12*salary+100FROM employees;

Prioridad de Operadores

SELECT last_name, salary, 12*(salary+100)FROM employees;

1

2

Prioridad de Operadores (continuación)

El primer ejemplo de la diapositiva muestra el apellido, el salario y la compensación anual delos empleados. Calcula la compensación anual multiplicando el salario mensual por 12 y sumando una bonificación única de 100 dólares. Observe que la multiplicación se realiza antes que la suma.

Nota: Utilice paréntesis para reforzar el orden estándar de prioridad y para mejorar la claridad.Por ejemplo, la expresión de la diapositiva se puede escribir como (12*salary)+100 sinque cambie el resultado.

Uso de Paréntesis

Puede sustituir las reglas de prioridad mediante paréntesis para especificar el orden en que desea que se ejecuten los operadores.

El segundo ejemplo de la diapositiva muestra el apellido, el salario y la compensación anual delos empleados. Calcula la compensación anual como se indica a continuación: suma una bonificación mensual de 100 dólares al salario mensual y multiplica el subtotal por 12. Debidoa los paréntesis, la suma tiene prioridad sobre la multiplicación.

Page 12: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-12

Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de un Valor Nulo

� Un valor nulo es aquel que no está disponible, no está asignado, es desconocido o no es aplicable.

� Un valor nulo no es lo mismo que un cero o un espacio en blanco.

SELECT last_name, job_id, salary, commission_pctFROM employees;

Valores Nulos

Si faltan valores en una fila para una columna en particular, se dice que el valor es nulo o que contiene un valor nulo.

Un valor nulo es aquel que no está disponible, no está asignado, es desconocido o no es aplicable. Un valor nulo no es lo mismo que un cero o un espacio. El cero es un número y un espacio es un carácter.

Las columnas de cualquier tipo de datos pueden contener valores nulos. Sin embargo, algunas restricciones (NOT NULL y PRIMARY KEY) impiden que se utilicen valores nulos en la columna.

En la columna COMMISSION_PCT de la tabla EMPLOYEES, observe que sólo pueden ganar comisiones los directores de ventas o los representantes de ventas. Los demás empleados noestán autorizados a ganar comisiones. Un valor nulo representa ese hecho.

Page 13: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-13

Copyright © 2004, Oracle. Todos los derechos reservados.

SELECT last_name, 12*salary*commission_pctFROM employees;

Valores Nulosen Expresiones Aritméticas

Las expresiones aritméticas que contienen un valor nulo se evalúan como nulas.

Valores Nulos en Expresiones Aritméticas

Si el valor de alguna columna de una expresión aritmética es nulo, el resultado es nulo. Por ejemplo, si intenta realizar una división por cero, recibirá un error. Sin embargo, si divide un número por un valor nulo, el resultado es un valor nulo o desconocido.

En el ejemplo de la diapositiva, el empleado King no recibe comisiones. Como la columnaCOMMISSION_PCT de la expresión aritmética es nula, el resultado es nulo.

Para obtener más información, consulte �Basic Elements of SQL� en SQL Reference.

Page 14: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-14

Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de un Alias de Columna

Un alias de columna:

� Cambia el nombre de una cabecera de columna

� Es útil para los cálculos

� Sigue inmediatamente al nombre de columna(puede haber también una palabra clave ASopcional entre el nombre de columna y el alias)

� Requiere comillas dobles si contiene espacios ocaracteres especiales, o si es sensible amayúsculas/minúsculas

Alias de Columna

Al mostrar el resultado de una consulta, iSQL*Plus utiliza normalmente el nombre de lacolumna seleccionada como cabecera de columna. Esta cabecera puede no ser descriptiva y,por tanto, puede resultar difícil de entender. Puede cambiar una cabecera de columna mediante un alias.

Especifique el alias después de la columna en la lista SELECT utilizando un espacio como separador. Por defecto, las cabeceras de alias aparecen en mayúsculas. Si el alias contiene espacios o caracteres especiales (como # o $) o si es sensible a mayúsculas/minúsculas, ponga el alias entre comillas dobles (" ").

Page 15: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-15

Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Alias de Columna

SELECT last_name "Name" , salary*12 "Annual Salary"FROM employees;

SELECT last_name AS name, commission_pct commFROM employees;

Alias de Columna (continuación)

El primer ejemplo muestra los apellidos y los porcentajes de comisión de todos los empleados. Observe que la palabra clave opcional AS se ha utilizado antes del nombre de alias de columna. El resultado de la consulta es el mismo independientemente de que seutilice o no la palabra clave AS. Observe también que la sentencia SQL tiene los alias decolumna, name y comm, en minúsculas, mientras que el resultado de la consulta muestra las cabeceras de columnas en mayúsculas. Como se mencionó en una diapositiva anterior, las cabeceras de columnas aparecen en mayúsculas por defecto.

El segundo ejemplo muestra los apellidos y los salarios anuales de todos los empleados. Como Annual Salary contiene un espacio, se ha puesto entre comillas dobles. Observeque la cabecera de columna de la salida es exactamente igual que el alias de columna.

Page 16: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-16

Copyright © 2004, Oracle. Todos los derechos reservados.

Operador de Concatenación

Un operador de concatenación:

� Enlaza columnas o cadenas de caracteres con otras columnas

� Se representa mediante dos barras verticales (||)

� Crea una columna resultante que es una expresión de carácter

SELECT last_name||job_id AS "Employees"FROM employees;

Operador de Concatenación

Puede enlazar columnas a otras columnas, expresiones aritméticas o valores constantes para crear una expresión de carácter mediante el operador de concatenación (||). Las columnas situadas en cualquiera de los lados del operador se combinan para crear una única columna de salida.

En el ejemplo, LAST_NAME y JOB_ID están concatenadas y se les ha asignado el alias Employees. Observe que el apellido y el código de puesto del empleado están combinados para crear una única columna de salida.

La palabra clave AS antes del nombre de alias facilita la lectura de la cláusula SELECT.

Valores Nulos con el Operador de Concatenación

Si se concatena un valor nulo con una cadena de caracteres, el resultado es una cadena decaracteres. LAST_NAME || NULL da como resultado LAST_NAME.

Page 17: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-17

Copyright © 2004, Oracle. Todos los derechos reservados.

Cadenas de Literales

� Un literal es un carácter, un número o una fecha que se ha incluido en la sentencia SELECT.

� Los valores de literales de caracteres y fechadeben ir entre comillas simples.

� Las cadenas de literales se incluyen en cadafila devuelta.

Cadenas de Literales

Un literal es un carácter, un número o una fecha que se ha incluido en la lista SELECT y que no es un nombre de columna ni un alias de columna. Se imprime con cada fila devuelta. Las cadenas de literales de texto sin formato se pueden incluir en el resultado de la consulta y se tratarán igual que una columna en la lista SELECT.

Los literales de fecha y de caracteres deben ir entre comillas simples (' '); los literales de números no es necesario que vayan entre comillas.

Page 18: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-18

Copyright © 2004, Oracle. Todos los derechos reservados.

Uso de Cadenas de Literales

SELECT last_name ||' is a '||job_id AS "Employee Details"

FROM employees;

Cadenas de Literales (continuación)

El ejemplo de la diapositiva muestra los apellidos y los códigos de puesto de todos losempleados. La columna tiene la cabecera Employee Details. Observe los espacios entre las comillas simples en la sentencia SELECT. Los espacios mejoran la legibilidad de la salida.

En el ejemplo siguiente, el apellido y el salario de cada empleado se concatenan con un literalpara dar más significado a las filas devueltas.

SELECT last_name ||': 1 Month salary = '||salary MonthlyFROM employees;

Page 19: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-19

Copyright © 2004, Oracle. Todos los derechos reservados.

Operador de Comillas (q) Alternativo

� Especifique su propio delimitador de comillas

� Puede seleccionar cualquier delimitador

� Aumentará la legibilidad y la facilidad de uso

SELECT department_name || q'[, it's assigned Manager Id: ]' || manager_id AS "Department and Manager"

FROM departments;

Operador de Comillas (q) Alternativo

Muchas sentencias SQL utilizan literales de caracteres en expresiones o condiciones. Si el literal contiene una comilla simple, puede utilizar el operador de comillas (q) y seleccionar su propio delimitador de comillas.

Puede seleccionar cualquier delimitador apropiado, de un solo byte o multibyte, o cualquiera de los siguientes pares de caracteres: [ ], { }, ( ) o < >.

En el ejemplo que se muestra, la cadena contiene comillas simples, lo que normalmente seinterpreta como delimitador de una cadena de caracteres. Pero mediante el operador q, los corchetes [] se utilizan como delimitador de comillas. La cadena situada entre los delimitadores de corchetes se interpreta como cadena de literales.

Page 20: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-20

Copyright © 2004, Oracle. Todos los derechos reservados.

Filas Duplicadas

La visualización por defecto de las consultas es todas las filas, incluidas las filas duplicadas.

SELECT department_idFROM employees;

SELECT DISTINCT department_idFROM employees;

1

2

Filas Duplicadas

A menos que indique lo contrario, iSQL*Plus muestra los resultados de una consulta sineliminar las filas duplicadas. El primer ejemplo de la diapositiva muestra todos los númerosde departamento de la tabla EMPLOYEES. Observe que los números de departamento están repetidos.

Para eliminar filas duplicadas del resultado, incluya la palabra clave DISTINCT de lacláusula SELECT justo después de la palabra clave SELECT. En el segundo ejemplo de ladiapositiva, la tabla EMPLOYEES realmente contiene 20 filas, pero sólo hay siete números dedepartamento únicos en la tabla.

Puede especificar varias columnas después del cualificador DISTINCT. El cualificadorDISTINCT afecta a todas las columnas seleccionadas y el resultado son todas las combinaciones distintas de las columnas.

SELECT DISTINCT department_id, job_idFROM employees;

Page 21: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-21

Copyright © 2004, Oracle. Todos los derechos reservados.

Interacción de SQL e iSQL*Plus

Sentencias SQL

Resultados dela consulta

Comandos deiSQL*Plus

Cliente

Informe con formato

Exploradorde Internet

Oracleserver

SQL e iSQL*Plus

SQL es un lenguaje de comandos para la comunicación con Oracle Server desde cualquier herramienta o aplicación. Oracle SQL contiene muchas extensiones.

iSQL*Plus es una herramienta de Oracle que reconoce y envía sentencias SQL a Oracle Server para su ejecución y contiene su propio lenguaje de comandos.

Funciones de SQL� Lo pueden utilizar diferentes usuarios, incluidos los que tengan poca o ninguna

experiencia en programación� Es un lenguaje no procedural� Es un lenguaje basado en el inglés

Funciones de iSQL*Plus� Se accede a él desde un explorador� Acepta sentencias SQL� Proporciona edición online para modificar sentencias SQL� Controla los valores de entorno� Formatea los resultados de las consultas en informes básicos� Accede a bases de datos locales y remotas

Page 22: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-22

Copyright © 2004, Oracle. Todos los derechos reservados.

Sentencias SQL frente aComandos de iSQL*Plus

SentenciasSQL

SQL

� Un lenguaje

� Estándar ANSI

� Las palabras clave no se pueden abreviar

� Las sentencias manipulan datos ydefiniciones de tablas en la base de datos

iSQL*Plus

� Un entorno

� Propietario de Oracle

� Las palabras clave se pueden abreviar

� Los comandos no permiten la manipulación de valores en labase de datos

� Se ejecuta en un explorador

� Se carga centralmente; no es necesaria su implementaciónen cada máquina

Comandosde SQL*Plus

SQL e iSQL*Plus (continuación)

La tabla siguiente compara SQL e iSQL*Plus:

SQL iSQL*Plus

Es un lenguaje de comunicación con Oracle Server para acceder a datos

Reconoce sentencias SQL y las envía al servidor

Se basa en SQL del estándar ANSI (Instituto Nacional Americano de Normalización)

Es la interfaz propietaria de Oracle para ejecutar sentencias SQL

Recupera datos; manipula datos y definiciones de tablas en la base de datos

No permite la manipulación de valores en la base de datos

No tiene carácter de continuidad Utiliza un guión (�) como carácter de continuidad si el comando ocupa más de una línea

No se puede abreviar Se puede abreviar

Utiliza funciones para realizar formateo Utiliza comandos para formatear datos

Page 23: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-23

Copyright © 2004, Oracle. Todos los derechos reservados.

Visión General de iSQL*Plus

Después de conectarse a iSQL*Plus, puede:

� Describir estructuras de tablas

� Introducir, ejecutar y editar sentencias SQL

� Guardar o agregar sentencias SQL a archivos

� Ejecutar o editar sentencias almacenadas enarchivos de comandos guardados

iSQL*Plus

iSQL*Plus es un entorno en el que puede:� Ejecutar sentencias SQL para recuperar, modificar, agregar y eliminar datos de la base

de datos� Formatear, realizar cálculos, almacenar e imprimir resultados en forma de informes� Crear archivos de comandos para almacenar sentencias SQL para su uso repetido en

el futuro

Los comandos de iSQL*Plus se pueden dividir en estas categorías principales:

Categoría Objetivo

Entorno Afecta al comportamiento general de sentencias SQL para la sesión

Formato Formatea los resultados de las consultas

Manipulación de archivos

Guarda sentencias en archivos de comandos de texto y ejecuta sentencias desde archivos de comando de texto

Ejecución Envía sentencias SQL desde el explorador a Oracle Server

Edición Modifica las sentencias SQL en la ventana Edit

Interacción Le permite crear y transferir variables a sentencias SQL, imprimir valores de variables e imprimir mensajes en pantalla

Otros Dispone de varios comandos para conectarse a la base de datos,manipular el entorno iSQL*Plus y mostrar definiciones de columna

Page 24: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-24

Copyright © 2004, Oracle. Todos los derechos reservados.

Conexión a iSQL*Plus

Desde el entorno del explorador:

Conexión a iSQL*Plus

Para conectarse desde un entorno de explorador:1. Inicie el explorador.2. Introduzca la dirección URL del entorno iSQL*Plus.3. En la página Login, introduzca valores adecuados en los campos Username, Password y

Connect Identifier.

Page 25: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-25

Copyright © 2004, Oracle. Todos los derechos reservados.

Entorno iSQL*Plus

6

3 4 5

1

2

8 9

7

Entorno iSQL*Plus

En el explorador, la página iSQL*Plus Workspace tiene varias áreas clave:1. Cuadro de texto: Área en la que se escriben las sentencias SQL y los comandos

de iSQL*Plus2. Botón Execute: Haga clic en este botón para ejecutar las sentencias y los comandos del

cuadro de texto3. Botón Load Script: Abre un formulario en el que puede identificar una ruta de acceso y

un nombre de archivo o una dirección URL que contiene comandos de SQL, PL/SQL o SQL*Plus para cargarlos en el cuadro de texto

4. Botón Save Script: Guarda el contenido del cuadro de texto en un archivo5. Botón Cancel: Detiene la ejecución del comando del cuadro de texto6. Botón Clear Screen: Haga clic en este botón para limpiar el texto del cuadro de texto7. Icono Logout: Haga clic en este icono para dar por terminada la sesión de iSQL*Plus y

volver a la página iSQL*Plus Login8. Icono Preferences: Haga clic en este icono para cambiar la configuración de la interfaz,

la configuración del sistema o la contraseña9. Icono Help: Proporciona acceso a la documentación de ayuda de iSQL*Plus

Page 26: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-26

Copyright © 2004, Oracle. Todos los derechos reservados.

Visualización de la Estructura de Tablas

Utilice el comando de iSQL*Plus DESCRIBE para mostrar la estructura de una tabla:

DESC[RIBE] tablename

Visualización de la Estructura de Tablas

En iSQL*Plus, puede mostrar la estructura de una tabla mediante el comando DESCRIBE. Elcomando muestra los nombres de columna y los tipos de datos e indica si una columna debecontener datos (es decir, si la columna tiene una restricción NOT NULL).

En la sintaxis, tablename es el nombre de cualquier tabla, vista o sinónimo existentes a los que pueda acceder el usuario.

Page 27: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-27

Copyright © 2004, Oracle. Todos los derechos reservados.

Visualización de la Estructura de Tablas

DESCRIBE employees

Visualización de la Estructura de Tablas (continuación)

El ejemplo de la diapositiva muestra información sobre la estructura de latabla DEPARTMENTS.

En la visualización resultante, Null? indica que los valores para esta columna pueden serdesconocidos. NOT NULL indica que una columna debe contener datos. Type muestra el tipode datos para una columna.

Los tipos de datos se describen en esta tabla:

Tipo de Datos Descripción

NUMBER(p,s) Valor numérico con un número máximo p de dígitos, con snúmeros de dígitos a la derecha del separador decimal

VARCHAR2(s) Valor de carácter de longitud variable de un tamaño máximo s

DATE Valor de fecha y hora entre el 1 de enero de 4712 a. C. y el 31 de diciembre de 9999 d. C.

CHAR(s) Valor de carácter de longitud fija de un tamaño máximo s

Page 28: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-28

Copyright © 2004, Oracle. Todos los derechos reservados.

Interacción con Archivos de Comandos

SELECT last_name, hire_date, salaryFROM employees; 1

2

Interacción con Archivos de Comandos

Colocación de Sentencias y Comandos en un Archivo de Comandos de Texto

Puede guardar comandos y sentencias desde el cuadro de texto en iSQL*Plus a un archivo de comandos de texto del modo siguiente:

1. Escriba la sentencia SQL en el cuadro de texto en iSQL*Plus.2. Haga clic en el botón Save Script. Se abrirá el recuadro de diálogo Windows File Save.

Identifique el nombre del archivo. La extensión por defecto será .uix. Puede cambiar eltipo de archivo a un archivo de texto o guardarlo como archivo .sql.

Page 29: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-29

Copyright © 2004, Oracle. Todos los derechos reservados.

Interacción con Archivos de Comandos

Interacción con Archivos de Comandos (continuación)

En el ejemplo que se muestra, la sentencia SELECT de SQL escrita en el cuadro de texto seguarda en un archivo denominado emp_data.sql. Puede seleccionar el tipo de archivo, elnombre de archivo y la ubicación de donde desee guardar el archivo de comandos.

Page 30: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-30

Copyright © 2004, Oracle. Todos los derechos reservados.

Interacción con Archivos de Comandos

1

Interacción con Archivos de Comandos (continuación)

Uso de Sentencias y Comandos de un Archivo de Comandos en iSQL*Plus

Puede utilizar comandos y sentencias guardados anteriormente de un archivo de comandos eniSQL*Plus del modo siguiente:

1. Haga clic en el botón Load Script. Se abrirá un formulario desde el que puede escribir elnombre del archivo o una dirección URL que contenga los comandos de SQL, PL/SQL o SQL*Plus que desee introducir en el cuadro de texto.

Page 31: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-31

Copyright © 2004, Oracle. Todos los derechos reservados.

Interacción con Archivos de Comandos

2

3

D:\TEMP\emp_data.sql

Interacción con Archivos de Comandos (continuación)

2. Introduzca el nombre y la ruta de acceso del archivo de comandos o la dirección URL. O puede hacer clic en el botón Browse para buscar el nombre y la ubicación del archivo de comandos.

3. Haga clic en el botón Load para llevar el contenido del archivo o de la dirección URL al recuadro de texto.

Page 32: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-32

Copyright © 2004, Oracle. Todos los derechos reservados.

Página History de iSQL*Plus

1

2

3

Ejecución de Sentencias Anteriores

La página History de iSQL*Plus le permite ejecutar sentencias previamente ejecutadas en lasesión. La página History muestra las sentencias SQL y los comandos de iSQL*Plusejecutados más recientemente. Para volver a ejecutar las sentencias:

1. Seleccione las sentencias que desea ejecutar.2. Haga clic en el botón Load.

Nota� Puede controlar el número de sentencias que se muestran en la página History con los

valores de Preferences.� Puede suprimir sentencias seleccionadas haciendo clic en el botón Delete.

Page 33: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-33

Copyright © 2004, Oracle. Todos los derechos reservados.

Página History de iSQL*Plus

3

4

Ejecución de Sentencias Anteriores (continuación)

3. Vuelva a la página Workspace.4. Haga clic en el botón Execute para ejecutar el comando que se ha cargado en el

recuadro de texto.

Page 34: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-34

Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de Preferencias de iSQL*Plus

2

3

1

Preferencias de iSQL*Plus� Puede definir preferencias para la sesión de iSQL*Plus haciendo clic en el

icono Preferences.� Las preferencias se dividen en categorías. Puede definir preferencias para el formato de

archivos de comandos, la ejecución de archivos de comandos y la administración de bases de datos, y puede cambiar la contraseña.

� Al seleccionar una categoría de preferencias, se muestra un formulario que le permitedefinir las preferencias para dicha categoría.

Page 35: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-35

Copyright © 2004, Oracle. Todos los derechos reservados.

Definición de la Preferencia de Ubicación de Salida

1

2

Cambio de la Ubicación de Salida

Puede enviar los resultados generados por una sentencia SQL o un comando de iSQL*Plus a la pantalla (valor por defecto), a un archivo o a otra ventana del explorador.

En la página Preferences:1. Seleccione una opción de Output Location.2. Haga clic en el botón Apply.

Page 36: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-36

Copyright © 2004, Oracle. Todos los derechos reservados.

Resumen

En esta lección ha aprendido a:� Escribir una sentencia SELECT que:

� Devuelva todas las filas y columnas de una tabla

� Devuelva columnas especificadas de una tabla

� Utilice alias de columna para mostrar más cabeceras de columnas descriptivas

� Utilice el entorno iSQL*Plus para escribir, guardar yejecutar sentencias SQL y comandos de iSQL*Plus

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;

Sentencia SELECT

En esta lección, ha aprendido a recuperar datos de una tabla de base de datos con lasentencia SELECT.

SELECT *|{[DISTINCT] column [alias],...}FROM table;

En la sintaxis:

SELECT es una lista de una o más columnas* selecciona todas las columnasDISTINCT suprime los duplicadoscolumn|expression selecciona la columna o la expresión especificadasalias proporciona a las columnas seleccionadas

cabeceras diferentesFROM table especifica la tabla que contiene las columnas

iSQL*Plus

iSQL*Plus es un entorno de ejecución que se puede utilizar para enviar sentencias SQL alservidor de bases de datos para editar y guardar sentencias SQL. Las sentencias se pueden ejecutar desde el prompt SQL o desde un archivo de comandos.

Page 37: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-37

Copyright © 2004, Oracle. Todos los derechos reservados.

Práctica 1: Visión General

Esta práctica cubre los temas siguientes:

� Selección de todos los datos de diferentes tablas

� Descripción de la estructura de tablas

� Realización de cálculos aritméticos y especificaciónde números de columna

� Uso de iSQL*Plus

Práctica 1: Visión General

Ésta es la primera de varias prácticas para este curso. Las soluciones (si las necesita) sepueden encontrar en el Apéndice A. En las prácticas se pretenden cubrir todos los temas quese presenten en las lecciones correspondientes.

Anote esta ubicación para los archivos de práctica:

E:\labs\\SQL1\labs

Si se le pide que guarde algún archivo de práctica, guárdelos en esta ubicación.

Para iniciar iSQL*Plus, inicie el explorador. Debe introducir una dirección URL para accedera iSQL*Plus. La dirección URL necesita el nombre del host, que le proporcionará el instructor. Introduzca el comando siguiente, para sustituir el nombre del host por el valor quele proporcione el instructor: http://<HOSTNAME:5561>/isqlplus

En las prácticas, puede haber ejercicios precedidos de las frases �Si le queda tiempo� o �Si desea afrontar un desafío mayor�. Trabaje en estos ejercicios únicamente si ha terminado todos los demás ejercicios en el tiempo asignado y desea afrontar un desafío mayor para sus habilidades.

Realice las prácticas despacio y con precisión. Puede probar a guardar y ejecutar archivos decomando. Si tiene alguna pregunta en cualquier momento, pregúntele al instructor.

Page 38: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-38

Práctica 1

Parte 1

Ponga a prueba sus conocimientos:1. Inicie una sesión en iSQL*Plus mediante el identificador de usuario y la contraseña que

le proporcione el instructor.2. Los comandos de iSQL*Plus acceden a la base de datos.

Verdadero/Falso3. La siguiente sentencia SELECT se ejecuta correctamente:

SELECT last_name, job_id, salary AS SalFROM employees;

Verdadero/Falso4. La siguiente sentencia SELECT se ejecuta correctamente:

SELECT * FROM job_grades;

Verdadero/Falso5. Hay cuatro errores de codificación en esta sentencia. ¿Los puede identificar?

SELECT employee_id, last_namesal x 12 ANNUAL SALARYFROM employees;

Parte 2

Anote esta ubicación para los archivos de práctica:

E:\labs\\SQL1\labs

Si se le pide que guarde algún archivo de práctica, guárdelos en esta ubicación.

Para iniciar iSQL*Plus, inicie el explorador. Debe introducir una dirección URL para acceder a iSQL*Plus. La dirección URL necesita el nombre del host, que le proporcionará el instructor. Introduzca el comando siguiente, para sustituir el nombre del host por el valor quele proporcione el instructor: http://<HOSTNAME:5561>/isqlplus

Le han contratado como programador de SQL en Acme Corporation. Su primera tarea consiste en crear unos informes basándose en datos de las tablas de recursos humanos.

6. Su primera tarea consiste en determinar la estructura de la tabla DEPARTMENTS y desu contenido.

Page 39: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-39

Práctica 1 (continuación)

7. Debe determinar la estructura de la tabla EMPLOYEES.

El departamento de recursos humanos desea que cree una consulta para mostrar el apellido, el código de puesto, la fecha de contratación y el número de empleado de cada empleado, con el número de empleado en primer lugar. Proporcione el alias STARTDATE para la columna HIRE_DATE. Guarde la sentencia SQL en un archivo denominado lab_01_07.sql para poder transferir este archivo al departamento de recursos humanos.

Page 40: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-40

Práctica 1 (continuación)8. Pruebe la consulta del archivo lab_01_07.sql para asegurarse de que funciona

correctamente.

9. El departamento de recursos humanos desea que cree una consulta para visualizar códigos de puesto únicos de la tabla EMPLOYEES.

Page 41: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-41

Práctica 1 (continuación)

Parte 3

Si le queda tiempo, realice los siguientes ejercicios:10. El departamento de recursos humanos desea cabeceras de columnas más descriptivas

para su informe sobre los empleados. Copie la sentencia de lab_01_07.sql en elrecuadro de texto de iSQL*Plus. Nombre las cabeceras de columna Emp #, Employee, Job y Hire Date, respectivamente. A continuación, vuelva a ejecutar la consulta.

11. El departamento de recursos humanos ha solicitado un informe de todos los empleados y de sus identificadores de puesto. Muestre el apellido concatenado con el identificador de puesto (separados por una coma y un espacio) y nombre la columna Employeeand Title.

Page 42: SQL - Tema 1 - Recuperación de Datos mediante la Sentencia SELECT de SQL

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I 1-42

Práctica 1 (continuación)

Si desea afrontar un desafío mayor, realice este ejercicio:12. Para familiarizarse con los datos de la tabla EMPLOYEES, cree una consulta para

mostrar todos los datos de esa tabla. Separe la salida de cada columna con una coma. Ponga al título de la columna el nombre THE_OUTPUT.