INDICE

Tema No. 1 Sección No. 1: Ingreso al SQL*Plus de ORACLE.


Antes de comenzar la clase una Reflexión.


CARTA DE ALBERT EINSTEIN A SU HIJA.


A Lieserl Einstein: Cuando propuse la teoría de la relatividad, muy pocos me entendieron, y lo que te revelaré ahora para que lo transmitas a la humanidad también chocará con la incomprensión y los perjuicios del mundo.

Te pido aun así, que la custodies todo el tiempo que sea necesario, años, décadas, hasta que la sociedad haya avanzado lo suficiente para acoger lo que te explico a continuación.
Hay una fuerza extremadamente poderosa para la que hasta ahora la ciencia no ha encontrado una explicación formal. Es una fuerza que incluye y gobierna a todas las otras, y que incluso está detrás de cualquier fenómeno que opera en el universo y aún no haya sido identificado por nosotros. Esta fuerza universal es el AMOR.

Cuando los científicos buscaban una teoría unificada del universo olvidaron la más invisible y poderosa de las fuerzas.

El Amor es Luz, dado que ilumina a quien lo da y lo recibe. El Amor es gravedad, porque hace que unas personas se sientan atraídas por otras. El Amor es potencia, porque multiplica lo mejor que tenemos, y permite que la humanidad no se extinga en su ciego egoísmo. El amor revela y desvela. Por amor se vive y se muere. El Amor es Dios, y Dios es Amor.

Esta fuerza lo explica todo y da sentido en mayúsculas a la vida. Ésta es la variable que hemos obviado durante demasiado tiempo, tal vez porque el amor nos da miedo, ya que es la única energía del universo que el ser humano no ha aprendido a manejar a su antojo.

Para dar visibilidad al amor, he hecho una simple sustitución en mi ecuación más célebre. Si en lugar de E= mc2 aceptamos que la energía para sanar el mundo puede obtenerse a través del amor multiplicado por la velocidad de la luz al cuadrado, llegaremos a la conclusión de que el amor es la fuerza más poderosa que existe, porque no tiene límites.

Tras el fracaso de la humanidad en el uso y control de las otras fuerzas del universo, que se han vuelto contra nosotros, es urgente que nos alimentemos de otra clase de energía. Si queremos que nuestra especie sobreviva, si nos proponemos encontrar un sentido a la vida, si queremos salvar el mundo y cada ser sintiente que en él habita, el amor es la única y la última respuesta.

Quizás aún no estemos preparados para fabricar una bomba de amor, un artefacto lo bastante potente para destruir todo el odio, el egoísmo y la avaricia que asolan el planeta. Sin embargo, cada individuo lleva en su interior un pequeño pero poderoso generador de amor cuya energía espera ser liberada.

Cuando aprendamos a dar y recibir esta energía universal, querida Lieserl, comprobaremos que el amor todo lo vence, todo lo trasciende y todo lo puede, porque el amor es la quinta esencia de la vida.

Lamento profundamente no haberte sabido expresar lo que alberga mi corazón, que ha latido silenciosamente por ti toda mi vida. Tal vez sea demasiado tarde para pedir perdón, pero como el tiempo es relativo, necesito decirte que te quiero y que gracias a ti he llegado a la última respuesta!.

Tu padre,

Albert Einstein







PARA APRENDER BASES DE DATOS, SE EJECUTARÁN LOS SIGUIENTES PASOS:

  • Estando en la Máquina Virtual, hacer Doble Clic en SQL PLUS.



  • Cuando solicite “User Name” responder “scott” y el “Password” es “tiger”. Luego seleccionar “OK”.








  • Creando una Tabla:


La Sintaxis para crear una Tabla es bastante completa:

CREATE TABLE NombreTabla (

Columna1 TIPO NOT NULL,

Columna2 TIPO NOT NULL,

Columna3 TIPO ,

PRIMARY KEY (columna1, columna2) CONSTRAINT ConPrimNombre,

FOREING KEY (columna3)

REFERENCES tabla (columna) CONSTRAINT ConForNombre,

UNIQUE (columna5, columna6) CONSTRAINT ConUniNombre,

CHECK (columna7 condición));


Ahora bien, en esta fase inicial se puede utilizar esta misma sintaxis de una manera más sencilla de la siguiente forma:


