Ejercicios con Oracle

Anuncio
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Fecha de envío al profesor de su Prueba: 01/05/2009 – Tiempo total empleado estimado: 40 horas
Nota: BBDD de trabajo ORCL0506
Todos los usuarios tienen la misma contraseña 123456, excepto:
sys:manager, bdatos:bdatos, bdatos1:bdatos1, OPS$PC1\JAVCASTA (contraseña privada)







Instalación Oracle 11g para Windows
Creando una base de datos Oracle
Asistente Administración para Windows (AAW)
Servidor de Aplicaciones
Creación usuario Externo
Creación Usuario
Ejercicios
o Ejercicio 5.1
o Ejercicio 5.2
o Ejercicio 5.3
o Ejercicio 5.4
o Ejercicio 5.5
o Ejercicio 5.6
o Ejercicio 5.7
o Ejercicio 5.8
 Exporto la BBDD ORCL0506
---------------------------------------------------------------------
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 1 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001

Instalación Oracle 11g para Windows
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 2 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Sigo la instalación por defecto …
…
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 3 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 4 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 5 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 6 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
* Creando una base de datos Oracle
Para nuestros propósitos es conveniente tener una base de datos de repuesto, ya que la que hemos creado en la
instalación puede corromperse dándonos no pocos quebraderos de cabeza.
Así pues, además de la base de datos inicial crearemos una base nueva. Para ello seleccionaremos en el menú de
inicio Oracle-OraDb11g_home1::Configuration and Migration Tools::Database Configuration Assistant. El
asistente de configuración nos ofrece la siguiente vista
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 7 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 8 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Contraseña: manager
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 9 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 10 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 11 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 12 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 13 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 14 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001

SCOTT: tiger
AAW ( Asistente Administración para Windows):
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 15 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001

Creacion Usuario Externo
………….
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 16 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001

Servidor de aplicaciones: https://pc1:5500/em
Al intentar conectarme tengo un error en el listener ( LISTENER en el socket tcp1521). Por lo que lo vuelvo a
configurar
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 17 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Tras reiniciar servicios. Me conecto al Enterprise Manager
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 18 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
User: sys - pass: manager – Privilegio sysdba
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 19 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001

Creación del usuario bdatos:bdatos de tipo normal en la bbdd ORCL0506
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 20 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
PROMPT CREACION USUARIO BDATOS/BDATOS
CREATE USER BDATOS IDENTIFIED BY bdatos
ACCOUNT UNLOCK
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 500K ON USERS;
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 21 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Ejercicios:
 Ejercicio 5.1
Realizar, mediante el AAW el ejercicio Crear el usuario AAW indicado en la guía didáctica. Se creará pues un
usuario validado por el sistema operativo, con la misma cuenta que ud. posee en su ordenador.
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 22 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 23 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
 Ejercicicio 5.2
Realizar el ejercicio SA indicado en la guía didáctica. Se creará pues el usuario bdatos/bdatos, mediante el
Servidor de Aplicaciones. Este será un usario normal, no tendrá pues privilegios salvo sobre sus propias tablas.
Creación del usuario bdatos:bdatos de tipo normal en la bbdd ORCL0506
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 24 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
PROMPT CREACION USUARIO BDATOS/BDATOS
CREATE USER BDATOS IDENTIFIED BY bdatos
ACCOUNT UNLOCK
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 500K ON USERS;
 Ejercicio 5.3
Crear un usario bdatos1 con password bdatos1 mediante SQL Plus. Guardar los comandos SQL en un fichero
cuyo nombre seguirá las normas especificadas en la introducción
Consulto los usuarios que existen que empiecen por B
SQL> select username from DBA_USERS where username like 'B%';
USERNAME
-----------------------------BDATOS
BI
Consulto todos los usuarios
SQL> SELECT USERNAME FROM DBA_USERS;
USERNAME
-----------------------------MGMT_VIEW
SYS
…
SCOTT
BDATOS
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 25 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
OPS$PC1\JAVCASTA
…
SPATIAL_CSW_ADMIN_USR
SPATIAL_WFS_ADMIN_USR
39 filas seleccionadas.
SQL>
Creamos el usuario bdatos1/bdatos1
SQL>CREATE USER BDATOS1 IDENTIFIED BY bdatos1
ACCOUNT UNLOCK
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 500K ON USERS;
Usuario creado.
Lo compruebo
SQL> select username from DBA_USERS where username like 'B%' or username like 'OPS%';
USERNAME
-----------------------------BDATOS1
BDATOS
OPS$PC1\JAVCASTA
BI
 Ejercicio 5.4
