Você está na página 1de 51

/

Paso 1: bajar el firewall de Windows y cambiar la máscara de subred 255.255.0.0


Este es un ejemplo
Paso 2: copiar su ip poner a la máquina virtual 11
Es decir cambiar la mascara de subre es 255.255…..0 entonces la mascara de su máquina
virtual será 255.255.0.0l

Paso 3: Abrir VMware Workstation Pro Como Administrador


Luego encienden su máquina virtual:Y Poner Abrir Máquina Virtual Oracle Linux 64

Una vez puesto debemos buscar en la máquina virtual Network Adapter y poner
Bridged: Connect Directily….
Luego Iniciamos en Power on this virtual machine y esperamos a que se abra completo:
Paso 3: configurar bajo root el hosts y el hostname
Luego Poner no esta en lista

Luego Ponemos root y de contraseña : oracle


Luego Ponemos click Derecho y Elegimos Abrir un Terminal

Luego Escribimos vi /etc/hosts y Presionamos enter


Luego nos aparece esto:

Luego apretamos cualquier botón y ponemos nuestra primera letra de su nombre más su
apellido paterno
Luego de cambiar el nombre ponemos Esc y escribimos lo siguiente = :x y
presionamos enter

Y nos dirigire aca

Ojo que estamos bajo el usuario root


Aquí también ponen primera letra de su nombre más su apellido paterno
Solo en la parte del nombre por ej
Lponcedeleon.upsjb.edu.pe
Luego se logean como oracle
Bajo el usuario Oracle vamos a modificar 3 archivos
.bash_profile
tnsnames.ora
listener.ora
Yo puse maquina1.upsjb.edu.pe porque le puse ese nombre ejemplo al hosts y hostname
Uds van a colocar
Aquí tb ponen primera letra de su nombre más su apellido paterno
Con cat visualizamos los cambios
Una vez modificado el .bash_profile procedemos a modificar el tnsnames.ora y listener.ora

Respetando mayúsculas y minúsculas


Aquí tb ponen primera letra de su nombre más su apellido paterno
Luego modificamos el listener.ora
Aquí tb ponen primera letra de su nombre más su apellido paterno
Ojo si hubiera más nombres que modificar, se modifica todos
Luego cambiamos el ip de la tarjeta de red virtual
Luego entramos a la tuerquita

Vamos a donde dice ipv4


Solo se debe modificar aquí el IP y la máscara de red
Luego apagamos y encendemos la red para que cambie el ip
Luego salimos del usuario Oracle y bajo el usuario root reiniciamos la máquina virtual

Luego entran de nuevo con el usuario root

Elegimos : ¿no está en la lista?


Contraseña: oracle
Entramos al usuario oracle

Y entramos al sqlplus / as sysdba

Les va aparecer instancia inactiva lo que significa que deben levantar la base de datos con
startup

EXI
Salen de la consola del sqlplus con exit

Luego ejecutan el comando lsnrctl start bajo el usuario oracle


Si todo está ok les debe aparecer al final el comando ha terminado correctamente
Luego hay de dejar 2 ping activos
Uno de la máquina virtual a la pc
En un terminal nuevo bajo root
Y también hacen ping desde Windows a la máquina virtual
Luego abren el sqldeveloper bajo windows
El usuario es system
La contraseña es oracle
El puerto 1521
El SID oracle
El nombre de host es el IP de su máquina virtual
El nombre de conexión puede ser cualquier nombre, pero mantengan un estandar
Una vez conectados empecemos a programar
Vamos a crear tablas primero

Para ejecutar el script, lo marcan primero


Y luego presionan la flechita verde

Cuando lo ejecuten les saldrá un mensaje en la parte inferior

Al expandir el panel izquierdo en donde dice tablas, podremos ver la tabla creada
Nos desplazamos un poco hacia abajo
Y verificamos que este creada
A ver voy a dar libertad de hacerlo individual o en grupo max de 3
Los códigos de programación deben ser diferentes
Luego nos desplazamos de nuevo a nuestra ventana de código

Ahora vamos a ver las principales funciones de Oracle y su funcionamiento

Para ejecutar lo marcan


Y flechita verde
El primer parametro es cualquier palabra
El segundo parámetro es lo que voy a buscar
El tercer es de que posición empieza la busqueda
Recuerden que toda sentencia SQL termina en “;”
Para ejecutar alguna sentencia SQL deben marcar el bloque y presionar la flechita verde
El segundo ejemplo ves 5 pq empieza la búsqueda desde 3 y la primera ocurrencia de
búsqueda de la letra A es la posición 5
Ahora vamos con la siguiente función substr

La siguiente función es mod