SQL> CREATE TABLE NombreTabla (

Columna1 TipoCaracter (Tamaño4),

Columna2 TipoCaracter (Tamaño20),

Columna3 TipoNumerico (Tamaño10));


Al observar la instrucción CREATE TABLE, se deben tener en cuenta varios aspectos importantes:


1. Los Comandos del SQL Plus de ORACLE terminan con Punto y Coma.

2. Después del Nombre de la tabla se coloca un paréntesis que abre.

3. Cada fila de la creación de la tabla termina con coma, excepto la última fila.

4. En la última fila, la instrucción termina con)); es decir doble paréntesis y punto y coma. El paréntesis Azul cierre el que abre del Tamaño. El Rojo cierra el del Nombre de la tabla.


OJO PELAO : Como ya se explicó, para facilitar la curva de aprendizaje en esta fase inicial, se va a utilizar una Sintaxis más sencilla y en el futuro se explicará el uso de estos parámetros adicionales. También es importante recordar, que en ambiente WINDOWS no se diferencia entre mayúscula y minúscula.


Tipos de datos Básicos necesarios para esta fase inicial.

VARCHAR2 es el tipo Carácter necesario para campos descriptivos como Nombre, Dirección y otros.

NUMBER se refiere a Campos Numéricos.

DATE se utiliza para los campos tipo Fecha.


REGLAS BASICAS PARA LA CREACIÓN DE TABLAS.

  1. La longitud debe estar entre 1 – 30 caracteres, el primer carácter debe ser alfabético.

  2. Debe contener sólo caracteres.

  3. No debe ser una palabra reservada de ORACLE

  4. No debe existir otro objeto con el mismo nombre y del mismo usuario.



ERRORES COMUNES CREANDO UNA TABLA.


OJO PELAO : Suponga que se va a crear una Tabla denominada error_de_sintaxis en donde se va a colocar un error intencional para explicar cómo se corrige. Note que donde se debe colocar VARCHAR2 de manera intencional se va a colocar la palabra VACHACO2.





Aunque el Manejador de Base de Datos indica que hace falta un paréntesis derecho, la realidad es que la palabra VACHACO2 es la que está generando el error, de hecho colocó un asterisco debajo de la sintaxis incorrecta.



Para corregirlo, se debe invocar el editor en Línea disponible, el cual en este caso es el BLOC DE NOTAS de Windows. Para invocarlo se escribe ed y <ENTER>.


De esta forma aparecerá el Editor en Línea:

Se cambia el error que dice VACHACO2 por la palabra reservada correcta que es VARCHAR2, se le dice “Archivo”, luego “Salir” y por ultimo “Guardar”.


Cuando se vuelva a la línea de Comandos, solo se escribirá / y <ENTER>



OTRO ERROR COMUN.


Es necesario observar que la instrucción original anterior terminó con punto y coma.


Luego cuando se entró al Editor para corregir el error, se desapareció el punto y coma con que se terminó la instrucción en la línea de Comandos.



De hecho, el Editor colocó por su propia cuenta un SLASH / para sustituir el punto y coma en la línea siguiente después del doble paréntesis.


OJO PELAO : En resumen, en el Editor NUNCA se debe colocar punto y coma, ya que su presencia generará un error. Este símbolo (;) es solo para terminar instrucciones en la línea de Comandos y no en el Editor.


Ahora, si se desea crear una tabla denominada error_de_sintaxis2 desde el Editor, y se coloca punto y coma dentro del Bloc de Notas como sigue:



Al ejecutar la Instrucción se generará un error.






Se han aprendido los Errores comunes. Ahora Si ¡!!! CREANDO UNA TABLA







ESTRUCTURA DE UNA TABLA


Para revisar la estructura de una tabla, se utiliza la siguiente instrucción:


DESCRIBE Nombre de la Tabla


En este caso se pude resumir el comando como: DESC Nombre de la Tabla. Luego ORACLE responderá con la estructura de la Tabla.



Ejemplo






SALIR DEL SQL/PLUS DE ORACLE.


La Instrucción para salir es EXIT.


INCLUYENDO INFORMACION EN UNA TABLA


La instrucción INSERT permite insertar filas en una tabla.


Sintaxis


INSERT INTO nombre_tabla [(columna1, columna2 . . . )]

VALUES (valor1, valor2 . . . )



Incluyendo algunas columnas