Dar permisos a los tres usuarios creados en los ejercicios anteriores, para que puedan leer y escribir datos en las
mismas tablas.
Usuarios: BDATOS, BDATOS1, OPS$PC1\JAVCASTA
Miro sus privilegios:
SQL> select * from dba_role_privs where grantee like 'B%' or grantee like 'OPS%';
GRANTEE
GRANTED_ROLE
ADM DEF
------------------------------ ------------------------------ --- --BDATOS
CONNECT
NO YES
OPS$PC1\JAVCASTA
DBA
YES YES
OPS$PC1\JAVCASTA
CONNECT
YES YES
BI
RESOURCE
NO YES
SQL> select * from dba_tab_privs where grantee='BDATOS' or grantee='BDATOS1' or grantee like 'OPS%';
ninguna fila seleccionada
Miro sus tablespaces (los 3 tienen el tablespaces por defecto USERS y el temporal TEMP)
select substr(username,1,15) usuario, DEFAULT_TABLESPACE ,
2 TEMPORARY_TABLESPACE
3 from dba_users
4 where username in ('SYS','SYSTEM','BDATOS','BDATOS1','OPS$PC1\JAVCASTA');
SQL>
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 26 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
USUARIO
DEFAULT_TABLESPACE
TEMPORARY_TABLESPACE
--------------- ------------------------------ -----------------------------BDATOS1
USERS
TEMP
BDATOS
USERS
TEMP
OPS$PC1\JAVCAST USERS
TEMP
SYS
SYSTEM
TEMP
SYSTEM
SYSTEM
TEMP
Asigno privilegios de crear tablas y borrarlas y modificarlas , de lectura y escritura (select, insert, update, delete)
de las tablas a los 3 usuarios en las tablas. Y también les doy permiso de sesión.
SQL> GRANT CREATE SESSION TO BDATOS, BDATOS1;
Concesi¾n terminada correctamente.
SQL> GRANT RESOURCE TO BDATOS, BDATOS1;
Concesi¾n terminada correctamente.
SQL> GRANT CREATE ANY TABLE, ALTER ANY TABLE, DELETE ANY TABLE, DROP ANY
TABLE, INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE TO BDATOS,
BDATOS1;
Concesi¾n terminada correctamente.
Respecto al usuario externo: JAVCASTA
DEFINO EL CARACTER DE ESCAPE CON |
SQL> set escape |
-- OPS$PC1\JAVCASTA
ALTER USER “OPS$PC1|\JAVCASTA”
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK ;
-- ROLES
SQL> ALTER USER "OPS$PC1|\JAVCASTA" DEFAULT ROLE "CONNECT","DBA";
Usuario modificado.
-- SYSTEM PRIVILEGES
GRANT UPDATE ANY TABLE TO "OPS$PC1|\JAVCASTA";
GRANT INSERT ANY TABLE TO "OPS$PC1|\JAVCASTA";
GRANT DELETE ANY TABLE TO "OPS$PC1|\JAVCASTA";
GRANT SELECT ANY TABLE TO "OPS$PC1|\JAVCASTA";
GRANT DROP ANY TABLE TO "OPS$PC1|\JAVCASTA";
GRANT CREATE ANY TABLE TO "OPS$PC1|\JAVCASTA" ;
-- GRANT CREATE TABLE TO "OPS$PC1|\JAVCASTA";
GRANT ALTER ANY TABLE TO "OPS$PC1|\JAVCASTA";
-- QUE PUEDA EXPORTAR LA BBDD
GRANT EXPORT FULL DATABASE TO "OPS$PC1|\JAVCASTA";
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 27 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Una alternativa con GUI seria a través del SQL Developer
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 28 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
 Ejercicio 5.5
