Anda di halaman 1dari 50

Diapositivas Resumen SQL

ORACLE Semana 1
Especializacin en Desarrollo de
soluciones Informticas
Universidad del Cauca
Miguel Angel Nio Zambrano

Recursos del Curso


Profesor:
Mag. Miguel Angel Nio Zambrano
Oficina: 422
Correos: manzamb@unicauca.edu.co,
manzamb@hotmail.com.
Celular: 3005527545

CD del Curso
Sitio Web: http://
pis.unicauca.edu.co/moodle-2.1.2/course/
view.php?id=397

Instalacin de ORACLE
Proceso de instalacin ORACLE
Servidor en UV04
Cliente en Ternurita.

Trabajando con los Clientes


sqlplus
Iqlplus
PLSQL Developer
Editor npp

Usuarios del curso


User name
espXX donde XX es 01, 02, 03, 10,
16

Password
oracle

Host string / Connection Identifier


bd9ipro

Universidad del Cauca


FIET Departamento de
Sistemas

Sentencias SQL
Recuperacin de datos
SELECT

Manipulacin de datos (DML)


INSERT / UPDATE / DELETE / MERGE

Definicin de datos (DDL)


CREATE / ALTER / DROP / RENAME / TRUNCATE

Control de Transacciones
COMMIT / ROLLBACK / SAVEPOINT

Control de datos (DCL)


GRANT / REVOKE
Universidad del Cauca
FIET Departamento de
Sistemas

Recuperacin de Datos
SELECT FROM WHERE
GROUP BY HAVING

Ejecutar Comandos SQL (1)


1. Seleccionando Datos
a. Obtener todos los datos de los
Empleados.
b. Obtener todos los datos de los clientes.
c. Obtener el nombre, cargo, salario y
numero de departamento de los
empleados.
d. Obtener el nombre y salario de los
empleados, calculando un bono del
10%.
e. Obtener todos los cargos de la

Operadores de comparacin
Operador es:

=
Igual a
>
Mayor que
>= Mayor o igual que
<
Menor que
<= Menor o igual que
<> Diferente a
(!=)

(^=)

Otros Operadores

BETWEEN AND Entre dos valores (incluidos)


IN (Lista)
En la lista de valores dados
LIKE
Concuerda con un patrn
IS NULL
Es un valor nulo

Universidad del Cauca


FIET Departamento de
Sistemas

Ejecutar Comandos SQL (2)


2. Restringiendo Datos
a. Obtener una lista de nombre y salario de
empleados que ganen menos de $1.000.000.
b. Obtener el nombre de los empleados cuyo cargo
es VENDEDOR.
c. Obtener el nombre de los empleados contratados a
partir del ao 2002.
d. Obtener una lista de nombre y salario de
empleados que ganen ms de $100.000 y menos
de $250.000 pesos.
e. Obtener un lista de nombres de empleados que
sean OFICINISTA y ANALISTA.

Ejecutar Comandos SQL (3)


2. Restringiendo Datos
f. Obtener una lista de nombre de
empleados cuyo nombre inicie por el
carcter M.
g. Obtener una lista de nombre de
empleados cuyo nombre tenga por
segundo carcter en el nombre la letra
O.
h. Obtener la lista de nombres de
empleados que no tienen comision.

Condiciones lgicas
AND

P AND Q

TRUE

TRUE

TRUE

TRUE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

TRUE

NULL

NULL

FALSE

NULL

FALSE

NULL

TRUE

NULL

NULL

FALSE

FALSE

NOT
P

NOT P

TRUE

FALSE

FALSE

TRUE

NULL

NULL

P OR Q

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

FALSE

FALSE

TRUE

NULL

TRUE

FALSE

NULL

NULL

NULL

TRUE

TRUE

NULL

FALSE

NULL

Universidad del Cauca FIET Departamento de Sistemas

OR

Ejecutar Comandos SQL (3)


