Sunteți pe pagina 1din 38

1.

Sentencias SQL Básicas SELECT

1
Sentencias Básicas SQL

Objetivos

•• Listar
Listar las
las capacidades
capacidades de
de la
la sentencia
SQL
SQL SELECT
SELECT
•• Ejecutar
Ejecutar una
una Sentencia
Sentencia Básica
Básica SELECT
SELECT
•• Diferenciar
Diferenciar entre
entre Sentencias
Sentencias SQL
SQL yy
comandos
comandos SQL*PLUS
SQL*PLUS

1-2

ORACLE SQL y PL/SQL 1


1. Sentencias SQL Básicas SELECT

Capacidades de Sentencias SQL SELECT

Capacidades de Sentencias
SQL SELECT
Selección Proyección

Tabla 1 Tabla 1
Conexión

Tabla 1 Tabla 2
1-3

Una sentencia SELECT recupera información desde la Base de Datos. Usando una
sentencia SELECT, se puede realizar lo siguiente:

 Proyección: Se puede usar la capacidad de Proyección en SQL para escoger las


columnas en la tabla que se quieren regresar por la Consulta. Se pueden escoger
unas cuantas o muchas columnas de la tabla como se requiera.
 Selección: Se puede usar la capacidad de Selección en SQL para escoger los
renglones en una tabla que se quieren regresar por la Consulta. Se pueden usar
varios criterios para restringir los renglones que se desean visualizar.
 Conexión: Se puede usar la capacidad de Conexión en SQL para traer juntos
datos que son almacenados en diferentes tablas mediante la creación de una liga
entre ellas.

ORACLE SQL y PL/SQL 2


1. Sentencias SQL Básicas SELECT

Sentencias Básicas SELECT

Sentencias Básicas SELECT

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

•• SELECT
SELECT identifica
identifica que
que columnas.
columnas.
•• FROM
FROM identifica
identifica cual
cual tabla.
tabla.

1-4

En su más simple forma, una sentencia SELECT debe incluir lo siguiente:

 Una cláusula SELECT, la cual especifica las columnas que se desplegaran


 Una cláusula FROM, la cual especifica la tabla que contiene las columnas listadas
en la cláusula SELECT

En la sintaxis:

SELECT es una lista de una o más columnas


* selecciona todas las columnas
DISTINCT elimina duplicados
Columna | expresión selecciona la columna o expresión
Alias recupera la columna con diferente encabezado
FROM tabla especifica la tabla que contiene las columnas

Durante el curso las palabras Palabra Clave, Cláusula y Sentencia serán usadas como
sigue:

 Una Palabra Clave se refiere a un elemento individual SQL, por ejemplo: SELECT
y FROM.
 Una Cláusula es parte de una Sentencia SQL, por ejemplo: SELECT empleado_id,
Apellido_Paterno,. . . es una Cláusula.
 Una Sentencia es una combinación de dos o más Cláusulas, por ejemplo:
SELECT * FROM EMP es una Sentencia SQL.

ORACLE SQL y PL/SQL 3


1. Sentencias SQL Básicas SELECT

Seleccionando Todas las Columnas de Todos los Renglones

Seleccionando Todas las Columnas

SQL> SELECT *
2 FROM dept;

DEPTNO DNAME LOC


--------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

1-6

Se pueden desplegar todas las columnas de datos en una tabla mediante la siguiente
palabra clave SELECT seguida con un asterisco (*). En el ejemplo, la tabla DEPT
contiene tres columnas: DEPTNO, DNAME y LOC. La tabla contiene cuatro renglones,
uno por cada departamento.

Se pueden desplegar todas las columnas en la tabla listando todas las columnas después
de la palabra clave SELECT. Por ejemplo, la siguiente sentencia SQL, semejante al
cuadro anterior, despliega todas las columnas y todos los renglones de la tabla DEPT:

SELECT deptno, dname, loc


FROM dep;

ORACLE SQL y PL/SQL 4


1. Sentencias SQL Básicas SELECT

Seleccionando Columnas Especificas de Todos los Renglones

Seleccionando Columnas
Especificas
SQL> SELECT deptno, loc
2 FROM dept;

DEPTNO LOC
--------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON

1-7

Se puede usar la sentencia SELECT para desplegar columnas específicas de la tabla


especificando los nombres de columnas separadas por coma. El ejemplo despliega todos
los números de departamento y su número de localización desde la tabla DEPT.

En la cláusula SELECT, se especifican las columnas deseadas, en el orden en que se


quiere aparezcan en la salida. Por ejemplo, para desplegar la localización antes que el
número de departamento empezando de izquierda a derecha, se usa la siguiente
sentencia:

SELECT loc, deptno


FROM dep;

LOC DEPTNO
NEW YORK 10
DALLAS 20
CHICAGO 30
BOSTON 40

4 renglones seleccionados.

ORACLE SQL y PL/SQL 5


1. Sentencias SQL Básicas SELECT

Escribiendo Sentencias SQL

Escribiendo Sentencias SQL

•• Las
Las Sentencias
Sentencias SQLSQL no no son
son sensitivas
sensitivas aa
mayúsculas.
mayúsculas.
•• Las
Las Sentencias
Sentencias SQLSQL pueden
pueden sese de
de una
una oo
mas
mas líneas.
líneas.
•• Las
Las Palabras
Palabras Clave
Clave no no pueden
pueden serser
abreviadas
abreviadas o o dividir
dividir en
en varias
varias líneas.
líneas.
•• Las
Las Cláusulas
Cláusulas son usualmente
usualmente
colocadas en líneas separadas.
colocadas en líneas separadas.
•• Los
Los Tabuladores
Tabuladores yy márgenes
márgenes con con
usados
usados para
para facilitar
facilitar su
su lectura.
lectura.
1-5