A continuación crearemos varias tablas bajo el usuario bdatos. Las tablas que crearemos simulan parcialmente
una base de datos de un hospital yson las siguientes:
Nombre de la tabla Descripción
PERSONAL Todo tipo de personal en nómina
MPERSONA Movimientos de personal
ENFERMOS Pacientes tanto ingresados como no ingresados
MENFERMO Movimientos de enfermo
FARMACIA Material de farmacia
APARATOS Todos los sistemas del hospital
MAPARATO Movimientos de aparatos
Las tablas de movimiento reflejan los cambios en el estado de la entidad a quien afectan. Así por ejemplo
MPERSONA reflejan los hitos por los que va pasando cada uno de los empleados del hospital.
Lógicamente en este ejemplo faltan algunas tablas para que se pueda reflejar la gestión real de un hospital, pero
consideramos que son suficientes para nuestros objetivos.
Campos de cada tabla
Definiremos los siguientes campos. El alumno puede añadir, por supuesto, sus propios campos si lo desea ya que
la lista de campos que aquí se da es deliberadamente corta.
El tipo y longitud de los campos queda a elección del alumno. El tipo de dato queda a cargo del alumno.
Tabla PERSONAL. Campos
CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA, FECHSALIDA
Tabla MPERSONA. Campos
CODIGO Código del movimiento
DESCRIPCION Descripción del movimiento
LUGAR Lugar asociado al movimiento (si lo hubiera)
CODIGOPER Código de empleado
FECHA Fecha del movimiento
Tabla ENFERMOS. Campos
CODIGO, NOMBRE, APELLIDOS
Tabla MENFERMO. Campos
CODIGO Código del movimiento
DESCRIPCION Descripción del movimiento
LUGAR Lugar asociado al movimiento (si lo hubiera)
CODIGOENF Código de enfermo
FECHA Fecha del movimiento
Tabla FARMACIA. Campos
CODIGO, DESCRIPCION, UNIDADES, PRECIO, DESTINO, OBSERVACIONES
En esta tabla puede haber varios registros con el mismo código.
Tabla APARATOS. Campos
CODIGO, DESCRIPCION, UNIDADES, PRECIO, DESTINO, OBSERVACIONES
En esta tabla puede haber varios registros con el mismo código.
Tabla MAPARATO. Campos
CODIGO Código del movimiento
DESCRIPCION Descripción del movimiento
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 29 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
CODIGOAPAR Código del aparato
LUGAR Lugar asociado al movimiento (si lo hubiera)
FECHA Fecha del movimiento
La tabla PERSONAL, debe ser creada mediante SQL Plus, y el comando SQL utilizado, debe ser entregado en el
fichero Ejercicio55.sql, el resto de las tablas deben ser creadas mediante la herramienta que el alumno desee.
Una vez creadas estas tablas se introducirán datos (de 3 a 5 registros por tabla). Se procurará que dichos datos
tengan cierta consistencia.
Los datos de la tabla PERSONAL se introducirán (solo el primer registro), con SQL Plus y el comando SQL
necesario se guardará en el fichero Ejercicio551.sql.
--/******************************************************************
--**
CREACIÓN DE TABLAS EJERCICIO 5.5 - UD5 ORACLE
**
--******************************************************************/
-- EJECUCIÓN: SQL> @C:/app/javcasta/OraHome_1/BIN/scripts_sql/Ejercicio55.sql
set linesize 80
prompt tamaño linea 80
set pagesize 24
prompt tamaño pagina 24
set ESCAPE \
prompt Escape = \\
prompt
SPOOL BD08001_CREA_TABLAS_EJERCICIO55.LOG
prompt SPOOL BD08001_CREA_TABLAS_EJERCICIO55.LOG
prompt
PROMPT EJERCICIO 5.5
-PROMPT ===============
Prompt Borrando tablas
Prompt ===============
DROP TABLE PERSONAL CASCADE CONSTRAINTS;
DROP TABLE MPERSONA CASCADE CONSTRAINTS;
DROP TABLE ENFERMOS CASCADE CONSTRAINTS;
DROP TABLE MENFERMO CASCADE CONSTRAINTS;
DROP TABLE FARMACIA CASCADE CONSTRAINTS;
DROP TABLE APARATOS CASCADE CONSTRAINTS;
DROP TABLE MAPARATO CASCADE CONSTRAINTS;
PROMPT TABLAS BORRADAS
PROMPT
-Prompt ==============
Prompt Creando tablas
Prompt ==============
Prompt
PROMPT =============================================================
Prompt TABLA PERSONAL
PROMPT **************
-- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
-- CATEGORIA: MEDICO, ENFERMERO, AUXILIAR, ...
-- FECENTRADA: SERA LA FECHA DEL SISTEMA SYSDATE
-- FECHSALIDA: SERÁ LA FECHA 23/12/2012 FIN DEL MUNDO SEGUN LOS MAYAS :-)
CREATE TABLE PERSONAL
(CODIGO NUMBER(9) NOT NULL,
NOMBRE VARCHAR2(100) NOT NULL,
APELLIDOS VARCHAR2(100) NOT NULL,
CATEGORIA VARCHAR2(20) NOT NULL,
FECHENTRADA DATE DEFAULT SYSDATE,
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 30 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
FECHSALIDA DATE DEFAULT '23-12-2012',
CONSTRAINT PK_PERSONAL PRIMARY KEY (CODIGO) USING INDEX);
PROMPT TABLA PERSONAL CREADA
PROMPT
PROMPT INSERTAMOS REGISTROS EN PERSONAL
PROMPT
INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA )
VALUES ( 1,'ANTONIO', 'SANTOS FLORES', 'MEDICO');
INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA )
VALUES ( 2,'BARTOLO', 'ALVAREZ CASTRO', 'ENFERMERO');
INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA )
VALUES ( 3,'CARLOS', 'GOROSTIAGA GONZALEZ', 'AUXILIAR');
INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA )
VALUES ( 4,'NOMBRE_4', 'APE1_4 APE2_4', 'MEDICO', '01-01-2009');
INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA )
VALUES ( 5,'NOMBRE_5', 'APE1_5 APE2_5', 'ENFERMERO', '01-02-2009');
INSERT INTO PERSONAL ( CODIGO, NOMBRE, APELLIDOS, CATEGORIA, FECHENTRADA )
VALUES ( 6,'NOMBRE_6', 'APE1_6 APE2_6', 'AUXILIAR', '01-03-2009');
PROMPT =============================================================
Prompt TABLA MPERSONA
PROMPT **************
-- CODIGO Y CODIGOPER INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
-- LUGAR: TRAUMATOLOGIA, UBI, PLANTA1, PLANTA2
-- CODIGOPER: RELACIONADO CON PERSONA.CODIGO
-- FECHA: SERÁ LA FECHA 23/12/2012, FIN DEL MUNDO SEGUN LOS MAYAS :-)
CREATE TABLE MPERSONA
(CODIGO NUMBER(9) NOT NULL,
DESCRIPCION VARCHAR2(100) NOT NULL,
LUGAR VARCHAR2(100) NOT NULL,
CODIGOPER NUMBER(9) NOT NULL,
FECHA DATE DEFAULT SYSDATE,
CONSTRAINT PK_MPERSONA PRIMARY KEY (CODIGO) USING INDEX);
PROMPT TABLA MPERSONA CREADA
PROMPT
PROMPT CREANDO RELACION ENTRE MPERSONA Y PERSONAL
PROMPT ******************************************
ALTER TABLE MPERSONA ADD (
CONSTRAINT FK_PER_MPE FOREIGN KEY (CODIGOPER)
REFERENCES PERSONAL (CODIGO));
PROMPT
--SELECT COUNT(*) FROM MPERSONA; NUMERO DE REGISTROS
PROMPT INSERTAMOS REGISTROS EN MPERSONA
PROMPT
INSERT INTO MPERSONA ( CODIGO, DESCRIPCION, LUGAR, CODIGOPER, FECHA )
VALUES ((SELECT COUNT(*)+1 FROM MPERSONA),'ATENCION EN TRAUMATOLOGIA', 'TRAUMATOLOGIA', 4, DEFAULT);
INSERT INTO MPERSONA ( CODIGO, DESCRIPCION, LUGAR, CODIGOPER, FECHA )
VALUES ((SELECT COUNT(*)+1 FROM MPERSONA),'GUARDIA EN UBI', 'UBI', 5, DEFAULT);
INSERT INTO MPERSONA ( CODIGO, DESCRIPCION, LUGAR, CODIGOPER, FECHA )
VALUES ((SELECT COUNT(*)+1 FROM MPERSONA),'TURNO EN PLANTA1', 'PLANTA1', 6, DEFAULT);
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 31 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
PROMPT ==========================================================================
Prompt TABLA ENFERMOS
PROMPT **************
-- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
-CREATE TABLE ENFERMOS
(CODIGO NUMBER(9) NOT NULL,
NOMBRE VARCHAR2(100) NOT NULL,
APELLIDOS VARCHAR2(100) NOT NULL,
CONSTRAINT PK_ENF PRIMARY KEY (CODIGO) USING INDEX);
PROMPT TABLA ENFERMOS CREADA
PROMPT
--SELECT COUNT(*) FROM ENFERMOS; NUMERO DE REGISTROS
PROMPT INSERTAMOS REGISTROS EN ENFERMOS
PROMPT
INSERT INTO ENFERMOS ( CODIGO, NOMBRE, APELLIDOS)
VALUES ((SELECT COUNT(*)+1 FROM ENFERMOS),'NOM_ENF_1', 'APE1_ENF_1 APE2_ENF_2');
INSERT INTO ENFERMOS ( CODIGO, NOMBRE, APELLIDOS)
VALUES ((SELECT COUNT(*)+1 FROM ENFERMOS),'NOM_ENF_2', 'APE1_ENF_2 APE2_ENF_2');
INSERT INTO ENFERMOS ( CODIGO, NOMBRE, APELLIDOS)
VALUES ((SELECT COUNT(*)+1 FROM ENFERMOS),'NOM_ENF_3', 'APE1_ENF_3 APE2_ENF_3');
PROMPT ==========================================================================
Prompt TABLA MENFERMO
PROMPT **************
-- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
-CREATE TABLE MENFERMO
(CODIGO NUMBER(9) NOT NULL,
DESCRIPCION VARCHAR2(100) NOT NULL,
LUGAR VARCHAR2(100) NOT NULL,
CODIGOENF NUMBER(9) NOT NULL,
CONSTRAINT PK_MENF PRIMARY KEY (CODIGO) USING INDEX);
PROMPT TABLA MENFERMO CREADA
PROMPT
--SELECT COUNT(*) FROM MENFERMO; NUMERO DE REGISTROS
PROMPT INSERTAMOS REGISTROS EN MENFERMO
PROMPT
-- HAY QUE PONER CORRECTAMENTE EL CODIGOENF QUE CORRESPONDA AL ENFERMOS.CODIGO
INSERT INTO MENFERMO ( CODIGO, DESCRIPCION, LUGAR, CODIGOENF)
VALUES ((SELECT COUNT(*)+1 FROM MENFERMO),'NOM_ENF_1 APE1_ENF_1 APE2_ENF_2: METACARPO ROTO',
'TRAUMATOLOGIA',1);
INSERT INTO MENFERMO ( CODIGO, DESCRIPCION, LUGAR, CODIGOENF)
VALUES ((SELECT COUNT(*)+1 FROM MENFERMO),'NOM_ENF_2 APE1_ENF_2 APE2_ENF_2: UBI', 'UBI',2);
INSERT INTO MENFERMO ( CODIGO, DESCRIPCION, LUGAR, CODIGOENF)
VALUES ((SELECT COUNT(*)+1 FROM MENFERMO),'NOM_ENF_3 APE1_ENF_3 APE2_ENF_3: PLANTA1', 'PLANTA1',3);
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 32 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
PROMPT CREANDO RELACION ENTRE ENFERMOS Y MENFERMOS
PROMPT *******************************************
ALTER TABLE MENFERMO ADD (
CONSTRAINT FK_ENF_MEN FOREIGN KEY (CODIGOENF)
REFERENCES ENFERMOS (CODIGO));
PROMPT
PROMPT ==========================================================================
Prompt TABLA FARMACIA
PROMPT **************
-- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
-CREATE TABLE FARMACIA
(CODIGO NUMBER(9) NOT NULL,
DESCRIPCION VARCHAR2(100) NOT NULL,
UDS NUMBER(9) NOT NULL,
PRECIO NUMBER(9,3) DEFAULT 0,
DESTINO VARCHAR2(100),
OBSERVACIONES VARCHAR2(100),
CONSTRAINT PK_FAR PRIMARY KEY (CODIGO,PRECIO,DESTINO) USING INDEX);
PROMPT TABLA FARMACIA CREADA
PROMPT
PROMPT INSERTAMOS REGISTROS EN FARMACIA
PROMPT
INSERT INTO FARMACIA ( CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES)
VALUES (1,'PARACETAMOL', 100, 5.25, 'TRAUMATOLOGIA', 'CADUCA EL 1-1-2015');
INSERT INTO FARMACIA ( CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES)
VALUES (1,'PARACETAMOL', 50, 7.33, 'PLANTA1', 'CADUCA EL 1-1-2017');
INSERT INTO FARMACIA ( CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES)
VALUES (2,'VITAMINA_C', 55, 15.33, 'UBI', 'CADUCA EL 1-1-2014');
PROMPT ==========================================================================
Prompt TABLA APARATOS
PROMPT **************
-- ID INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
-- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
CREATE TABLE APARATOS
(ID NUMBER(9) NOT NULL,
CODIGO NUMBER(9) NOT NULL,
DESCRIPCION VARCHAR2(100) NOT NULL,
UDS NUMBER(9) NOT NULL,
PRECIO NUMBER(9,3) DEFAULT 0,
DESTINO VARCHAR2(100),
OBSERVACIONES VARCHAR2(100),
CONSTRAINT PK_APA PRIMARY KEY (ID) USING INDEX);
PROMPT TABLA APARATOS CREADA
PROMPT
PROMPT INSERTAMOS REGISTROS EN APARATOS
PROMPT
INSERT INTO APARATOS ( ID, CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES)
VALUES ((SELECT COUNT(*)+1 FROM APARATOS), 1,'RAYOS_X', 2, 25103.25, 'TRAUMATOLOGIA', 'REVISION ANUAL EN AGOSTO');
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 33 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
INSERT INTO APARATOS ( ID, CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES)
VALUES ((SELECT COUNT(*)+1 FROM APARATOS), 1,'RAYOS_X', 1, 19744.33, 'PLANTA1', 'SECCION PEDIATRIA');
INSERT INTO APARATOS ( ID, CODIGO, DESCRIPCION, UDS, PRECIO, DESTINO, OBSERVACIONES)
VALUES ((SELECT COUNT(*)+1 FROM APARATOS), 2,'DESFIBRILADOR', 3, 2400.33, 'UBI', 'REVISION MENSUAL');
PROMPT ==========================================================================
Prompt TABLA MAPARATO
PROMPT **************
-- CODIGO INTEGER DE HASTA 9 DIGITOS, USAREMOS NUMBER(9)
-CREATE TABLE MAPARATO
(CODIGO NUMBER(9) NOT NULL,
DESCRIPCION VARCHAR2(100) NOT NULL,
CODIGOAPAR NUMBER(9) NOT NULL,
LUGAR VARCHAR2(100) NOT NULL,
FECHA DATE DEFAULT SYSDATE,
CONSTRAINT PK_MAP PRIMARY KEY (CODIGOAPAR) USING INDEX);
PROMPT TABLA MAPARATO CREADA
PROMPT
PROMPT INSERTAMOS REGISTROS EN MAPARATO
PROMPT
-- HAY QUE PONER CORRECTAMENTE EL CODIGOAPAR QUE CORRESPONDA AL APARATOS.ID
INSERT INTO MAPARATO ( CODIGO, DESCRIPCION, CODIGOAPAR, LUGAR, FECHA)
VALUES (1,'RAYOS_X DE TRAUMATOLOGIA A UBI', 1,'UBI', '01-01-2009');
INSERT INTO MAPARATO ( CODIGO, DESCRIPCION, CODIGOAPAR, LUGAR, FECHA)
VALUES (2,'RAYOS_X DE PLANTA1 A TRAUMATOLOGIA', 2, 'TRAUMATOLOGIA','01-03-2009');
INSERT INTO MAPARATO ( CODIGO, DESCRIPCION, CODIGOAPAR, LUGAR, FECHA)
VALUES (3,'DESFIBRILADOR DE UBI A PLANTA1', 3, 'PLANTA1','01-01-2009');
PROMPT CREANDO RELACION ENTRE APARATOS Y MAPARATO
PROMPT *******************************************
ALTER TABLE MAPARATO ADD (
CONSTRAINT FK_APA_MAP FOREIGN KEY (CODIGOAPAR)
REFERENCES APARATOS (ID));
PROMPT
PROMPT ==========================================================================
PROMPT
PROMPT ESTRUCTURA DE TABLAS Y DATOS CREADAS
PROMPT FIN DEL PROCESO - by JAVIER CASTAÑÓN - BD08001 - CURSO EXPERTO UNIVERSITARIO EN BBDD - UNED - 2.009
SPOOL OFF
RESULTADO:
SQL> @C:/app/javcasta/OraHome_1/BIN/scripts_sql/55A.sql
tama±o linea 80
tama±o pagina 24
SP2-0311: cadena esperada pero no encontrada
Escape = \
SPOOL BD08001_CREA_TABLAS_EJERCICIO55.LOG
EJERCICIO 5.5
===============
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 34 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Borrando tablas
===============
Tabla borrada.
Tabla borrada.
Tabla borrada.
Tabla borrada.
Tabla borrada.
Tabla borrada.
Tabla borrada.
TABLAS BORRADAS
==============
Creando tablas
==============
=============================================================
TABLA PERSONAL
**************
Tabla creada.
TABLA PERSONAL CREADA
INSERTAMOS REGISTROS EN PERSONAL
1 fila creada.
1 fila creada.
1 fila creada.
1 fila creada.
1 fila creada.
1 fila creada.
=============================================================
TABLA MPERSONA
**************
Tabla creada.
TABLA MPERSONA CREADA
CREANDO RELACION ENTRE MPERSONA Y PERSONAL
******************************************
Tabla modificada.
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 35 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
INSERTAMOS REGISTROS EN MPERSONA
1 fila creada.
1 fila creada.
1 fila creada.
==========================================================================
TABLA ENFERMOS
**************
Tabla creada.
TABLA ENFERMOS CREADA
INSERTAMOS REGISTROS EN ENFERMOS
1 fila creada.
1 fila creada.
1 fila creada.
==========================================================================
TABLA MENFERMO
**************
Tabla creada.
TABLA MENFERMO CREADA
INSERTAMOS REGISTROS EN MENFERMO
1 fila creada.
1 fila creada.
1 fila creada.
CREANDO RELACION ENTRE ENFERMOS Y MENFERMOS
*******************************************
Tabla modificada.
==========================================================================
TABLA FARMACIA
**************
Tabla creada.
TABLA FARMACIA CREADA
INSERTAMOS REGISTROS EN FARMACIA
1 fila creada.
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 36 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
1 fila creada.
1 fila creada.
==========================================================================
TABLA APARATOS
**************
Tabla creada.
TABLA APARATOS CREADA
INSERTAMOS REGISTROS EN APARATOS
1 fila creada.
1 fila creada.
1 fila creada.
==========================================================================
TABLA MAPARATO
**************
Tabla creada.
TABLA MAPARATO CREADA
INSERTAMOS REGISTROS EN MAPARATO
1 fila creada.
1 fila creada.
1 fila creada.
CREANDO RELACION ENTRE APARATOS Y MAPARATO
*******************************************
Tabla modificada.
==========================================================================
ESTRUCTURA DE TABLAS Y DATOS CREADAS
FIN DEL PROCESO - by JAVIER CASTAÐËN - BD08001 - CURSO EXPERTO UNIVERSITARIO EN
BBDD - UNED - 2.009
SQL>
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 37 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
 Ejercicio 5.6