La función decide permite evaluar una condición
Primero cuando ingresan una cadena por ejemplo pedro
Debe estar siempre entre comillas simples es decir 'pedro'
Si se dan cuenta en en ejercicio pongo entre comillas simples Si es múltiplo de 3 y No es
múltiplo de 3
Ya que son caracteres
Los caracteres o alfanumérico s se ponen entre comillas simples
Se puede pero eso lo vamos a usar en otra cosa y puede darles conflicto
Alfanumérico : pedro123
Se mezcla número y caracteres
'pedro123'
Cuando es sólo número va sin comillas simples
En el ejemplo evaluó si 27 es múltiplo de 3
Es decir su residuo debe ser cero
Explicó el decode
El primer parámetro puede ser una palabra, número o función que voy a evaluar
El resultado del primer parámetro se compara con el segundo parámetro
Si es verdad se cumple el tercer parámetro
Si es falso evalúa el cuarto parámetro
Veamos otros ejemplos con decode

Por ejemplo aquí se observa una comparación entre caracteres


La primera no cumple
Y la segunda si
Ejemplo:

Cuando lo ejecutan aparece en la parte inferior el resultado

Ahora vamos anidar decodes

Aquí hemos anidado decodes


Ahora vamos a concatenar caracteres

También se puede concatenar con funciones o condicionales

Ahora sí quiero concatenar un número, primero debemos convertirlo a caracter con la


función to_char y luego concatenarlo
Ahora pasamos a DML
Vamos a utilizar el insert
Explicación, como la tabla creada al inicio tiene 2 campos, se debe colocar en el primer
parámetro los campos que voy a utilizar en el insert, luego en values pongo la información
que voy a insertar
Se respeta en todo momento las comillas simples para caracter y los alfanumérico s
Tambien en la parte de values puedo poner funciones
El conmit es para cerrar la transacción
Es decir si inserto y no pongo conmit bloqueo la base de datos
Y ningún usuario puede ver el ingreso de la información
Aquí insertamos un número pero en un campo caracter, para ello primero se convierte
Vamos añadir un campo a la tabla creada mitabla
Cómo recordarán mi tabla tenía 2 campos

Vamos añadir un campo numérico


Una vez añadido el campo debemos refrescar para visualizar el nuevo campo
Vamos a crear un procedure
La primera parte es la cabecera

La foto muestra la cabecera del procedure


Luego viene la sección de declaración de variables
Que va entre el IS y el BEGIN
Luego el cuerpo del proceder en donde se programa toda la lógica... Se acuerdan del
diagrama de actividades y caso de uso
La sección se encuentra entre el BEGIN y END;

Se pone create ir replace pq así podemos reemplazar una modificación osea recompilar el
código PL/SQL(sql de Oracle)
Después prc_insertasuma es el nombre del procedure. Cómo les expliqué antes el standard
es fundamental para identificar que objeto es un procedimiento
Luego viene los parámetros
Los parámetros son los valores que voy a ingresar y que va procesar el procedimiento
A diferencia del tipo de datos de una tabla, los tipos de datos de los parámetros de
procedure NO LLEVAN TAMAÑO
Debajo del IS se pone las variables auxiliares que voy a utilizar
En el ejemplo solo puse 1 varible
Ahora vamos a programar
(audio 1)
(audio 2)
No se olviden de marcar cada bloque y ejecutar la flechita verde
Para el procedure se toma desde el create hasta el end
Ahora vamos a usar valores
Con for
Lo dejo ahí para que repasen
Mañana hacemos for e ir y les dejo el trabajo
Continuamos
Vamos a explicar el uso del for
Sintaxis del IF
La función UPPER pone en mayúsculas la palabra y LOWER en minúsculas
Por ej select upper('pozo') from dual;
Resultado: POZO
Vayamos ahora al programa

les envío el código para que lo tengan y lo puedan ejecutar el día sábado
explicamos el procedure
en la cabecera se puede observar que el procedure tiene un parámetro. Este parámetro es
un número que es el tope máximo de suma.
Defino una variable auxiliar en la sección declarativa llamada vSUMA de tipo number(15,2)
Luego en el for la variable 1 va contar de 1 en 1 hasta el valor que pusieron en pPARAM1
es decir si en pPARAM pusieron 7
el FOR contará 1 2 3 ..... hasta 7
El I=1 al inicio
y I=7 al final
la condicional IF dice
Si I(al inicio es 1) <= 5 entonces vSUMA:=1(I al inicio) + 3
esto nos da 4
Luego inserta la suma y lo registra con commit
En caso de que I sea mayor a 5 se ejecuta la sentencia después del ELSE
execute PRC_INSERTASUMABUCLE(7); va insertar una suma con 7
mitabla al inicio tiene los siguientes registros
después de ejecutar el procedure PRC_INSERTASUMABUCLE(7);
- creación de tablas
- foreign key
- primary key
Por ejemplo tenemos la tabla producto_tab y tipo_producto_tab
Aquí existe una relación padre e hijo
Por consiguiente primero vamos a crear su campo y primary key
Cómo se puede observar en el ejemplo he creado 2 tablas 1 padre y otra hijo, es muy
importante identificar cuál es cuál para poder relacionarlas
También les dejo un ejemplo para eliminar la tabla en caso de que error al crearla
Ahora vamos a crear la primary key en ambas tablas

