Documente Academic
Documente Profesional
Documente Cultură
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
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:
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 la sintaxis:
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.
SQL> SELECT *
2 FROM dept;
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:
Seleccionando Columnas
Especificas
SQL> SELECT deptno, loc
2 FROM dept;
DEPTNO LOC
--------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON
1-7
LOC DEPTNO
NEW YORK 10
DALLAS 20
CHICAGO 30
BOSTON 40
4 renglones seleccionados.
•• 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:
•• 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.
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.
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
1-10
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
Precedencia de Operadores
Precedencia de Operadores
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.
Usando Paréntesis
Usando Paréntesis
1-13
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.
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.
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
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.
Alias de 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
Alias de Columna
NAME 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.
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
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
•• 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.
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.
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
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.
DEPTNO
---------
10
20
30
1-23
DEPTNO JOB
10 CLERK
10 MANAGER
10 PRESIDENT
20 ANALYST
20 CLERK
20 MANAGER
30 CLERK
30 MANAGER
30 SALESMAN
SQL Y SQL*PLUS
Servidor
SQL*Plus
1-24
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
SQL y SQL*PLUS
1-25
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
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
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
Conectándose en SQL*PLUS
Conectándose en SQL*Plus
• Desde un Medio Ambiente Windows:
1. Conectarse a la maquina
2. Teclear el comando SQL*PLUS como se muestra
En el comando:
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.
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 la sintaxis:
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
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
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
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 (-).
•• 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
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
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
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.
Practica 1
Falso / Verdadero
Falso / Verdadero
SQL> SELECT *
2 FROM salgrade;
Falso / Verdadero
Practica 1 (continuación)
14 rows selected.
JOB
-----------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
10. Carga el archive p1q7.sql al buffer SQL. Denomina los encabezados de columna
Emp #, Empleado, Puesto y Fecha Alta respectivamente. Ejecuta la consulta.
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.
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.