Crear una vista que muestra los registros de las tablas PERSONAL y MPERSONAL,
ligados por el código de la persona.
SET LINESIZE 60
prompt EJERCICIO 5.6
CREATE VIEW PERSONAL_Y_MOVIMIENTOS
(CODIGOPERSONA, CODIGO_MOVIMIENTO, NOMBRE, APELLIDOS, CATEGORIA, FECHA_ENTRADA,
FECHA_SALIDA,
FECHA_MOVIMIENTO, DESCRIPCION_MOVIMIENTO, LUGAR_MOVIMIENTO) AS
SELECT P.CODIGO, M.CODIGO, P.NOMBRE, P.APELLIDOS, P.CATEGORIA, P.FECHENTRADA, P.FECHSALIDA,
M.FECHA, M.DESCRIPCION, M.LUGAR
FROM PERSONAL P, MPERSONA M
WHERE M.CODIGOPER=P.CODIGO;
PROMPT ..............................
SELECT * FROM PERSONAL_Y_MOVIMIENTOS;
 Ejercicio 5.7
Con SQL Plus, escribir el comando select * from PERSONAL y observar que se nos ofrece el contenido de los
registros de la tabla PERSONAL. Comprobar el efecto de este comando sobre otras tablas.
SQL> SELECT * FROM PERSONAL;
CODIGO
---------NOMBRE
-----------------------------------------------------------APELLIDOS
-----------------------------------------------------------CATEGORIA
FECHENTR FECHSALI
-------------------- -------- -------1
ANTONIO
SANTOS FLORES
MEDICO
12/04/09 23/12/12
2
BARTOLO
ALVAREZ CASTRO
ENFERMERO
12/04/09 23/12/12
3
CARLOS
GOROSTIAGA GONZALEZ
AUXILIAR
12/04/09 23/12/12
CODIGO
---------NOMBRE
-----------------------------------------------------------APELLIDOS
-----------------------------------------------------------CATEGORIA
FECHENTR FECHSALI
-------------------- -------- -------4
NOMBRE_4
APE1_4 APE2_4
MEDICO
01/01/09 23/12/12
5
NOMBRE_5
APE1_5 APE2_5
ENFERMERO
01/02/09 23/12/12
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 38 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
6
NOMBRE_6
APE1_6 APE2_6
AUXILIAR
01/03/09 23/12/12
6 filas seleccionadas.
Con el SQL Developer:
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 39 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 40 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
 Ejercicio 5.8