3. Restringiendo Datos con Condiciones
lgicas
a. Obtener una lista de nombre de empleados
cuyo nombre tenga en cualquier parte el
carcter N y adems, gane ms de
$120.000.
b. Obtener una lista de nombre de empleados
cuyo nombre tenga por segundo carcter en
el nombre la letra O la letra A.
c. Obtener la lista de nombres de empleados
que no sean ni GERENTE, ni VENDEDOR.

Ordenar los resultados


SELECT
* | { [DISTINCT] columna | expresin [alias], }
FROM
Tabla
[WHERE Condicion(es) ]
[ORDER BY
{columna | expresin} [ASC | DESC] , ];

La clusula ORDER BY ordena las filas:


ASC
Orden ascendente (por defecto)
DESC Orden descendente

La clusula ORDER BY debe ser la ltima de la


sentencia SELECT
Los valores NULL:
En orden ASC van al final
En orden DESC van al principio
Universidad del Cauca
FIET Departamento de
Sistemas

Ejecutar Comandos SQL (4)


4. Ordenando los Datos
a. Obtener una lista de nombre y el salario de los empleados
ordenados de menor a mayor salario.
b. Obtener una lista de nombre y comisin de los empleados
ordenada de mayor a menor comisin.
c. Obtener la lista de nombres y salario anual de los
empleados, colocar como alias de columna Salario Anual
y ordenar por el alas de menor a mayor salario anual.
d. Ordenar por nombre y luego por salario la tabla
empleados.
e. Mostrar la tabla empleados ordenada por la segunda
columna, teniendo en cuenta, que la posicin de dicha
columna, deber ser la misma que se uso, al momento de
crear la tabla

Tipos de funciones SQL


Funciones de
Fila simple
Funciones

Funciones de
Mltiples filas

Universidad del Cauca


FIET Departamento de
Sistemas

Funciones de fila simple


Funciones de fila simple

Caracteres
Nmeros
Fecha
Conversin
General

Manejo de maysculas y minsculas

LOWER
UPPER
INITCAP
CONCAT
SUBSTR
LENGTH
INSTR
LPAD
RPAD
TRIM
REPLACE
Manejo de caracteres

Universidad del Cauca


FIET Departamento de
Sistemas

Funciones de fechas

Oracle almacena las fechas en un formato numrico


interno que incluye: centuria, ao, mes, da, hora,
minutos y segundos
Fechas validas entre 1-JAN-4712 AC y 31-DIC-9999
La fecha Mayo 15 de 2003 a las 10:12:15 se almacena

Centuria

Ao

Mes

Da

Hora

Minutos

Segund
os

20

15

10

12

15

El formato de despliegue por defecto es DD-MON-RR,


aunque el administrador puede cambiarlo, y cada
usuario en su sesin tambin
El formato RR facilita almacenar fechas del siglo XXI
estando en el siglo XX especificando slo dos dgitos
Tambin permite que almacene fechas del siglo XX
estando en el siglo XXI especificando slo dos dgitos
Se uso para solucionar en parte el problema del cambio
de milenio
Universidad del Cauca FIET Departamento de Sistemas

Aritmtica de fechas
OPERACION

RESULTADO

DESCRIPCIN

Fecha + Nmero

Fecha

Adiciona un Nmero de das a la Fecha

Fecha Nmero

Fecha

Resta un Nmero de das a la Fecha

Fecha1 Fecha2

Nmero

Resta a Fecha1 el valor de la Fecha2 y


obtiene el nmero de das entre las dos
fechas

Fecha

Adiciona un Nmero de horas a la Fecha

Fecha +
Nmero/24

Universidad del Cauca FIET Departamento de Sistemas

Funciones de fechas
FUNCION

DESCRIPCIN

MONTHS_BETWEEN (fecha1, fecha2)

Encuentra el nmero de meses entre dos fechas.


El resultado es positivo si la fecha1 es ms
reciente que la fecha2 y es negativo si la fecha1
es ms reciente que la fecha2.

ADD_MONTHS (fechaorigen, n)

Adiciona n meses calendario a la fechaorigen. El


valor de n debe ser un entero positivo o negativo

NEXT_DAY (fechaorigen, cadena)

Encuentra el siguiente da que coincida con