Cuando la información que se va a incluir en una tabla no corresponde a todas las columnas de dicha tabla, se deben especificar todas las columnas de dicha tabla, es decir, se deben especificar todas las columnas que vamos a utilizar. Debe existir una correspondencia univoca entre las columnas que se van a incluir y los valores especificados en la cláusula VALUES.


Sintaxis



SQL> INSERT INTO nombre_tabla (columna1, columna2, . . , columnaN)

2 VALUES (valor1, valor2, . . . , valorN);


Ejemplo



Incluir un nuevo Cliente en la tabla Clientes, del cual solo tenemos su Código y su nombre y por supuesto su estatus será ‘A’. En este caso no conocemos su Límite de crédito.






Incluyendo todas las columnas


Insertando valores en todas las columnas. Si no se especifican las columnas, se asume, que las columnas están en el mismo orden en que se suministran lo valores.


Sintaxis


SQL> INSERT INTO nombre_tabla

2 VALUES (valor1, valor2, . . . , valorN);


Ejemplo


Incluir los Datos Completos de un Cliente.






CONSULTANDO LA INFORMACION EN UNA TABLA


Ahora bien, hemos ejecutado dos instrucciones de Inclusión, pero todavía no hemos constatado si se está incluyendo correctamente. Para ello, necesitamos revisar si las Filas o Registros creados, realmente se encuentran en la Tabla de Clientes. En consecuencia, vamos a revisar un Comando que en mi opinión es el mas poderoso de SQL. Me refiero al comando SELECT, el cual permite seleccionar Filas de cualquier Tabla, aunado al hecho, de que este comando es capaz de ejecutar un grupo importante de funciones adicionales.


La instrucción SELECT nos permite obtener información de una o varias tablas. Cuando utilizamos varias tablas en la instrucción SELECT y necesitamos hacer referencia a una columna que se encuentra definida con el mismo nombre en dos o más tablas debemos cualificar las columnas, que no es más que preceder a dicha columna con el nombre de la tabla.




Sintaxis

SELECT campo1, campo2. . . . . , campoN

FROM tabla



Ejemplo


Mostrar el código y el nombre de todos los clientes que se encuentran en la tabla CLIENTES.




La cláusula WHERE en el SELECT


Adicionando la Cláusula WHERE a una Instrucción SELECT, podemos restringir la consulta a valores específicos que deseamos consultar.


Ejemplo


Mostrar el Código, Nombre y Límite de Crédito del Cliente cuyo Código es igual a 0007.




Mas adelante se verá en detalle, que la cláusula WHERE tiene un abanico importante de opciones para ser utilizada en conjunto con el SELECT.


Ya en este punto se ha aprendido a crear una Tabla y se le han agregado valores a esa Tabla. Adicionalmente, se sabe como consultar los Datos en la Tabla. Por ello, se puede aprender como Modificar y Agregar Columnas a una Tabla.




MODIFICAR Y AGREGAR COLUMNAS A UNA TABLA


Una vez creada una Tabla, se puede Modificar su estructura mediante el uso del ALTER TABLE.


Sintaxis



ALTER TABLE Tabla

[ ADD Tipo de datos de la Columna]

[Modify Columna (Tipo de datos)]



Ejemplo


Ya se sabe la estructura de la Tabla de Clientes:



Como ejemplo, se desea adicionar la columna Teléfono a la Tabla de Clientes:





Seguidamente se desea que la columna Nombre sea de 30 caracteres:



Surge una incógnita. ¿Qué pasa si se desea dejar la Tabla de Clientes como estaba?. Es decir sin la Columna Teléfono y el Nombre de tipo VARCHAR2 de 25. El lector debe investigar como lograrlo.


Volviendo a la Inclusión de Datos.


En este momento, ya el lector ha colocado la Tabla de Clientes en su forma original:



En consecuencia, se seguirá trabajando con esta estructura.



Incluyendo usando parámetro


Cuando se desea incluir información de manera iterativa se emplea la macrosustitución.


Sintaxis



&codigo me permite leer el código, va entre comillas porque es Alfanumérico. &limcre me permite leer el Límite de Crédito no lleva comillas. El estatus en una Inclusión siempre será de valor A para que quede activo.


Para revisar todos los Campos de una tabla utilizo el comodín * en la Instrucción SELECT como sigue:




Incluyendo Múltiples Filas usando Query.