Usando las siguientes simples reglas y guías, se pueden construir validas sentencias que
sean tanto fáciles de leer y editar:

 Las Sentencias SQL no son sensitivas a mayúsculas, al menos que lo indiquen.


 Las Sentencias SQL se pueden ingresar en una o varias líneas.
 Las Palabras Clave no se pueden abreviar ni dividir en varias líneas.
 Las Cláusulas son usualmente colocadas en líneas separadas para su lectura y
edición fácil.
 Las Tabulaciones se usan para hacer un código más legible.
 Las Palabras Clave típicamente se teclean en Mayúsculas; todas las otras
palabras, comos con los nombre de columnas y de tabla, son tecleadas en
minúsculas.

Ejecutando Sentencias SQL

 Coloca un semicolon (;) al final de la cláusula


 Coloca un slash (/) en la última línea en el buffer.
 Coloca un slash (/) en el prompt de SQL.
 Usa el comando RUN en SQL*Plus en el prompt de SQL.

ORACLE SQL y PL/SQL 6


1. Sentencias SQL Básicas SELECT

Encabezados de Columnas de Default

Encabezados Default de Columnas

•• Justificación
Justificación Default
Default
–– Izquierda:
Izquierda: Datos
Datos Fecha
Fecha yy Caracter
Caracter
–– Derecha:
Derecha: Datos
Datos Númericos
Númericos
•• Desplegado
Desplegado Default:
Default: Mayúsculas
Mayúsculas

1-8

Los encabezados de las columnas de tipo Caracter y Fecha y sus datos son justificados a
la izquierda dentro del ancho de la columna. Los encabezados y datos de columnas de
tipo Numérico son justificadas a la derecha.

SELECT ename, hiredat, sal


FROM emp;

ENAME HIREDATE SAL


KING 17-NOV-81 5000
BLAKE 01-MAY-81 2850
CLARK 09-JUN-81 2450
JONES 02-APR-81 2975
MARTIN 28-SEP-81 1250
ALLEN 20-FEB-81 1600
TURNER 08-SEP-81 1500
JAMES 03-DEC-81 950
WARD 22-FEB-81 1250
FORD 03-DEC-81 3000
SMITH 17-DEC-80 800
SCOTT 09-DEC-82 3000
ADAMS 12-JAN-83 1100
MILLER 23-JAN-82 1300

Los encabezados de las columnas de tipo Caracter y Fecha pueden ser truncados. El
encabezado es presentado en Mayúsculas por default. Se puede sobrescribir el
encabezado de las columnas mediante el uso de alias.

ORACLE SQL y PL/SQL 7


1. Sentencias SQL Básicas SELECT

ORACLE SQL y PL/SQL 8


1. Sentencias SQL Básicas SELECT

Expresiones Aritméticas

Expresiones Aritméticas

Crear
Crear expresiones
expresiones en datos
datos Numéricos y
Fecha
Fecha mediante
mediante el
el uso
uso de
de operadores
operadores
aritméticos.
aritméticos.
Operador Descripción

+ Adición

- Substracción

* Multiplicación

/ División

1-9

Se puede necesitar modificar la forma en que los datos son desplegados, ejecutar
cálculos, o verificar diferentes escenarios. Eso es posible usando expresiones aritméticas.
Una expresión aritmética puede contener nombres de columnas, valores constantes
numéricos, y operadores aritméticos.

Operadores Aritméticos

En el cuadro se listan los operadores aritméticos disponibles en SQL. Se pueden usar


operadores aritméticos en cualquier cláusula de una sentencia SQL excepto en la
cláusula FROM.

ORACLE SQL y PL/SQL 9


1. Sentencias SQL Básicas SELECT

Usando Operadores Aritméticos

Usando Operadores Aritméticos

SQL> SELECT ename, sal, sal+300


2 FROM emp;

ENAME SAL SAL+300


---------- --------- ---------
KING 5000 5300
BLAKE 2850 3150
CLARK 2450 2750
JONES 2975 3275
MARTIN 1250 1550
ALLEN 1600 1900
...
14 rows selected.

1-10

El ejemplo en el cuadro usa el operador de adición para calcular un salario incrementado


en 300 para todos los empleados y desplegar una nueva columna SAL+300 en la salida.

Se puede observar que la columna calculada resultante SAL+300 no es una nueva


columna en la tabla EMP; esta es solo de desplegado. Por default, el nombre de la nueva
columna toma el cálculo del que fue generada, en este caso, SAL+300.

Nota: SQL*PLUS ignora espacios en blanco antes y después del operador.

ORACLE SQL y PL/SQL 10


1. Sentencias SQL Básicas SELECT

Precedencia de Operadores

Precedencia de Operadores

/ + _
*
•• Multiplicación
Multiplicación yy división
división tienen
tienen
prioridad
prioridad sobre adición y substracción.
sobre adición y
•• Operadores
Operadores dede semejante
semejante prioridad
prioridad son
son
evaluados
evaluados de
de izquierda
izquierda aa derecha.
derecha.
•• Paréntesis
Paréntesis son
son usados
usados para
para forzar
forzar la
la
prioridad de evaluación y para clarificar
prioridad de evaluación y para clarificar
la
la sentencia.
sentencia.

1-11

Si una expresión aritmética contiene mas de un operador, la multiplicación y división son


evaluados primero. SI operadores dentro de una expresión son de semejante prioridad,
entonces la evaluación se realiza desde la izquierda hacia la derecha. Se pueden usar
paréntesis para forzar que la expresión dentro de los paréntesis se evalué primero.