cadena a partir de la fecha dada. La cadena
puede ser DOMINGO, LUNES, MARTES,
MIRCOLES, JUEVES, VIERNES, SBADO, o un
nmero que representa ese da. Recuerde que el
primer da de la semana es el DOMIGO

LAST_DAY (fechaorigen)

Devuelve la fecha del ltimo da del mes de la


fechaorigen

ROUND (fechaorigen, [formato])

Aplica a fechaorigen un redondeo basado en el


formato. Si el formato se omite se redondea al
da ms cercano.

TRUNC (fechaorigen, [formato])

Trunca fechaorigen basado en el formato. Si el


formato se omite se trunca al da ms cercano.

Universidad del Cauca FIET Departamento de Sistemas

Funciones de conversin explcitas


TO_NUMBER (Char, [formato])

NUMBER

TO_DATE (Char, [formato])

CHAR

TO_CHAR (Number, [formato])

TO_CHAR (Date, [formato])

Universidad del Cauca FIET Departamento de Sistemas

DATE

Ejecutar Comandos SQL (5)


5. Aplicando Funciones a los Datos
a. Obtener una lista de nombre y el cargo de los
empleados bajo una columna con el nombre de
Cargos, de tal forma que cada lnea se lea como el
siguiente ejemplo: El cargo de Lopez es presidente.
b. Obtener una lista de nombres de los empleados cuyo
nombre tenga 5 caracteres de longitud.
c. Obtener la lista de nombres de los empleados y el
nmero de meses que ha sido contratado en la
empresa.
d. Presentar el nombre y la fecha de contratacin de los
empleados con un formato del ejemplo: DomingoAgo-2005 15:41:16 PM. Tambin el salario con un
formato como el ejemplo: $1,570,325.90

Funciones varias (manejo de NULL)


FUNCION

DESCRIPCIN

NVL (expresin1, expresin2)

Si expresin1 es NULL retorna expresin2, de lo


contrario deja el valor original. El tipo de dato de
las dos expresiones debe ser igual

NVL2 (expresin1, expresin2,


expresin3)

Si expresin1 no es NULL retorna expresin2, de lo


contrario retorna expresin3. El tipo de dato que
se retorna siempre es el de la expresin2, para
ello Oracle puede hacer una conversin de la
expresin3 si se necesita

expresin2 y expresin3 no pueden


ser LONG
NULLIF (expresin1, expresin2)

COALESCE (expresin1, expresin2,


, expresinN)

Compara las dos expresiones y retorna NULL si


son iguales, de lo contrario retorna expresin1. Es
igual a:
CASE
WHEN expresin1 = expresin2 THEN NULL
ELSE expresin1
END
La expresin1 no puede ser el literal NULL

Retorna la primer expresin de la lista que no sea


NULL, teniendo en cuenta que evala de izquierda
a derecha. Al menos una expresin no debe ser el
literal
Universidad del Cauca
FIETNULL
Departamento de Sistemas

Ejecutar Comandos SQL (6)


6. Aplicando Funciones a los Datos
a. Obtener una lista de nombre y la
comisin de los empleados retornando
tanto los que tienen comisin como los
que no tienen comisin, colocando $0
para los que no lo tienen.
b. Obtener el nombre, el cargo, el salario y
un aumento dependiendo del cargo: Si
es presidente se incrementa en 1.3, si
es Gerente en 1.2, para los dems 1.1
del salario.

Ejecutar Comandos SQL (7)


7. Obteniendo datos de mltiples
tablas
a. Obtener una lista de nombre de
empleado y su respectivo nombre de
Departamento.
b. Obtener el nombre de empleado y el
nombre de su jefe.

Funciones de grupo
FUNCION

DESCRIPCIN

COUNT ({* | [DISTINCT | ALL] expresin})

Cuenta el nmero de filas donde la expresin


no tiene un valor NULL. El * cuenta todas las
filas incluyendo duplicados y filas con valores
NULL

SUM ([DISTINCT | ALL] expresinnmerica)

Suma los valores de expresin de cada fila


retornada. Ignora los valores NULL

MAX ([DISTINCT | ALL] expresin)

Mximo de los valores de expresin de cada fila