Cuando se desea incluir información proveniente de otra tabla, se procede de la siguiente manera:


Sintaxis



SQL> INSERT INTO nombre_tabla_destino (C1, C2, C3)

2 SELECT c1, c2, c3

  1. FROM nombre_tabla_fuente

  2. WHERE condicion;




Ejemplo



Imagine que se solicita crear una tabla de Proveedores con una estructura idéntica a la de Clientes. Luego se pide pasar a todos los clientes a la Tabla de proveedores de manera automática. Para tal fin, se procede como sigue:

  1. Usted debe crear una Tabla idéntica a la de Clientes, pero ahora llamarla Proveedores.(Ya se sabe cómo hacerlo).

  2. Crear una Secuencia, que puede comenzar en 1 e incrementarse de 1 en uno. Los Proveedores no van a quedar con los mismos códigos que los clientes, pero se van a incluir de manera automática.




  1. Ejecutar el comando SELECT necesario para realizar la Inclusión automática.



  1. Revisar si se hizo la inclusión de manera correcta.




En este momento ya se conoce una vía para respaldar una Tabla utilizando una secuencia. Ahora bien, existe otra vía para emitir un respaldo de una tabla sin utilizar una secuencia. En este caso, la intención sería respaldar una Tabla de manera idéntica a la existente. Para ello existe una instrucción que me permite realizar este proceso de una manera sencilla. La sintaxis es la siguiente:


CREATE TABLE NombreTablaRespaldo

AS SELECT * FROM TablaExistente;


Se requiere respaldar la Tabla de Clientes mediante una instrucción que haga lo siguiente:

  1. Cree una Tabla idéntica a la Tabla que se desea respaldar.(Clientes en este caso).

  2. Pase las Filas de una manera idéntica desde la Tabla ya existente a una Tabla de respaldo.


Para lograr los puntos 1 y 2, se procede como sigue:



Ya se ha creado un respaldo de la Tabla de Clientes denominado respaldo_clientes. Ya en esta tabla han sido incluidos los clientes existentes. Para verificar si se hizo la inclusión, se escribe:




MODIFICANDO INFORMACIÓN DE UNA TABLA


La instrucción UPDATE permite modificar la información contenida en una tabla.

Sintaxis



UPDATE nombre_tabla

SET campo1 = valor1,

Campo2 = valor2,

C3 = (select A

From nombre_tabla

Where condición),

(c4, c5) = (Select A, B

From nombre_tabla

Where condicion)

[ WHERE condición ]



Modificando una Fila(Un registro).


Ejemplo


Se desea cambiarle el Límite de Crédito al Proveedor SIDETUR cuyo código es 2. Para ello se procede como sigue:

Para chequear la actualización:


NOTA: el uso del WHERE en el UPDATE para un caso como este, es muy importante, de lo contrario habría cambiado todas las Filas (Registros) de la Tabla.


Modificando varias Filas.

Ejemplo


A los Proveedores que tengan un Límite de crédito Inferior a 3000, colocarlo en Cero y además cambiar su Estatus a la letra E.

Luego:


Ahora bien, se generó una diferencia en los Datos que tiene BECO como cliente y los que tiene como Proveedor. Como ejemplo se van a traer los datos que tiene como proveedor y se le colocarán al cliente, para así ejemplificar el uso del UPDATE utilizando datos de otra Tabla.



ELIMINANDO INFORMACION DE UNA TABLA


La instrucción DELETE elimina las filas de una tabla.


Sintaxis


DELETE FROM Nombre_Tabla

WHERE Condición;

Ejemplo

lo

Eliminar todos los Proveedores cuyo Estatus sea igual a E.

NOTA: el uso del WHERE en el DELETE para un caso como este, es muy importante, de lo contrario habría Eliminado todas las Filas (Registros) de la Tabla.


Luego:



USO DE TRANSACCIONES. (COMMIT y ROLLBACK).


Varios Manejadores de Bases de Datos, incluyendo ORACLE, poseen una herramienta basada en TRANSACCIONES.


En ORACLE, la herramienta en cuestión utiliza los comando COMITT y ROLLBACK. Por ello, cuando se están haciendo actualizaciones sobre las Tablas de la Base de Datos, realmente existe un proceso que pudiera catalogarse de “intermedio”, en donde las tablas no se actualizan “Completamente” hasta que no se ejecuta un COMMIT (El cual, se puede traducir como: Fin exitoso de una Transacción). Si por el contrario, no se desea que las operaciones se actualicen completamente sobre las tablas, se ejecuta un ROLLBACK. (Se puede traducir como: Retroceder todas las operaciones sobre las Base de Datos hasta el último COMMIT).