ORACLE SQL y PL/SQL 11


1. Sentencias SQL Básicas SELECT

Precedencia de Operadores

Precedencia de Operadores

SQL> SELECT ename, sal, 12*sal+100


2 FROM emp;

ENAME SAL 12*SAL+100


---------- --------- ----------
KING 5000 60100
BLAKE 2850 34300
CLARK 2450 29500
JONES 2975 35800
MARTIN 1250 15100
ALLEN 1600 19300
...
14 rows selected.

1-12

El ejemplo despliega el nombre, salario y una compensación anual a los empleados. Este
calcula la compensación anual como la multiplicación del salario mensual por 12 más un
bono de única vez de 100. Se puede observar que la multiplicación es ejecutada antes de
la adición.

Nota: Usar paréntesis para reforzar el orden de precedencia estándar y mejorar la


claridad. Por ejemplo, la expresión se puede escribir como (12 * SAL) + 100 sin modificar
el resultado.

ORACLE SQL y PL/SQL 12


1. Sentencias SQL Básicas SELECT

Usando Paréntesis

Usando Paréntesis

SQL> SELECT ename, sal, 12*(sal+100)


2 FROM emp;

ENAME SAL 12*(SAL+100)


---------- --------- -----------
KING 5000 61200
BLAKE 2850 35400
CLARK 2450 30600
JONES 2975 36900
MARTIN 1250 16200
...
14 rows selected.

1-13

Se puede sobrescribir las reglas de precedencia mediante el uso de paréntesis para


especificar el orden en que los operadores se ejecutan.

El ejemplo despliega el nombre, salario y una compensación anual a los empleados. Este
calcula la compensación anual como el salario mensual más un bono de única vez de
100, multiplicado por 12. Por causa de los paréntesis, la adición toma prioridad sobre la
multiplicación.

ORACLE SQL y PL/SQL 13


1. Sentencias SQL Básicas SELECT

Definiendo un valor NULL

Definiendo un Valor NULL


•• Un
Un NULL
NULL es
es un
un valor
valor indisponible,
indisponible, no
no
asignado,
asignado, desconocido
desconocido o o inaplicable.
inaplicable.
•• Un
Un NULL
NULL nono es
es semejante
semejante aa cero
cero oo
blanco o espacio.
blanco o espacio.
SQL> SELECT ename, job, sal, comm
2 FROM emp;

ENAME JOB SAL COMM


---------- --------- --------- ---------
KING PRESIDENT 5000
BLAKE MANAGER 2850
...
TURNER SALESMAN 1500 0
...
14 rows selected.
1-14

Si un renglón carece de valor de dato para una columna en particular, ese valor es
llamado NULL, o que contiene un NULL. Un NULL es un valor no disponible, no asignado,
desconocido, o inaplicable,. UN NULL no es semejante a cero, espacio. Cero es un
número y espacio es un carácter.

Las columnas de cualquier tipo de dato pueden contener NULL. Sin embargo, algunos
constraints, NOT NULL y PRIMARY KEY, previenen que NULL sean usados en la
columna.

En la columna COMM en la tabla EMP, se puede observar que solo SALESMAN pueden
tener comisión. Otros empleados no tienen autorizada la comisión. Un valor NULL
representa este hecho. TURNER, el cual es un SALESMAN, no gana ninguna comisión.
Se observa que la comisión es cero y no NULL.

ORACLE SQL y PL/SQL 14


1. Sentencias SQL Básicas SELECT

Valores NULL

Valores Null
en Expresiones Aritméticas
Expresiones
Expresiones aritméticas
aritméticas que
que contienen
contienen un
un
valor
valor NULL
NULL se
se evalúan
evalúan a NULL.
NULL.
SQL> select ename, 12*sal+comm
2 from emp
3 WHERE ename='KING';

ENAME 12*SAL+COMM
---------- -----------
KING

1-15

Si el valor de una columna en una expresión aritmética es NULL, el resultado es NULL.


Por ejemplo, si intentas realizar una división con cero, se obtiene un error. Sin embargo, si
se divide un número por NULL, el resultado es NULL o desconocido.

En el ejemplo, el empleado KING no obtiene alguna comisión. Esto causa que al ser
NULL la columna COMM el resultado de la expresión aritmética sea NULL.

ORACLE SQL y PL/SQL 15


1. Sentencias SQL Básicas SELECT

Alias de Columnas

Definiendo Alias a Columnas

•• Renombre
Renombre el el encabezado
encabezado de
de columna
columna
•• Es
Es útil
útil con
con cálculos
cálculos
•• Inmediatamente
Inmediatamente después
después del
del nombre
nombre de
de
columna;
columna; opcionalmente
opcionalmente usar
usar palabra
palabra
clave
clave AS
AS entre
entre nombre
nombre de
de columna
columna y
alias
alias
•• Requiere
Requiere comillas
comillas si
si contiene
contiene espacios,
espacios,
caracteres especiales o mayúsculas
caracteres especiales o mayúsculas

1-16

Cuando se despliega el resultado de una consulta, SQL*PLUS normalmente usa el


nombre de la columna como el encabezado de columnas. En muchos casos, este
encabezado no es descriptivo y presenta dificultades de comprensión. Se puede modificar
el encabezado de la columna mediante el uso de un alias de la columna.

Se especifica el alias después de la columna en la lista del SELECT usando un espacio