retornada. Ignora los valores NULL

MIN ([DISTINCT | ALL] expresin)

Mnimo de los valores de expresin de cada fila


retornada. Ignora los valores NULL

AVG ([DISTINCT | ALL] expresinnmerica)

Promedio de los valores de expresin de cada


fila retornada. Ignora los valores NULL

STDDEV ([DISTINCT | ALL]


expresinnmerica)

Desviacin estndar de los valores de expresin


de cada fila retornada. Ignora los valores NULL

VARIANCE ([DISTINCT | ALL]


expresinnmerica)

Varianza de los valores de expresin de cada


fila retornada. Ignora los valores NULL

DISTINCT hace que la funcin descarte los valores duplicados


ALL hace que la funcin tenga en cuenta todos los valores, incluidos los duplicados
(repetidos)
Universidad del Cauca FIET Departamento de Sistemas

Ejecutar Comandos SQL (8)


8. Obteniendo datos de mltiples tablas
a. Obtener una lista con el nombre de empleado
y su respectivo salario. Para los empleados
que tengan salarios menores al promedio
general.
b. Obtener el nmero de empleados que tiene
cada departamento.
c. Obtener el promedio de salario de los
empleados por tipo de cargo.
d. Obtener el mximo promedio de los salarios
por departamento.

Ejecutar Comandos SQL (9)


9. Subconsultas
a. Obtener una lista con el nombre de
empleado y su respectivo salario. Para
los empleados que tengan salarios
menores al salario ganado por TOLEDO.
b. Obtener los empleados que no son
jefes.

Variables de sustitucin
Use las variables de sustitucin de
iSQL*Plus para:
Almacenar valores temporalmente:
Ampersand sencillo (&)
Ampersand doble (&&)
Comando DEFINE

En cada ejecucin de la sentencia SQL debe


digitar los valores que se sustituyen o los
obtiene desde un archivo
Pasar valores desde una sentencia SQL a otra
Modifique dinmicamente los encabezados y
pies de pgina
iSQL*Plus slo soporta chequeo de tipo de dato
Universidad del Cauca
FIET Departamento de
Sistemas

Definicin de variables de sustitucin


El comando DEFINE sirve para predefinir
variables
DEFINE Variable =
crea una variable de usuario de tipo CHAR con el
Valor

valor establecido por el usuario

DEFINE Variable

muestra el valor y el tipo de una variable

DEFINE

muestra los valores y los tipos de todas las variables


definidas

Si el Valor incluye espacios debe encerrarse


entre comillas sencillas
Una variable definida queda disponible por
toda la sesin (hasta que se salga de
iSQL*Plus), o hasta que se aplique el comando
UNDEFINE sobre la misma
Universidad del Cauca FIET Departamento de Sistemas

Ejecutar Comandos SQL


(10)
10.Variables de Sustitucin
a. Obtener la informacin de un empleado
especfico, preguntando al usuario el
cdigo del empleado a mostrar.
b. Obtener la informacin de un empleado
especfico, preguntando al usuario el
nombre del empleado a mostrar.
c. Realizar el ejemplo a. con doble
ampersad.
d. Demostrar uso del comando VERIFY

Personalizando el ambiente de
iSQL*Plus
Use el comando SET para fijar el
valor de una variable
SET VaribleDelSistema Valor
SET ECHO ON

Use SHOW para consultar el valor


actual de la variable
SHOW VariableDelSistema
SHOW ECHO
Universidad del Cauca
FIET Departamento de
Sistemas

Variables del comando SET


NOMBRE

DESCRIPCIN

ARRAYSIZE { 20 | Nmero }

Le fija a la base de datos, el tamao de filas que extrae


de una sola vez en una consulta

FEEDBACK { 6 | Nmero | OFF |


ON}

Muestra el nmero de filas retornadas por una


consulta, cuando se retornan ms de N nmero de filas

HEADING { OFF | ON }

Determina si los encabezados de las columnas se


muestra o no en el reporte

LONG { 80 | Nmero | ON |
Texto}

Define el mximo ancho de despliegue de las columnas