Aquí creamos la primary key sobre el campo que no va tener información repetida
Observen el estándar
En caso de llave con múltiples campos:

Aquí se observa una primary key con 2 campos


Se puede observar también que un hijo puede ser padre, es decir la tabla producto_tab es
hijo de t_producto_tab y es también padre de det_boleta_tab
Ahora vamos a relacionar las tablas con sentencia sql
Aquí se crean 3 tablas relacionadas
En dónde los fks se modifican para añadirlo

Ahora si se dan cuenta hay un orden para insertar los registros


Primero se debe insertar en las tablas padres y luego en la tabla hijo
es decir si por ejemplo ponen primero PRODUCTO_TAB antes de T_PRODUCTO_TAB, les
aparecerá un error de integridad referencial
Debido a que uds. no pueden ingresar un producto que no tenga un tipo de producto
previamente registrado
un bebé puede nacer sin padres?
esa es la lógica
observen que producto_tab tiene un campo COD_TIPO_PROD
ahora piensen 1 minuto
que pasaría si quisieran ingresar un producto sin ningún tipo de producto
ese caso es imposible porque requiere que antes se registre el tipo de producto en la tabla
T_PRODUCTO_TAB
El orden de la inserción es crítica
Stewar: ​Disculpe Ingeniero, el COD-TIPO-PROD no está en T-PROD-TAB?
En lugar de estar en producto-tab?
Ponce:​ asi es, pq el el padre
Ponce:​ y el hijo es producto_tab
Ponce:​ y hereda ese campo de t_producto_tab
Stewar:​ Entonces es tambien el padre de los campos del hijo?
Ponce: ​es por ello que la información primero se ingresa en el padre
Ponce: ​pq sino no hubiera forma de relacionarla con el hijo
Ponce: ​el campo de relación siempre va estar en ambas tablas
Ponce: ​tanto en el padre como el hijo
Ponce:​lo importante es que identifiquen al padre primero
Ponce: ​y el padre siempre será el que tenga el campo de relación como primary key
Ponce: ​OJO no parcial de primary key
Ponce: ​sino total
Ponce: ​y esto se explica mejor en la otra inserción
Ponce: ​fijense que en :
Ponce:
INSERT
INTO DET_BOLETA_TAB
(NRO_BOLETA , COD_PRODUCTO , CANTIDAD , PRECIO )
values ('B'||TO_CHAR(I) , 'P'||TO_CHAR(I) , I , I+10 );

Ponce: ​DET_BOLETA_TAB tiene una primary key con 2 campos:


Ponce: ​NRO_BOLETA y COD_PRODUCTO
Ponce: ​y COD_PRODUCTO es primary key de la tabla PRODUCTO_TAB
Ponce: ​Entonces PRODUCTO_TAB es la tabla padre pq su PRIMARY KEY es TOTAL en
campo en DET_BOLETA_TAB es parcial es decir COD_PRODUCTO es parte de una
primary key
Ponce: ​recuerden que las primary key se crean así:
Ponce: ​ALTER TABLE T_PRODUCTO_TAB ADD CONSTRAINT PK_T_PRODUCTO
PRIMARY KEY(COD_TIPO_PROD);
ALTER TABLE PRODUCTO_TAB ADD CONSTRAINT PK_PRODUCTO
PRIMARY KEY(COD_PRODUCTO);
Ponce: ​ALTER TABLE DET_BOLETA_TAB ADD CONSTRAINT PK_DET_BOLETA
PRIMARY KEY(NRO_BOLETA, COD_PRODUCTO);
Ponce: ​Recuerden lo que hicimos en UML y normalización
Ponce: ​Es lo mismo lo único es que ahora esta en SQL
Ponce: ​Espero sus preguntas
Ponce: ​hasta aqui es la práctica para el sábado, el día de mañana lo subo al whatapp o
mas tarde
Ponce: ​voy a responder por aqui
Ponce: ​Buenos dias ingeniero una consulta a que se refiere usted com parcial pk y total
pk??
Ponce: ​Total te sirve para identificar quien es el padre
Ponce: ​La PK de PRODUCTO_TAB --> COD_PRODUCTO
Ponce: ​La PK de DET_BOLETA_TAB --> NRO_BOLETA y COD_PRODUCTO
Ponce: ​Viendo eso la pregunta es quien es el padre?
Ponce:​ el padre es PRODUCTO_TAB debido a que el campo cod_producto lo tiene como
PK total
Ponce: ​en cambio DET_BOLETA_TAB lo tiene al campo COD_PRODUCTO como parcial
es decir lo comparte con NRO_BOLETA
Ponce: ​ Otro ejemplo si la TABLA ABC tiene como PK los campos X,Y
Ponce: ​ y la tabla LOCO tiene como pk los campos X,Y, Z
Ponce: ​ Quién es el padre ABC o LOCO?

Você também pode gostar