Ejemplo.


Se desea insertar un nuevo proveedor, denominado BECO con código 3 y Límite de Crédito 3500.


Para poder entender esta parte, lo primero que el estudiante hará será ejecutar la instrucción COMMIT así todas las operaciones que ha realizado hasta ahora quedarán grabadas y no se podrán retroceder.



Ahora se va a realizar la inclusión del nuevo proveedor:



Para verificar si se realizó la Inclusión:



Ahora se desea colocarle 6000 como límite de crédito a MAKRO, para ello se realiza lo siguiente:




Sin embargo, se pueden retroceder estas operaciones mediante el uso de la instrucción ROLLBACK. Es decir, al aplicar esta instrucción el Proveedor MAKRO estará nuevamente sin Límite de Crédito y desaparecerá el Proveedor BECO.



Ahora bien, ¿Por qué solo retrocedió las últimas dos operaciones y no retrocedió las anteriores?.


Porque el ROLLBACK retrocede las operaciones hasta el último COMMIT. Debe recordarse, que antes de incluir al Proveedor BECO se ejecutó un COMMIT, en consecuencia se le dijo al manejador que desde allí hacia atrás las operaciones no se pueden devolver.


Se van a realizar nuevamente las dos últimas operaciones.



Ahora se va a ejecutar un COMMIT.

Ahora se le va a cambiar el Límite de Crédito a MAKRO:


Ahora nuevamente se ejecutará un ROLLBACK:


Cuando se ejecute nuevamente el SELECT, se notará que solo devolvió la última operación, porque la Inclusión del proveedor BECO no se puede retroceder en vista de que ya se ejecutó un COMMIT.



Al salir de ORACLE se ejecuta un COMMIT automático.


ELIMINACIÓN FÍSICA VS ELMINACIÓN LÓGICA.


Ya se ha visto la manera de Eliminar Filas(Registros) de una Tabla utilizando el Comando DELETE. Es necesario acotar, que este tipo de Eliminación no deja pistas de lo ocurrido, porque la Información se Elimina Físicamente, es decir, deja de existir en las Tablas de la Base de Datos. Este proceso desde el punto de vista de Integridad y Seguridad de los datos se considera inadecuado.


Todo profesional de las Ciencias de la Computación, debe aprender que las eliminaciones en las Tablas deben hacerse de manera lógica. Es decir, la Fila (o Registro) va a seguir físicamente en la Tabla, pero no se tomará en cuenta desde el punto de vista lógico. Para ello, el profesional en cuestión se puede valer de la Columna (Campo) Estatus. Por lo general, se entiende que cuando una Fila tiene la Columna estatus en A es porque se encuentra activa y cuando tiene una E, se encuentra eliminada.


En otras palabras, si se usa la Eliminación Lógica, para eliminar una Fila de una Tabla, no se utilizará el comando DELETE, sino, el Comando UPDATE para cambiar la Columna Estatus por una E. Cambiar este Paradigma, presenta las siguientes ventajas:

  1. Se deja una pista de que el Registro existió y fue eliminado en un proceso ejecutado por un usuario del Sistema. Algunas veces ocurre, que los usuarios culpan al Sistema por desapariciones de información, lo cual afecta también la imagen de sus Diseñadores. Cuando esto ocurre, se puede demostrar que el Registro no ha sido eliminado por error, porque todavía va a existir físicamente en la Tabla. Mas aún, en el futuro el Estudiante aprenderá que además del Estatus cada Tabla debe llevar una Columna(Campo) que identifique el código del usuario que le hizo la última actualización, otra columna para la hora en que se hizo la última actualización y, por supuesto, otra columna que identifique la fecha de la última actualización. Así se sabrá, quién lo borró a que hora y en que fecha.

  2. Es una operación mas rápida. Cuando se elimina una Columna(Registro), el Manejador tiene que reordenar las otras columnas, tanto en el área de datos como en el (las) área(s) de Indices asociada(s). En cambio al realizar una Eliminación Lógica solo se cambia el valor de una Columna por ende la respuesta es inmediata. En el ambiente académico no suele notarse esa diferencia porque los estudiantes utilizan tablas, por lo general, con pocos datos. En el ambiente empresarial, cuando los volúmenes de Datos crecen es cuando puede notarse esta diferencia de manera significativa.

  3. Se trabaja con estilo y dominio de la Arquitectura de la Base de Datos y sus Tablas. Con regularidad, le insisto a mis alumnos que son estos detalles los que diferencia a los Profesionales de los Empíricos, porque de esta manera se implementan soluciones tecnológicas mas eficientes.