de tipo LONG
EJEMPLOS
SET ARRAYSIZE 30
SET FEEDBACK OFF
SET HEAD OFF
SET LONG 60
SHOW HEAD

Universidad del Cauca


FIET Departamento de
Sistemas

Comandos para formatear en


iSQL*Plus
NOMBRE

DESCRIPCIN

COLUMN [Opciones]

Permite definir el formato de una columna

TTITLE [ Texto | OFF | ON]

Define un encabezado que aparece en la parte superior


de cada pgina del reporte

BTITLE [ Texto | OFF | ON]

Define un pie de pgina que aparece en la parte


inferior de cada pgina del reporte

BREAK [ ON |
ElementoDelReporte]

Permite suprimir valores duplicados y dividir filas de


datos en secciones usando saltos de lnea (line breaks)

EJEMPLOS
COL Emp_Id FORMAT A10
TTITLE Lista de Empleados
BTI Orden por Nombre
BREAK ON Dep_Id

Universidad del Cauca


FIET Departamento de
Sistemas

Ejecutar Comandos SQL


(11)
11.Creacin de Reportes
a. Crear un reporte en el cual se presente
el nombre del departamento, el nombre
del empleado, fecha de contratacin,
salario y salario anual. El reporte debe
solicitar la localizacin al usuario. Debe
colocarse un ttulo, subttulo y
formatear adecuadamente cada
columna.

Manipulacin de Datos
INSERT UPDATE DELETE

Lenguaje de Manipulacin de datos (DML)


Una sentencia DML se ejecuta cuando:

Se adicionan nuevas filas a una tabla (INSERT)


Se modifican filas en una tabla (UPDATE)
Se eliminan filas existentes de una tabla
(DELETE)

Una transaccin es una coleccin de


sentencias DML que se comportan como
una unidad lgica (se hacen todas en la
base de datos o no se hace ninguna). Las
sentencias asociadas son: COMMIT,
SAVEPOINT y ROLLBACK
Universidad del Cauca
FIET Departamento de
Sistemas

Control de transacciones
ROLLBACK
ROLLBACK
TO
SAVEPOINT
ROLLBACK
P1
TO

COMMIT

SAVEPOINT
ROLLBACK
P2
TO
SAVEPOINT
P3
Tiempo

DELETE

INSERT

SAVEPOINT P1

UPDATE

INSERT

SAVEPOINT P2 SAVEPOINT P3
COMMIT

Transaccin
Universidad del Cauca
FIET Departamento de
Sistemas

Ejecutar Comandos SQL


(12)
12.Manipulacin de Datos
a. Insertar un nuevo departamento llamado
SISTEMAS.
b. Insertar como nuevo empleado del departamento
anterior, el usuario del sistema y como fecha de
contratacin la fecha actual.
c. Insertar otro empleado, con fecha de contratacin
abril 3 de 2005.
d. Parametrizar la insercin de nuevos
Departamentos.
e. Modificar el departamento de los nuevos
empleados al departamento ventas. Deshacer la
accin.
f. Eliminar el Departamento SISTEMAS.

Definicin de Datos
CREATE .. ALTER .. DROP

Objetos de la base de datos


OBJETO

DESCRIPCIN

Tabla

Unidad bsica de almacenamiento,


compuesta de filas y columnas. Pueden
ser creadas en cualquier momento, no se
necesita definir el tamao del
almacenamiento (se recomienda) y su
estructura se puede redefinir en lnea.

Vista

Representacin lgica de un subconjunto


de datos de una o ms tablas

Secuencia

Generador de valores numricos

ndice

Mejora el rendimiento de algunas


consultas

Sinnimo

Nombre alternativo de los objetos de una


base de datos

Otros

Procedimientos, funciones, disparadores,


Universidad del Cauca FIET Departamento de Sistemas
clusters, enlaces a bases de datos y

Ejecutar Comandos SQL