como separador. Por default, alias en encabezados aparecen en Mayúsculas. Si el alias
contiene espacios, caracteres especiales (# o $), o es sensitivo a Mayúsculas, encierra el
alias entre comillas (““).

ORACLE SQL y PL/SQL 16


1. Sentencias SQL Básicas SELECT

Alias de Columna

Usando Alias de Columnas


SQL> SELECT ename AS name, sal salary
2 FROM emp;

NAME SALARY
------------- ---------
...

SQL> SELECT ename "Name",


2 sal*12 "Annual Salary"
3 FROM emp;

Name Annual Salary


------------- -------------
...

1-17

El primer ejemplo despliega el nombre y salario de todos los empleados. Se observa que
la palabra clave opcional AS se usa antes del nombre de alias de la columna. El resultado
de la consulta es semejante cuando se hace uso o no de la palabra clave AS. También se
puede ver que la sentencia SQL tiene los alias NAME y SALARY en minúsculas, sin
embargo el resultado de la consulta muestra los encabezados de las columnas en
mayúsculas. Como se menciono, los encabezados de las columnas aparecen en
mayúsculas por default.

El segundo ejemplo muestra el nombre y salario anual de todos los empleados. Debido a
que Annual Salary contiene un espacio, este fue encerrado entre comillas . Se puede
observar que el encabezado de la columnas en la salida es exactamente igual al alias de
la columna.

ORACLE SQL y PL/SQL 17


1. Sentencias SQL Básicas SELECT

Operador de Concatenación

Operador de Concatenación

•• Concatenar
Concatenar columnas
columnas o o cadenas
cadenas de
de
caracteres
caracteres aa otras
otras columnas
columnas
•• Se
Se representa
representa mediante
mediante dos
dos barras
barras
verticales
verticales (||)
•• Crea
Crea una
una columna
columna resultante
resultante que
que es una
una
expresión
expresión caracter
caracter

1-18

Se pueden ligar columnas a otras columnas, expresiones aritméticas, o valores


constantes para crear una expresión carácter mediante el uso del operador de
concatenación (||).

Usando el Operador de
Concatenación
SQL> SELECT ename||job AS "Employees"
2 FROM emp;

Employees
-------------------
KINGPRESIDENT
BLAKEMANAGER
CLARKMANAGER
JONESMANAGER
MARTINSALESMAN
ALLENSALESMAN
...
14 rows selected.

1-19

ORACLE SQL y PL/SQL 18


1. Sentencias SQL Básicas SELECT

En el ejemplo el nombre y puesto son concatenados, y ellos con dejados en el alias


Employees. Se observa que las dos columnas son combinadas para hacer una sola
columna de salida. La palabra clave AS en la sentencia SELECT hace fácil su lectura.

ORACLE SQL y PL/SQL 19


1. Sentencias SQL Básicas SELECT

Literal de Cadenas de Caracteres

Literal de Cadena de Caracteres

•• Una
Una literal
literal es
es un
un caracter,
caracter, un
un número,
número, o
o
una
una fecha
fecha incluido
incluido en
en lista
lista del
del SELECT.
SELECT.
•• Valores
Valores dede Literal
Literal de
de Fecha
Fecha y Caracter
Caracter
deben
deben estar encerrados dentro de
estar encerrados dentro de
apostrofes.
apostrofes.
•• Cada
Cada cadena
cadena de de caracteres
caracteres es es
desplegado
desplegado una una vez
vez por
por cada
cada renglon
renglon
recuperado.
recuperado.

1-20

Una Literal es un carácter, un número, o una fecha que se incluye en la lista del SELECT
y que no es un nombre de columna o alias de columna. Este se imprime por cada renglón
recuperado. Una cadena Literal de libre formato puede ser incluida en el resultado de una
consulta y es tratada de manera semejante a una columna de la lista del SELECT.

Literales de Fecha y Carácter deben ser encerradas dentro de apostrofes (‘ ‘); Literales
Numéricas no lo requieren.

ORACLE SQL y PL/SQL 20


1. Sentencias SQL Básicas SELECT

Literal de Cadenas de Caracteres

Usando Literales de Cadenas de


Caracteres

SQL> SELECT ename ||' is a '||job


2 AS "Employee Details"
3 FROM emp;
Employee
Employee Details
Details
-------------------------
-------------------------
KING
KING is
is aa PRESIDENT
PRESIDENT
BLAKE
BLAKE is
is aa MANAGER
MANAGER
CLARK
CLARK is
is aa MANAGER
MANAGER
JONES
JONES is
is aa MANAGER
MANAGER
MARTIN
MARTIN is
is aa SALESMAN
SALESMAN
...
...
14
14 rows
rows selected.
selected.

1-21

El ejemplo despliega los nombre y puestos de todos los empleados la columna tiene el
encabezado Employee Details. Se puede ver que los espacios entre apostrofes en la
sentencia SELECT incorporan una lectura mas fácil de la salida.

En el siguiente ejemplo, el nombre y el salario para cada empleado son concatenados con
una literal para tener los renglones recuperados más manejables.

SELECT ename || ‘ : 1 Mes de Salario = ‘|| SAL Monthly

MONTHLY
KING : 1 Mes de Salario = 5000
BLAKE: 1 Mes de Salario = 2850
CLARK : 1 Mes de Salario = 2450
JONES : 1 Mes de Salario = 2975
MARTIN : 1 Mes de Salario = 1250
ALLEN : 1 Mes de Salario = 1600
TURNER : 1 Mes de Salario = 1500
JAMES : 1 Mes de Salario = 950
WARD : 1 Mes de Salario = 1250
FORD : 1 Mes de Salario = 3000
SMITH : 1 Mes de Salario = 800
SCOTT : 1 Mes de Salario = 3000
ADAMS : 1 Mes de Salario = 1100
MILLER : 1 Mes de Salario = 1300

ORACLE SQL y PL/SQL 21


1. Sentencias SQL Básicas SELECT

Renglones Duplicados

Renglones Duplicados
El
El desplegado
desplegado default
default de
de consultas
consultas es
es
todos
todos los
los renglones,
renglones, incluyendo
incluyendo
renglones
renglones duplicados.
duplicados.
SQL>
SQL> SELECT
SELECT deptno
deptno
22 FROM
FROM emp;
emp;

DEPTNO
---------
10
30
10
20
...
14 rows selected.

1-22

Al menos que se indique otra cosa, SQL*PLUS despliega los resultados de una consulta
sin eliminar los registros duplicados. EL ejemplo muestra todos los números de
Departamento de la tabla EMP. Se puede ver que se repiten números.

ORACLE SQL y PL/SQL 22


1. Sentencias SQL Básicas SELECT

Eliminado Renglones Duplicados

Eliminando Renglones Duplicados


Eliminación de renglones duplicados
mediante el uso de la palabra clave
DISTINCT en la cláusula SELECT.
SQL> SELECT DISTINCT deptno
2 FROM emp;

DEPTNO
---------
10
20
30

1-23

Para eliminar registros duplicados en el resultado, incluye la palabra clave DISTINCT en


la cláusula SELECT inmediatamente después de la palabra clave SELECT. En el ejemplo,
la tabla EMP tiene catorce renglones pero son solo tres números únicos de departamento
en la tabla.

Se pueden especificar múltiples columnas después del calificador DISTINCT. El


calificador DISTINCT afecta todas las columnas seleccionadas y el resultado es cualquier
combinación distinta de las columnas.

SELECT DISTINCT deptno, Job


FROM emp;

DEPTNO JOB
10 CLERK
10 MANAGER
10 PRESIDENT
20 ANALYST
20 CLERK
20 MANAGER
30 CLERK
30 MANAGER
30 SALESMAN

ORACLE SQL y PL/SQL 23


1. Sentencias SQL Básicas SELECT

SQL Y SQL*PLUS

Interacción de SQL y SQL*Plus


Sentencia SQL Sentencia SQL
Buffer

Servidor
SQL*Plus

Comandos Resultados de Consulta


SQL*Plus
Reporte Formateado

1-24

SQL es lenguaje de comandos para comunicarse con el Servidor ORACLE desde


cualquier herramienta o aplicación. Oracle SQL contiene muchas extensiones. Cuando se
teclea una sentencia SQL, esta es almacenada en una parte de la memoria llamada buffer
SQL y permanece allí hasta se ingresa una nueva sentencia.

SQL*PLUS es una herramienta de ORACLE que reconoce y somete las sentencias SQL
al Servidor ORACLE para su ejecución y que contiene su propio lenguaje de comandos.

Características de SQL

 Puede ser usado por un rango de usuarios, incluyendo aquellos con poca o sin
experiencia
 Es un lenguaje no procedural
 Reduce el monto de tiempo requerido para la creación y mantenimiento de
sistemas
 Es un lenguaje semejante al Ingles

Características de SQL*PLUS

 Acepta sentencias a la medida


 Proporciona un editor en línea para modificar sentencias SQL
 Controla parámetros del Medio Ambiente
 Formatea resultados de consultas en reportes básicos
 Acceso a Bases de Datos locales y remotas

ORACLE SQL y PL/SQL 24


1. Sentencias SQL Básicas SELECT

SQL y SQL*PLUS

Sentencias SQL Versus


Comandos SQL*Plus
SQL SQL*Plus
• Un Lenguaje • Un Medio Ambiente
• Estándar ANSI • Propiedad de Oracle
• Palabras Clave no • Palabras Clave pueden
pueden ser abreviadas ser abreviadas
• Sentencias de • Los comandos no
manipulación de datos permiten manipulación
y definición de tablas de valores en la Base
en la Base de Datos de Datos

Sentencias Buffer Comandos Buffer


SQL SQL SQL*Plus SQL*Plus

1-25

La siguiente tabla compara SQL y SQL*PLUS:

SQL SQL*PLUS
Es un lenguaje para comunicarse Reconoce sentencias SQL y las envía al
con el Servidor ORACLE para servidor
acceder datos
Esta basado en el estándar SQL Es una interfase propietaria de ORACLE
para ejecutar sentencias SQL
Manipula datos y definiciones de No permite la manipulación de valores en
tablas en la Base de Datos la Base de Datos
No tiene un carácter de Tiene el guión (-) como un carácter de
continuación continuación si el comando es mas largo
que una línea
No permite abreviaturas Puede tener abreviaturas
Usa funciones para ejecutar algún Usa comandos para formatear datos
formateo

ORACLE SQL y PL/SQL 25


1. Sentencias SQL Básicas SELECT

SQL*PLUS

Panorama de SQL*Plus
•• Conectarse
Conectarse aa SQL*Plus.
SQL*Plus.
•• Describir
Describir estructura
estructura de
de la
la tabla.
tabla.
•• Editar
Editar la
la sentencia
sentencia SQL.
SQL.
•• Ejecutar
Ejecutar SQL
SQL desde
desde SQL*Plus.
SQL*Plus.
•• Salvar
Salvar sentencia
sentencia SQL
SQL aa archivos
archivos yy
adicionar
adicionar sentencias
sentencias SQL
SQL aa archivos.
archivos.
•• Ejecutar
Ejecutar archivos
archivos salvados.
salvados.
•• Cargar
Cargar comandos
comandos desde
desde un
un archivo
archivo al
al
buffer
buffer para
para su
su edición..
edición..
1-26

SQL*PLUS es un medio ambiente en el que se puede realizar lo siguiente:

 Ejecutar sentencias SQL para recuperar, modificar, adicionar y eliminar datos


desde la Base de Datos
 Formatear, realizar calculos, almacenar, e imprimir resultados de la consulta en
forma de reportes
 Crear archivos que almacenen sentencias SQL de uso repetitivo en ocasiones
futuras

Los comandos SQL*PLUS pueden ser divididos en las siguientes categorías:

Categoría Propósito
Medio Afectan el comportamiento general de las sentencias SQL
Ambiente para la sesión
Formato Formato de resultados de la consulta
Manipulación Salva sentencias en archivos de texto y ejecuta sentencias
de Archivos desde archivos de texto
Ejecución Envía sentencias SQL al Servidor ORACLE
Edición Modifica sentencias SQL en el Editor
Interacción Permiten la creación y paso de variables a las sentencias
SQL, imprimir valores de las variables, e imprimir mensajes a
la pantalla
Misceláneos Son diferentes comandos para conectarse a la Base de
Datos, manipular el medio ambiente, y desplegar definiciones
de columnas

ORACLE SQL y PL/SQL 26


1. Sentencias SQL Básicas SELECT

Conectándose en SQL*PLUS

Conectándose en SQL*Plus
• Desde un Medio Ambiente Windows:

• Desde la línea de comandos:


sqlplus [username[/
username[/password
password
[@database]]]
database]]]
1-27