En consecuencia, una operación de eliminación, en lo sucesivo se hará de la siguiente manera:

Ejemplo


Se desea Eliminar el Proveedor cuyo código es 1.

Luego para consultar, tendremos que agregar obligatoriamente la cláusula WHERE a la instrucción SELECT.


De ahora en adelante, las Filas(Registros) que existen, son aquellas cuyo Estatus es igual a A, el resto existe físicamente, pero desde el punto de vista lógico no existen.


Los Registros Eliminados de manera Lógica, ¿se quedarán en sus Tablas para Siempre?.La respuesta es NO. Cada cierto tiempo, se ejecutará un proceso de depuración que pasará los Registros con estatus E a una tabla Histórica y luego los eliminará físicamente de su tabla original. Este proceso será ejecutado, en la mayoría de los casos, por el Administrador de la Base de Datos en un horario no laborable para no molestar en lo posible a los usuarios del Sistema.

PRACTICA I.

  1. Crear una Tabla de Facturas con la Siguiente Estructura:


  1. Crear una tabla llamada DetFact, con la siguiente estructura:


  1. Crear una Tabla llamada Artículos con la siguiente estructura:





  1. Insertar Filas en la Tabla de Clientes para que quede como sigue:



  1. Insertar Filas en la Tabla de Facturas para que quede como sigue:






  1. Insertar Filas en la Tabla de Artículos para que quede como sigue:








  1. Insertar Filas en la Tabla DetFacturas para que quede como sigue:




  1. Colocar a todos los clientes como Proveedores y que queden con el mismo código en ambas tablas. Utilice un Query sin generar ninguna secuencia. Así también aprenderá a respaldar el contenido de una tabla en otra tabla.


  1. Coloque el Límite de Crédito en 7500 al Proveedor SIDETUR.



Ahora bien, usted ha creado las tablas necesarias para trabajar en el resto del curso, sin embargo, al cambiarse de Computador tendría que crear nuevamente esas tablas, lo cual no es eficiente. Lo ideal es que usted se puede llevar las tablas creadas en un PENDRIVE y colocarlas en cualquier Base de Datos que se encuentre en cualquier Computador. Para ello, debe proceder como sigue:

  1. Ingresar a los Comandos MS-DOS. Para ello, ir por Inicio, Ejecutar, colocar CMD y Aceptar.

  1. Al estar en la Pantalla de Comandos del MS-DOS, ya puede exportar las tablas que desee desde la Base de Datos a un Archivo intermedio. Para ello debe realizar lo siguiente:

    1. Cambiarse a la Unidad E: para Grabar las Tablas en un PENDRIVE.

    2. Luego ejecutar el comando EXP que sirve para exportar las Tablas que se desean llevar a otra Base de Datos (U otra Computadora).

2.3 Para verificar que Archivo de respaldo existe en el Diskette, se utiliza el Comando DIR, y mostrará un Archivo llamado respaldo.DMP, el cual contiene las Tablas exportadas.

    1. Luego para llevar las Tablas a otra Base de Datos (U otra Computadora). Debe ingresar el PENDRIVE en la Unidad de la Computadora en donde colocará los datos. De la misma forma anterior, irá al MS-DOS. Cuando esté allí, debe cambiarse a la Unidad E: y ejecutar el Comando IMP que permite Importar los Datos a la otra Base de Datos.


DESPUÉS DE ESTA CLASE TANNNNNNN!!!!!! LARGA: Algo de RELAX.


Tomado de la revista Selecciones (Reader´s Digest):


Una ratica engreída y mentirosa:


Salen 2 Raticas a caminar y conversar por el botadero de basura a Media Noche. Muy cerca en la obscuridad pasa un Murcielago rasante:

La ratica engreída le dice a la otra: “Ignóralo estamos bravos, es mi novio y se quiere lucir porque es piloto …”