(13)
13. Definicin de Datos
a. Crear una nueva tabla en la que se almacena el
calculo de la nmina temporal de cada mes.
Para esto se calcula las retenciones por salud,
pensin, solidaridad, las horas trabajadas, valor
hora y salario devengado.
b. Crear la tabla anterior con una subconsulta.
c. Adicionar una nueva columna a la tabla
anterior, que almacena si se hace retencin o
no.
d. Borrar la tabla del punto a.
e. Analizar las restricciones de las tablas del
curso.

Ejecutar Comandos SQL


(14)
14. Definicin de Datos (Vistas)
a. Crear una vista de los empleados del
departamento de VENTAS.
b. Insertar un nuevo empleado a la vista anterior.
c. Crear una vista en la que se almacena el
calculo de la nmina temporal de cada mes.
Para esto se calcula las retenciones por salud,
pensin, solidaridad, las horas trabajadas,
valor hora y salario devengado.
d. Borrar la vista del punto a.
e. Realizar un anlisis top-N de los 5 empleados
que ms ganan al ao con una vista en lnea.

Ejecutar Comandos SQL


(14)
14. Definicin de Datos (Secuencias,
ndices, Sinnimos)
a. Crear una secuencia para la creacin de
nuevos departamentos.
b. Crear un nuevo departamento con la secuencia
y utilizar las seudo columnas NEXTVAL y
CURRVAL.
c. Crear un indice para la columna de los nombres
de los empleados.
d. Crear un sinonimo del usuario manzamb de la
tabla departamentos llamado deptosmanzamb.
e. Eliminar los objetos creados anteriormente.

Control de Datos
GRANT .. REVOKE

Creacin de usuarios
CREATE USER NombreUsuario
IDENTIFIED {BY clave | EXTERNALLY
|
GLOBALLY AS NombreExterno}
[ | ACCOUNT {LOCK | UNLOCK}];

Slo el administrador del


sistema y los usuarios con
el privilegio de crear
usuarios pueden usar esta
sentencia

Despus de crear el
usuario, ste an no
puede hacer nada en el
sistema. Es como tener
una tarjeta plstica para
entrar a un edificio
inteligente, pero en el
sistema an NO han dado
permiso
para
entrar
al
Universidad del
Cauca

FIET Departamento de
edificio
Sistemas

Otorgando privilegios del


sistema
GRANT Privilegio [, Privilegio2, ]
TO Usuario1 [, Usuario2 | Rol, PUBLIC
]
[WITH ADMIN OPTION];

Esta sentencia permite otorgar


privilegios a un usuario

El privilegio mnimo que un


usuario necesita para entrar al
sistema es CREATE SESSION. En
este momento se activa la
tarjeta plstica en el sistema y
el usuario puede usarla para
entrar al edificio. La vista
SESSION_PRIVS muestra los
privilegios del usuario conectado

La clusula WITH ADMIN OPTION


permite al usuario que recibi el
privilegio, concederlo a otros
usuarios
Universidad del Cauca
FIET Departamento de
Sistemas

Otorgando privilegios del


sistema

Se recomienda asignar slo


los roles que un usuario
necesita (como
administrador ser lo ms
restrictivo posible)

Un usuario desarrollador de
una aplicacin,
normalmente necesita
crear tablas, vistas,
secuencias y
procedimientos, pero no
crear usuarios o hacer
copias de seguridad del
sistema, entre otros

Para crear objetos (un


usuario cree su esquema)
debe tener cuotas de
Universidad
del en
Cauca

espacio
disco
o el
FIET Departamento de
privilegio
UNLIMITED
Sistemas
TABLESPACE (Cuidado!!!)

Roles
Usuario

Usuario

Usuario

Usuario

Usuario

Rol

Privilegios
Universidad del Cauca
FIET Departamento de
Sistemas

Privilegios

Usuario

Ejecutar Comandos SQL


(15)

15. Control de privilegios (Usuarios,


Roles)
a. Crear un nuevo rol para los usuarios de la
especializacin.
b. Crear un nuevo usuario con el nuevo rol.
c. Cambiar la clave del nuevo usuario.
d. Permitir al nuevo usuario consultar la
tabla departamentos del usuario
manzamb.
e. Revocar los privilegios al usuario creado.

FIN REPASO

Anda mungkin juga menyukai