La manera de invocar SQL*PLUS depende del tipo de sistema operativo o medio


ambiente Windows en que se este trabajando.

Para conectarse mediante un medio ambiente Windows:

1. Selecciona Start—>Programs—>Oracle for Windows NT—>SQL*Plus 8.0.


2. Llena los datos de Username, Password y database

Para conectarse desde un medio ambiente de líneas de comando:

1. Conectarse a la maquina
2. Teclear el comando SQL*PLUS como se muestra

En el comando:

Username Es el usuario de la Base de Datos


Password Es el password del usuario en la Base de Datos (en la línea de
comandos es visible)
@DataBase Es la cadena de conexión a la Base de Datos

Nota: para garantizar la integridad del password no lo teclee en la línea de comandos, allí
solo digite el usuario y espere la solicitud del password.

ORACLE SQL y PL/SQL 27


1. Sentencias SQL Básicas SELECT

Desplegando la Estructura de una Tabla

Desplegando Estructura de Tablas

Usar
Usar el
el comando
comando SQL*Plus
SQL*Plus DESCRIBE
DESCRIBE
para
para desplegar
desplegar la
la estructura de
de una
una tabla.
tabla.
DESC[RIBE]
DESC[RIBE] nombre_tabla
nombre_tabla

1-28

En SQL*PLUS, se puede desplegar la estructura de una tabla usando el comando


