Académique Documents
Professionnel Documents
Culture Documents
INTRODUCCION.
Cada versin de oracle que sale al mercado, adiciona o modifica
caractersticas a las ya existentes. En la versin 9i, se
adicionaron muchas caractersticas nuevas y se cambiaron muchas
funciones.
Para comprender la arquitectura de Oracle, es importante conocer
dos conceptos que son fundamentales: Bases de datos e
instancias.
Bases de datos.- Una base de datos es un conjunto de
datos.Oracle proporciona la capacidad de almacenarlos y de
acceder a ellos de una forma coherente con un modelo
definido y conocido como el modelo Relacional. Debido a
esto, Oracle construye lo que se conoce como un Sistema de
Gestin de Bases de Datos Relacional (RDBMS). Cuando
hablamos de Bases de Datos no solo nos estamos refiriendo a
los datos fsicos, sino tambin a la combinacin de objetos
fsicos, de memoria y de proceso.
Los datos de una base de datos se almacenan en tablas. Las
tablas relacionales estn definidas por sus columnas o
atributos, al que se les asigna un nombre. Los datos se
almacenan como filas o registros en una tabla. Las tablas
pueden estar relacionadas entre s y base de datos puede
utilizarse para que se apliquen esas relaciones.
Adems datos en formato relacional, Oracle (a partir de
Oracle8) admite estructuras orientadas a objetos(OO), como
mtodos o tipos abstractos de datos. Los objetos pueden
estar relacionados con otros objetos y conocer otros
objetos.
Tanto si maneja estructuras relacionales o estructuras datos
orientadas a objetos, Oracle los almacena los datos como
archivos. Internamente existen estructuras de archivos los
Conectando a SQL*Plus.
El SQL*Plus es una aplicacin que se encuentra en el lugar donde
Oracle guardar sus aplicaciones: $ORACLE_HOME/bin
Por ejemplo podemos realizar las siguientes operaciones:
Adicionando Columnas.
sintaxis:
ALTER TABLE [<esquema>.]<nombre_tabla> ADD
<definicion_columns>;
#En este ejemplo se Adiciona la columna "fecha_nac" a la tabla
"alumno"
SQL>alter table alumno add fecha_nac date;
SQL>desc alumno
#Tambin se pueden adicionar mas de una columna en una sola
consulta, para tal efecto se deber encerrar entre parntesis los
atributos que se adiciona.
SQL>alter table alumno add
(telf integer default 0 not null,
fe_nac date default sysdate,
dir varchar(30));
SQL>desc alumno
Modificando Columnas.
La sintaxis para modificar columna existentes :
ALTER TABLE [<esquema>.]<nombre_tabla>
MODIFY <nombre_columna> <nuevo_atributo>
Se pueden tambin modificar muchos atributos, haciendo uso de los
parntesis.
#Para este ejemplo Modificamos el atributo "ap" a varchar(50)
SQL>alter table alumno modify ap varchar(50);
Eliminando columnas.
Se pueden eliminar columnas si no son usados.
Sintaxis :
ALTER TABLE [<esquema>.]<nombre_tabla>
DROP {COLUMN <nombre_columna> | (<nombres de columnas>)}
[CASCADE CONSTRAINTS]
DROP COLUMN elimina las columnas especificadas para la tabla. Se
pueden eliminar mas de una columna al mismo tiempo, separados
con comas entre parntesis. Si la columna tiene restricciones y
dependencias, con CASCADE CONSTRAINTS puede eliminar
restricciones.
#Para este ejemplo eliminamos la columna "fe_nac"
SQL>alter table alumno column fe_nac;
#Eliminar un conjunto de columnas
SQL>alter table alumno drop (fe_nac, telf);
ELIMINANDO TABLAS.
Sintaxis:
DROP TABLE [esquema.]table_name [CASCADE CONSTRAINTS]
Cuando se elimina una tabla, los datos y la definicin de la
tabla son eliminados. Los ndices, restricciones, triggers y
privilegios de la tabla tambin son eliminados al momento de
eliminar una tabla.
#Este ejemplo elimina la tabla "alumno".
SQL>drop table alumno;
#Si es que existen tablas que hacen referencia a la tabla
"Alumno", y si queremos eliminar la tabla alumno, la consulta
seria :
SQL>drop table alumno cascade contraints;
MANEJANDO RESTRICCIONES(CONSTRAINTS).
Las restricciones se crean en las bases de datos para hacer
cumplir las reglas de negocios. Oracle soporta las siguientes
restricciones :NOT NULL, CHECK, UNIQUE, PRIMARY KEY, FOREIGN
KEY.
Una restriccin se puede aplicar con las sentencias CREATE TABLE
o con ALTER TABLE.
Restriccin CHECK.
La restriccin CHECK se define sobre una columna. La sintaxis
es:
[CONSTRAINT <nombre_restriccion>] CHECK ( <condicion> )
#En este ejemplo se crea una tabla "sueldo", con la restriccin
que el atributo "salario" sea mayor a 100 y menor a 100000.
SQL>create table salario(
ci integer not null,
fecha date not null,
salario float not null,
primary key(ci,fecha),
constraint mi_sal check(salario > 100 and salario < 100000)
);
La sentencia CHECK pueden ser adicionada o eliminado por ALTER
TABLE.
#Este ejemplo adiciona la restriccin "mi_ci" donde se verifica
que "ci" sea mayor a 100.
SQL>alter table sueldo add constraint mi_ci check(ci > 100);
#tambin se puede eliminar restricciones
SQL> alter table alex drop constraint mi_sal;
MODIFICANDO DATOS
El Lenguaje de Manipulacin de datos(DML) es un subconjunto de
SQL empleado para manipular datos. Las declaraciones del DML
soportados por Oracle son :
INSERT Adiciona datos a una tabla.
UPDATE Cambia los valores almacenados en una tabla
DELETE Elimina filas de una tabla.
Insertando filas en la tabla.
La sentencia INSERT es usada para adicionar filas a una o ms
tablas.
#En estos ejemplos insertan datos en la tabla alumno.
SQL>insert into alumno(ci,nombre,ap)
values(111,'Raul','Peralta');
De otra forma:
SQL>select UNIQUE ru
from nota;
Limitando Filas.
La declaracin WHERE esta despus del SELECT ... FROM. La
declaracin WHERE es utilizada para condicionar las filas
listadas en el SELECT. Se pueden utilizar nombres de columnas o
expresiones en la clusula WHERE.
Ejercicios:
#Listar las materias que curso el estudiante con ru=111;
SQL>select ru, sigla, gestion
from nota
where (ru=111);
LIKE.
Este operador compara caracteres. Para las comparaciones se
Utilizan los smbolos :
% = cero o ms caracteres.
_ = Un carcter.
Ejercicios:
#Listar a todos los estudiantes que su apellido paterno(ap)
comience con la vocal 'A'.
SQL>select ru, nombre, ap, am
from alumno
where (ap LIKE 'A%');
#Para este ejercicio se utiliza el carcter '%' para indicar que
puede continuar cualquier carcter.
BETWEEN
El operador BETWEEN es usado para comparar un rango de valores.
X BETWEEN A AND B, esta condicin devuelve TRUE o verdad si el
valor X esta entre A y B, y FALSE o falso en caso contrario.
Ejercicios:
#Seleccionar a todos los estudiantes(ru) que en su parcial
1(pa1) tenga desde 40 hasta 50, en la materia INF-111, gestin
2005.
SQL>select ru
from nota
where (gestion=2005)and(pa1 BETWEEN 40 AND 50);
IN y NOT IN
Los operadores IN y NOT IN son usados para comparar un valor con
cada valor de la lista o subconsulta. Con el operador IN se
ANY o SOME.
El operador ANY o SOME son usados para comparar un valor con
cada valor de una lista o subconsulta. El operador ANY o SOME
compara un valor, si cumple la condicin con algn valor de la
lista o subconsulta. El operador ANY o SOME siempre esta
precedido con los operadores de comparacin: =,!=,<,>,<=, >=
ALL.
El operador ALL es usado para comparar un valor con todos los
valores de una lista o subconsulta. El Operador ALL, compara el
valor comparado cumple la condicin con todos los valores de la
lista o subconsulta. El operador ALL siempre esta precedido con
los operadores de comparacin: =,!=,<,>,<=, >=.
Ejercicios:
#Seleccionar a todos los estudiantes que reprobaron todas las
materias programadas en la gestin 2005.
SQL>select X.ru
from nota X
where 51 >=ALL (select ((Y.pa1+Y.pa2+Y.pa3)/3)
from nota Y
where (Y.gestion=2005)and(Y.ru=X.ru)
) ;
EXISTS.
El operador EXISTS esta siempre antes de una subconsulta entre
parntesis. EXISTS devuelve TRUE o verdad si la subconsulta
devuelve como mnimo una fila.
Ejercicios:
#Seleccionar a todos los estudiantes que no tengan Telfono.
SQL>Select A.nombre, A.ap, A.am
from alumno A
where EXISTS (select T.ap, T.nombre
from telefono T
where (T.ru=A.ru)
);
Ejercicios Resueltos:
alumno(ru,nombre,ap,am,est_civil,genero)
materia(sigla,nombre,nivel)
nota(ru,sigla,gestion,pa1,pa2,pa2)
telefono(ru,numero)
Algunas Funciones.
GROUPING
El GROUPING(x) toma un simple argumento, donde 'x' es una
expresin de GROUP BY en la consulta. el GROUPING es aplicable
solo a consultas que tienen la clusula GROUP BY, ROLLUP o CUBE.
La funcin GROUPING retorna 1 si se genera un resumen, y 0
cuando no existe resumen.
Ejem: La presente consulta muestra con 1 las filas de resumen y
0 las que no son.
select ecivil,count(*),grouping(ecivil)
from alumno
group by cube(ecivil)
La expresion CASE.
La expresin CASE es nuevo en Oracle9i y puede ser usado con
IF.. THEN.. ELSE.
Sintaxis:
CASE
WHEN THEN ... .. ..
[ELSE ]
END
MINUS .-Retorna
la filas nicas que estn en la primera
consulta pero que no estn en la segunda consulta.
Ejem:
select *
from alumno
MINUS
select *
from alumno
where ecivil=1
INTRODUCCION.
Debido a los requerimientos de la nuevas aplicaciones, en su
octava versin, el sistema de gestin de bases de datos
relacionales Oracle ha sido significativamente extendido con
conceptos de Modelo de Base de datos orientada a objetos. De
esta manera, aunque las estructura de datos que se utilizan
para almacenar la informacin siguen siendo tablas, los usuarios
pueden utilizar muchos de los mecanismos de orientacin a
objetos para definir y acceder a los datos. Por esta razn, se
dice que se trata de un modelo de datos objeto-relacional.
Oracle 9i proporciona mecanismos para que el usuario pueda
definir sus propios tipos de datos, cuya estructura puede ser
compleja, y que se pueden aplicar para asignar un tipo a una
columna de una tabla. Tambin reconoce el concepto de objetos,
de tal manera que un objeto tiene un tipo, se almacena en cierta
fila de cierta tabla y tiene un identificador nico (OID). Estos
identificadores se pueden utilizar para referenciar a otros
objetos y as representar relaciones de asociacin y de
agregacin. Oracle 9i tambin proporciona mecanismos para
asociar mtodos a tipos, y constructores para disear tipos de
datos multivaluados(colecciones) y tablas anidadas. La mayor
diferencia de este sistema es la imposibilidad de definir
jerarquas de especializacin y herencia, lo cual es una
importante desventajas con respecto a las bases de datos
orientadas a objetos puras.
TIPOS DE DATOS DEFINIDOS POR EL USUARIO
Los usuarios de Oracle 9i pueden definir sus propios tipos de
datos, pudiendo ser de dos categoras: tipos de objetos(Object
type) y tipos para colecciones(collection types). Para construir
los tipos de usuario se utilizan los tipos bsicos provistos por
el sistema y otros tipos de usuarios previamente definidos. Un
TABLAS ANIDADAS.
Una tabla anidad es un conjunto de elementos del mismo tipo sin
ningn orden predefinido.
Estas tablas solamente pueden tener una columna que puede ser de
un tipo de datos bsico de Oracle, o de un tipo de objetos
definido por el usuario. En este ltimo caso, la tabla anidada
tambin puede ser considerada como una tabla con tantas columnas
como atributos tenga el tipo de objetos.
18.- Como definimos tablas anidadas para las colecciones ?
Para demostrar que con tablas anidadas tambin se puede
realizar el ejercicio anterior, entonces definiremos un objeto
TELEFONOS.
PERSONA
----------------------------
CI : INTEGER
NOMBRE : STRING
AP : STRING
---------------------------
LISTA_PER() : INTEGER
DOCENTE ESTUDIANTE
---------------------------- ----------------------------
ESPECIALIDAD : STRING RU : INTEGER
--------------------------- ---------------------------
LISTA_DOC() : INTEGER LISTA_PER() : INTEGER
METHOD
------
MEMBER FUNCTION LISTA_PER RETURNS NUMBER
METHOD
------
MEMBER FUNCTION LISTA_ES RETURNS NUMBER
METHOD
------
MEMBER FUNCTION LISTA_PER RETURNS NUMBER
METHOD
------
MEMBER FUNCTION LISTA_DOC RETURNS NUMBER
PERSONA
----------------------------
CI : INTEGER
NOMBRE : STRING
AP : STRING
---------------------------
ESTADO_PER(): INTEGER
1 1 * *
* 1
TELEFONOS PRODUCTO
---------------------------- ----------------------------
NUMERO : STRING CODP : INTEGER
NOMBRE : STRING
PRECIO : REAL
--------------------------- ---------------------------
BUSCA_PRO() : INTEGER
FUNCIONES Y PREDICADOS
VALUE: esta funcin toma como parmetros un alias de
tabla(de una tabla de objetos) y devuelve instancias de
objetos correspondientes a las filas de la tabla.
REF : es una funcin que toma como parmetro un alias de
tabla y devuelve una referencia a una instancia de un
objeto de dicha tabla.
DEREF : es una funcin que devuelve la instancia del
objeto correspondiente a una referencia que se le pasa
como parmetro.
IS OF : permite formar predicados para comprobar el nivel
de especializacin de instancias de objetos.
TREAT : es una funcin que trata a una instancia de un
supertipo como una instancia de uno de sus subtipos.
PROCEDIMIENTOS ALMACENADOS.
Un procedimiento almacenado es un conjunto de instrucciones en
PL/SQL, que pueden ser llamado usando el nombre que se le haya
asignado.
Sintaxis:
CREATE [OR REPLACE] PROCEDURE nombre_proc [(param [IN|OUT|IN
OUT] datatype)...]
[IS|AS] pl/sql_subprograma
El uso de OR REPLACE permite sobrescribir un procedimiento
existente. Si se omite, y el procedimiento ya existe, se
producir un error. Los modificadores IN, OUT, IN OUT indican si
el parmetro es de entrada, salida o ambos.
A continuacin se presenta un ejemplo de creacin de un
procedimiento.
ARQUITECTURA CLIENTE/SERVIDOR
Las aplicaciones de bases de datos distribuidas se desarrollan
en el contexto de la arquitectura cliente/servidor. La
arquitectura cliente/servidor se cre para manejar los nuevos
entornos de cmputo en los que un gran nmero de PC, estaciones
de trabajos, servidores de ficheros, impresoras, servidores de
bases de datos, servidores Web y otros equipos estn
interconectados a travs de una red.
En un sistema cliente/servidor tenemos dos partes fundamentales:
Cliente. Se podra corresponder con una mquina usuario que
proporciona capacidad de interfaz al usuario y
procesamiento local.
BD1
BD2 BD3
FRAGMENTAR
FRAGMENTAR
Codemp Nombre Ap Am
111 Juan Paez Pealosa
222 Jose Fernndez Arandia
333 Ral Nogales Pedraza
444 Oscar Ramrez Pea
555 Alex Aguirre Mendez
Codemp Dpto_sucur
111 TARIJA
222 ORURO
333 TARIJA
444 ORURO
555 TARIJA
CONSULTAS REMOTAS
Para consultar una base de datos remota, se debe crear un enlace
de datos en la base de datos en la que se origine la consulta.
El enlace de Base de Datos especifica el nombre del servicio que
se va a utilizar y puede especificar tambin el nombre del
usuario que se va a conectar a la Base de Datos remota. Cuando
se hace referencia a un enlace de Base de Datos en una
instruccin SQL, Oracle abre una sesin en la Base de Datos
remota y ejecuta all la instruccin SQL. Luego, los datos son
devueltos y la sesin remota permanece abierta durante toda la
sesin del usuario. Los enlaces de Bases de Datos pueden creare
como enlaces privados.
MANEJANDO SINNIMOS.
Un sinnimo es como un alias que se define para los objetos de
los esquemas. Un sinnimo puede proveer un nivel de seguridad,
enmascarando el nombre de objetos. A travs de sinnimos podemos
hacer que las conexiones sean transparentes a los usuarios. Los
usuarios que crean sinnimos necesitan el privilegio CREATE
SYNONYM, CREATE ANY SYNONYM y CREATE PUBLIC SYNONYM.
Tabla: Tabla:
ALUMNO TELEFONO
Enlace de BD: Enlace de BD:
ORURO BD TARIJA BD