Está en la página 1de 51

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: 3005599968

CD del Curso Sitio Web: http://pis.unicauca.edu.co/moodle/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 BY HAVING GROUP

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 empresa sin repetirlos.

Operadores de comparacin
Operador es:

= > >= < <= <>

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

(^=)

Otros Operadores

BETWEEN IN (Lista) LIKE IS NULL

AND

Entre dos valores (incluidos) En la lista de valores dados Concuerda con un patrn 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 TRUE TRUE FALSE FALSE TRUE FALSE NULL NULL Q TRUE FALSE TRUE FALSE NULL NULL TRUE FALSE P AND Q TRUE FALSE FALSE FALSE NULL FALSE NULL FALSE P TRUE TRUE FALSE FALSE TRUE FALSE Q TRUE FALSE TRUE FALSE NULL NULL TRUE FALSE P OR Q TRUE TRUE TRUE FALSE TRUE NULL TRUE NULL

OR

NOT
P TRUE FALSE NULL NOT P FALSE TRUE NULL

NULL NULL

Universidad del Cauca FIET Departamento de Sistemas

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 DESC

Orden ascendente (por defecto) 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
Manejo de maysculas y minsculas

Caracteres Nmeros Fecha Conversin General

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 20 Ao 3 Mes 5 Da 15 Hora 10 Minutos 12 Segundos 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 Fecha + Nmero Fecha Fecha1 Nmero Fecha2 RESULTADO Fecha Fecha Nmero Fecha DESCRIPCIN Adiciona un Nmero de das a la Fecha Resta un Nmero de das a la Fecha Resta a Fecha1 el valor de la Fecha2 y obtiene el nmero de das entre las dos fechas Adiciona un Nmero de horas a la Fecha

Fecha + Nmero/24

Universidad del Cauca FIET Departamento de Sistemas

Funciones de fechas
FUNCION MONTHS_BETWEEN (fecha1, fecha2) DESCRIPCIN 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. Adiciona n meses calendario a la fechaorigen. El valor de n debe ser un entero positivo o negativo 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 Devuelve la fecha del ltimo da del mes de la fechaorigen Aplica a fechaorigen un redondeo basado en el formato . Si el formato se omite se redondea al da ms cercano. Trunca fechaorigen basado en el formato . Si el formato se omite se trunca al da ms cercano.

ADD_MONTHS (fechaorigen, n) NEXT_DAY (fechaorigen, cadena )

LAST_DAY (fechaorigen) ROUND (fechaorigen, [ formato ]) TRUNC (fechaorigen, [ formato ])

Universidad del Cauca FIET Departamento de Sistemas

Funciones de conversin explcitas


TO_NUMBER (Char, [ formato ]) TO_DATE (Char, [ formato ])

NUMBER

CHAR

DATE

TO_CHAR (Number, [ formato ])

TO_CHAR (Date, [ formato ])

Universidad del Cauca FIET Departamento de Sistemas

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 NVL (expresin1, expresin2) DESCRIPCIN Si expresin1 es NULL retorna expresin2, de lo contrario deja el valor original. El tipo de dato de las dos expresiones debe ser igual 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 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 NULL

NVL2 (expresin1, expresin2, expresin3) expresin2 y expresin3 no pueden ser LONG NULLIF (expresin1, expresin2)

COALESCE (expresin1, expresin2, expresinN)

Universidad del Cauca FIET 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 COUNT ({* | [DISTINCT | ALL] expresin}) DESCRIPCIN 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 Suma los valores de expresin de cada fila retornada. Ignora los valores NULL Mximo de los valores de expresin de cada fila retornada. Ignora los valores NULL Mnimo de los valores de expresin de cada fila retornada. Ignora los valores NULL Promedio de los valores de expresin de cada fila retornada. Ignora los valores NULL Desviacin estndar de los valores de expresin de cada fila retornada. Ignora los valores NULL Varianza de los valores de expresin de cada fila retornada. Ignora los valores NULL

SUM ([DISTINCT | ALL] expresinnmerica) MAX ([DISTINCT | ALL] expresin) MIN ([DISTINCT | ALL] expresin) AVG ([DISTINCT | ALL] expresinnmerica) STDDEV ([DISTINCT | ALL] expresinnmerica) VARIANCE ([DISTINCT | ALL] expresinnmerica)

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 = Valor DEFINE Variable DEFINE crea una variable de usuario de tipo CHAR con el valor establecido por el usuario muestra el valor y el tipo de una variable 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 ARRAYSIZE { 20 | Nmero } FEEDBACK { 6 | Nmero | OFF | ON} HEADING { OFF | ON } LONG { 80 | Nmero | ON | Texto} DESCRIPCIN Le fija a la base de datos, el tamao de filas que extrae de una sola vez en una consulta Muestra el nmero de filas retornadas por una consulta, cuando se retornan ms de N nmero de filas Determina si los encabezados de las columnas se muestra o no en el reporte 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 COLUMN [Opciones] TTITLE [ Texto | OFF | ON] BTITLE [ Texto | OFF | ON] BREAK [ ON | ElementoDelReporte] DESCRIPCIN Permite definir el formato de una columna Define un encabezado que aparece en la parte superior de cada pgina del reporte Define un pie de pgina que aparece en la parte inferior de cada pgina del reporte 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 P1 ROLLBACK TO SAVEPOINT P2 COMMIT ROLLBACK TO SAVEPOINT P3 Tiempo DELETE INSERT UPDATE SAVEPOINT P2 INSERT

SAVEPOINT P1

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 Tabla DESCRIPCIN 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. Representacin lgica de un subconjunto de datos de una o ms tablas Generador de valores numricos Mejora el rendimiento de algunas consultas Nombre alternativo de los objetos de una base de datos Procedimientos, funciones, disparadores, clusters, enlaces a bases de datos y dems
Universidad del Cauca FIET Departamento de Sistemas

Vista Secuencia ndice Sinnimo Otros

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 sise hace retencin o no. d. Borrar la tabla del punto a. e. Analizar las restricciones de las tablas del curso.

Ejecutar Comandos SQL (12)


12. Definicin 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.

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 edificio

Universidad del Cauca FIET Departamento de 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 espacio en disco o el privilegio UNLIMITED TABLESPACE (Cuidado!!!)
Universidad del Cauca FIET Departamento de Sistemas

Roles
Usuario Usuario Usuario Usuario Usuario Usuario

Rol

Privilegios
Universidad del Cauca FIET Departamento de Sistemas

Privilegios

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