DESCRIBE. El resultado del comando es la visualización de los nombres de las columnas
y su tipo de dato, así como si una columna debe contener datos.

En la sintaxis:

nombre_tabla Es el nombre una tabla, vista o sinónimo existente y


accesible por el usuario

ORACLE SQL y PL/SQL 28


1. Sentencias SQL Básicas SELECT

Desplegando la Estructura de una Tabla

Desplegando
Desplegando Estructura
Estructura de
de Tablas

SQL>
SQL> DESCRIBE
DESCRIBE dept
dept

Name
Name Null?
Null? Type
Type
-----------------
----------------- --------
-------- ------------
------------
DEPTNO
DEPTNO NOT
NOT NULL
NULL NUMBER(2)
NUMBER(2)
DNAME
DNAME VARCHAR2(14)
VARCHAR2(14)
LOC
LOC VARCHAR2(13)
VARCHAR2(13)

1-29

El ejemplo muestra la estructura de la tabla DEPT.

En el resultado:

NULL? Indica si una columna debe contener datos; NOT NULL indica
que una columna debe tener datos
TYPE Despliega el tipo de dato para una columna

Los tipos de dato son descritos en la siguiente tabla:

Tipo de Dato Descripción


NUMBER (p, s) Valor Numérico con un máximo de dígitos p, con s dígitos a la
derecha del punto decimal
VARCHAR2 (s) Valor Caracter de longitud variable de un tamaño máximo s
DATE Valor de Fecha y Tiempo entre el 1/Enero/4712 a. c. y
31/Diciembre/9999 d. c.
CHAR (s) Valor Caracter de longitud fija de tamaño s

ORACLE SQL y PL/SQL 29


1. Sentencias SQL Básicas SELECT

Comandos de Edición de SQL*PLUS

Comandos
Comandos de
de Edición de
de SQL*Plus
SQL*Plus

•• A[PPEND]
A[PPEND] texto
texto
•• C[HANGE]
C[HANGE] // anterior
anterior // nuevo
nuevo
•• C[HANGE]
C[HANGE] // texto
texto //
•• CL[EAR]
CL[EAR] BUFF[ER]
BUFF[ER]
•• DEL
DEL
•• DEL
DEL n
n
•• DEL
DEL m
mnn

1-30

Los comandos SQL*PLUS son tecleados una línea cada vez y no son almacenados en el
buffer SQL.

Comando Descripción
A[PPEND] texto Adiciona texto al final de línea actual
C[HANGE] / anterior / nuevo Cambia el texto anterior al nuevo en la línea actual
C[HANGE] / texto / Elimina el texto de la línea actual
CL[EAR] BUFF[ER] Elimina todas las líneas del buffer SQL
DEL Elimina la línea actual
DEL n Elimina n líneas
DEL m n Elimina de la línea m hasta la n