Realizar un programa en Java que muestra los registros de las diferentes tablas de la base de datos creada en los
ejercicios anteriores. Para ello el programa cargará un recorset con el resultado de la consulta correspondiente y
lo mostrará. No es necesario que se pueda modificar desde el programa el contenido de los registros.
El programa se realizará a partir del proyecto DbFactoria de la unidad didáctica 4.
Descargo e instalo el driver jdbc para Oracle.
Ojdbc5.jar, ojdbc6.jar y los guardo en
C:\Archivos de programa\Java\jdk1.6.0_11\jre\lib\ext
Inserto un JOptionPane
…
import javax.swing.JOptionPane;
//....
public class DirectConnExample extends javax.swing.JFrame {
public String latabla="";
/**
* Creates new form DirectConnExample
*/
public DirectConnExample() {
latabla=JOptionPane.showInputDialog("Elige tabla: personal, mpersona,
enfermos, menfermo, farmacia, aparatos, maparato");
//String url = "jdbc:mysql://localhost:3306/baseDeDatos";
//String url = "jdbc:mysql://ieec7.ieec.uned.es:3306/test";
String url = "jdbc:oracle:thin:@pc1:1521:ORCL0506";
String driverName = "oracle.jdbc.driver.OracleDriver";
//String user = "usuario";
String user = "sys as sysdba";
//String passwd = "password";
String passwd = "manager";
String query = "select * from " + latabla;
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 41 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 42 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
* Exporto la bbdd ORCL0506
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 43 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 44 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Tras varios intentos con error. Opto por exporter con SQL Developer.
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 45 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Errores …
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 46 de 47
Nombre y apellidos: Fco Javier Castañón Gonzalez-Palacios - Usuario: bd08001
Otro método, dede la shell de Windows:
C:\ >exp sys/manager@ORCL0506 file=exportORCL0506.dmp full=y log=export.log
Errores del listener? (he redefinido el listener y definido otro listener y nada).…
Bueno, no lo considero preocupante, ya que la bbdd es operativa (funcionalmente hablando).
Y también ya que en el script Ejercicio55.sql se crean las tablas y sus datos.
Doc: UD5.doc del Usuario: bd08001 del XII Curso de Experto Universitario en Sistemas de Gestión de Bases de Datos
Página 47 de 47
Descargar