Directrices

 Al presionar [Enter] antes de completar un comando, SQL*PLUS despliega el


número de línea.
 Se termina cualquier buffer SQL tecleando alguno de los caracteres de
terminación (semicolon o slash) o presionando [Enter] dos veces. Se despliega
entonces el apuntador SQL.

ORACLE SQL y PL/SQL 30


1. Sentencias SQL Básicas SELECT

Comandos de Edición de SQL*PLUS

Comandos
Comandos de
de Edición de
de SQL*Plus
SQL*Plus
•• I[NPUT]
I[NPUT]
•• I[NPUT]
I[NPUT] texto
texto
•• L[IST]
L[IST]
•• L[IST]
L[IST] nn
•• L[IST]
L[IST] m
m nn
•• R[UN]
R[UN]
•• n
n
•• n
n texto
texto
•• 00 texto
texto
1-31

Comando Descripción
I[NPUT] Inserta un número indefinido de líneas
I[NPUT] texto Inserta una línea conteniendo texto
L[IST] Lista todas las líneas en el buffer SQL
L[IST] n Lista una línea (especificada por n)
L[IST] m n Lista un rango de líneas (de m hasta n)
R[UN] Despliega y ejecuta la sentencia actual en el buffer
SQL
n Especifica cual es la línea actual
n texto Remplaza la línea con el texto
0 texto Inserta una línea antes de la línea 1

Nota: Se puede solo teclear un comando SQL*PLUS en cada ocasión que aparece el
apuntador SQL. Los comandos SQL*PLUS no son almacenados en el buffer. Para
continuar un comando SQL*PLUS en la siguiente línea, terminar la primer línea con un
guión (-).

ORACLE SQL y PL/SQL 31


1. Sentencias SQL Básicas SELECT

Comandos SQL*PLUS de Archivo

Comandos SQL*Plus de Archivo

•• SAVE
SAVE nombre_archivo
nombre_archivo
•• GET
GET nombre_archivo
nombre_archivo
•• START
START nombre_archivo
nombre_archivo
•• @
@ nombre_archivo
nombre_archivo
•• EDIT
EDIT nombre_archivo
nombre_archivo
•• SPOOL
SPOOL nombre_archivo
nombre_archivo
•• EXIT
EXIT

1-32

Las sentencias SQL se comunican con el servidor ORACLE. Los comandos SQL*PLUS
controlan el medio ambiente, formatean los resultados y manejan archivos. Se pueden
utilizar los siguientes comandos:

Comando Descripción
SAV[E] nombre_archivo [.ext] Salva el contenido actual del buffer SQL a un
[REP[LACE] app[END] ] archivo. Se usa el APPEND para adicionarlo a un
archivo existente; se usa REPLACE para
sobrescribir un archivo existente. La extensión de
default es sql.
GET nombre_archivo [.ext] Escribe el contenido de un archivo previamente
salvado, al buffer SQL. La extensión de default es
sql.
STA[RT] nombre_archivo [.ext] Ejecuta el contenido de un archivo prevuiamente
salvado.
@ nombre_archivo Ejecuta el contenido de un archivo prevuiamente
salvado (similar a START).
ED[IT] Invoca el editor de texto y salva el contenido del
buffer a un archivo llamado afiedt.buf
ED[IT] nombre_archivo[.ext] Invoca el editor de texto para editar el contenido del
archivo previamente salvado.
SPO[OL] [nombre_archivo[.ext] Almacena los resultados en un archivo. OFF cierra
| OFF | OUT] el archivo generado. OUT cierra el archivo de salida
y envía los resultados a la impresora del sistema.
EXIT Abandona SQL*PLUS

ORACLE SQL y PL/SQL 32


1. Sentencias SQL Básicas SELECT

Resumen

SELECT
SELECT [DISTINCT]
[DISTINCT] {*,columna
{*,columna [alias],...}
[alias],...}
FROM
FROM tabla;
tabla;

Usar
Usar SQL*Plus
SQL*Plus como
como medio
medio ambiente
ambiente para:
para:
•• Ejecutar
Ejecutar sentencias
sentencias SQL
SQL
•• Editar
Editar sentencias
sentencias SQL
SQL

1-33

ORACLE SQL y PL/SQL 33


1. Sentencias SQL Básicas SELECT

Panorama de la Practica

•• Seleccionar
Seleccionar todos
todos los
los datos
datos de
de diferentes
diferentes
tablas
tablas
•• Describir
Describir la
la estructura
estructura de
de tablas
tablas
•• Realizar
Realizar cálculos
cálculos aritméticos
aritméticos yy especificar
especificar
nombres
nombres dede columnas
columnas
•• Usar
Usar el
el editor
editor de
de SQL*Plus
SQL*Plus

1-34

Esta es la primera de varias prácticas. La solución (si se requiere) se encuentra en el


Apéndice A. Las prácticas pretenden introducir todos los puntos tratados en la lección.
Las preguntas 2 a 4 se realizan en la hoja.

En cualquier practica se encuentran las leyendas “si tiene tiempo” o “desea pruebas
extras”. Esos puntos los puede desarrollar una vez que concluyó con todos los demás.

Realice la práctica despacio y con precisión. Puede experimentar con los comandos para
salvar y ejecutar archivos. Si tiene preguntas en cualquier momento solicite la atención
del instructor.

Preguntas a resolver en la hoja

Para las preguntas 2 a 4 circule Falso o Verdadero

ORACLE SQL y PL/SQL 34


1. Sentencias SQL Básicas SELECT

Practica 1

1. Inicia una sesión en SQL*PLUS usando el usuario y password proporcionado por


el instructor.

2. Los comandos SQL*PLUS accesan la Base de Datos?

Falso / Verdadero

3. La siguiente sentencia SQL se ejecuta correctamente:

SQL> SELECT ename, job, sal salario


2 FROM emp;

Falso / Verdadero

4. La siguiente sentencia SQL se ejecuta correctamente:

SQL> SELECT *
2 FROM salgrade;

Falso / Verdadero

5. Existen cuatro códigos de error en esta sentencia. Puedes identificarlos?

SQL> SELECT empno, ename


2 salary x 12 Salario Anual
3 FROM emp;

6. Muestra la estructura de la tabla DEPT. Selecciona todos los datos de la tabla


DEPT.

Name Null? Type


----------- -------- ------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)

DEPTNO DNAME LOC


------ ---------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

ORACLE SQL y PL/SQL 35


1. Sentencias SQL Básicas SELECT

Practica 1 (continuación)

7. Muestra la estructura de la tabla EMP. Crea una consulta que despliegue el


nombre, puesto, fecha de contratación y número de empleado para cada
empleado, presentando primero el número de empleado. Salva la sentencia SQL
en un archive de nombre p1q7.sql.

Name Null? Type


--------- -------- -------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)

8. ejecuta la consulta del archive p1q7.sql.

EMPNO ENAME JOB HIREDATE


----- ------- ----------- ---------
7839 KING PRESIDENT 17-NOV-81
7698 BLAKE MANAGER 01-MAY-81
7782 CLARK MANAGER 09-JUN-81
7566 JONES MANAGER 02-APR-81
7654 MARTIN SALESMAN 28-SEP-81
7499 ALLEN SALESMAN 20-FEB-81
7844 TURNER SALESMAN 08-SEP-81
7900 JAMES CLERK 03-DEC-81
7521 WARD SALESMAN 22-FEB-81
7902 FORD ANALYST 03-DEC-81
7369 SMITH CLERK 17-DEC-80
7788 SCOTT ANALYST 09-DEC-82
7876 ADAMS CLERK 12-JAN-83
7934 MILLER CLERK 23-JAN-82

14 rows selected.

9. Crea una consulta que despliegue puestos únicos de la tabla EMP.

JOB
-----------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN

ORACLE SQL y PL/SQL 36


1. Sentencias SQL Básicas SELECT

Si tienes tiempo, completa los siguientes ejercicios:

10. Carga el archive p1q7.sql al buffer SQL. Denomina los encabezados de columna
Emp #, Empleado, Puesto y Fecha Alta respectivamente. Ejecuta la consulta.

Emp # Empleado Puesto Fecha Alta


----- --------- ---------- ---------------
7839 KING PRESIDENT 17-NOV-81
7698 BLAKE MANAGER 01-MAY-81
7782 CLARK MANAGER 09-JUN-81
7566 JONES MANAGER 02-APR-81
7654 MARTIN SALESMAN 28-SEP-81
7499 ALLEN SALESMAN 20-FEB-81
7844 TURNER SALESMAN 08-SEP-81
7900 JAMES CLERK 03-DEC-81
7521 WARD SALESMAN 22-FEB-81
7902 FORD ANALYST 03-DEC-81
7369 SMITH CLERK 17-DEC-80
7788 SCOTT ANALYST 09-DEC-82
7876 ADAMS CLERK 12-JAN-83
7934 MILLER CLERK 23-JAN-82

14 rows selected.

11. Despliega el nombre concatenado con el puesto, separado por una coma y
espacio, y denomina la columna Empleado y Cargo.

Empleado y Cargo
-------------------
KING, PRESIDENT
BLAKE, MANAGER
CLARK, MANAGER
JONES, MANAGER
MARTIN, SALESMAN
ALLEN, SALESMAN
TURNER, SALESMAN
JAMES, CLERK
WARD, SALESMAN
FORD, ANALYST
SMITH, CLERK
SCOTT, ANALYST
ADAMS, CLERK
MILLER, CLERK

14 rows selected.

ORACLE SQL y PL/SQL 37


1. Sentencias SQL Básicas SELECT

Si deseas pruebas extra, completa los siguientes ejercicios:

12. Crea una consulta para desplegar todos los datos de la tabla EMP. Separa cada
columna con una coma. Denomina la columna SALIDA.

SALIDA
-------------------------------------------------
7839,KING,PRESIDENT,,17-NOV-81,5000,,10
7698,BLAKE,MANAGER,7839,01-MAY-81,2850,,30
7782,CLARK,MANAGER,7839,09-JUN-81,2450,,10
7566,JONES,MANAGER,7839,02-APR-81,2975,,20
7654,MARTIN,SALESMAN,7698,28-SEP-81,1250,1400,30
7499,ALLEN,SALESMAN,7698,20-FEB-81,1600,300,30
7844,TURNER,SALESMAN,7698,08-SEP-81,1500,0,30
7900,JAMES,CLERK,7698,03-DEC-81,950,,30
7521,WARD,SALESMAN,7698,22-FEB-81,1250,500,30
7902,FORD,ANALYST,7566,03-DEC-81,3000,,20
7369,SMITH,CLERK,7902,17-DEC-80,800,,20
7788,SCOTT,ANALYST,7566,09-DEC-82,3000,,20
7876,ADAMS,CLERK,7788,12-JAN-83,1100,,20
7934,MILLER,CLERK,7782,23-JAN-82,1300,,10

14 rows selected.

ORACLE SQL y PL/SQL 38

S-ar putea să vă placă și