domingo, 18 de noviembre de 2012

La Magía

Hay una magia en tu sonrisa que no puedo
explicar, hay algo en ti que no puedo dejar
de mirar, quizás esa sencillez y esa ternura
que derrochas al hablar, quizás es ese misterio
de no conocerte que me provoca derribar,
quizás es el momento por pensar
que miramos la misma luna y esta nos
logra conectar. :) javs

José Angel Villalobos Sambrano

viernes, 17 de agosto de 2012

ESCENA


De quien es la escena 
A quien le ha tocado el papel de ser tu amante 
Tal vez un ingenuo, que vive soñando con 
llegar a ser tu hombre

A quien le has contado,las mismas historias 
de  lo mucho que has sufrido
Y el se compadece pensando que a tu alma 
Tantas veces te han mentido, 
Tal vez el te ama mas o igual que yo 
Con mil detalles quiere ganar tu amor
Lo has conquistado con esa actuación
De tu la victima de engaños  
de maltrato y del dolor

Tal vez el piensa solo en proteger
lo que te queda dentro de tu ser
No se da cuenta que puede caer en 
Tu trampa

De quien es la escena
Cual es el capitulo que hoy estas actuando
Sera cuando juras 
amar para siempre aunque nunca has amado 

Tal vez el te ama mas o igual que yo 
Con mil detalles quiere ganar tu amor
Lo has conquistado con esa actuación
De tu la victima de engaños  
de maltrato y del dolor
Tal vez el piensa solo proteger
Por cuanto queda dentro de tu ser
No se da cuenta que puede caer en 
Tu trampa

Arriba el telon para el proximo actor que
Empiece  la escena
Por el  proximo actor de tu novela 
Muchacha yo siento pena
Arriba el telon para el proximo actor que
Empiece  la escena
Pobre en la trampa tu lo enredas 
Ni cuenta se da siquiera 
Arriba el telon para el proximo actor que
Empiece  la escena
Y a quien le has contado las mismas historias 
Y las cree como yo 

Arriba el telon para el proximo actor que
Empiece  la escena
Quien sera el nuevo protagonista y que 
Numero es en tu lista 
Arriba el telon para el proximo actor que
Empiece  la escena
Y que se aprenda bien el libreto del cual sera
El engaño completo
Actua
Actua

Corte y no la dejen que engañe a otro corazon
Señor director interrumpa la comedia 
O terminara en tragedia
Corte y no la dejen que engañe a otro corazon
Y para su proxima escena se buscara un nuevo actor 
Que suba el telon....

Victor Manuelle

sábado, 11 de agosto de 2012

Los recuerdos


Los recuerdos pertenecen solo aquellos 
que no vivieron nada fingido, no se
puede recordar aquello que fue solo
la hipocresía de vivir el momento,no
se puede recordar aquello que solo 
fue un mientras tanto, en un mundo
de dos, muchas veces solo uno es capaz
de recordar, solo uno es capaz de sentir 
esa ausencia, mientras el otro escapa
de una atadura auto-impuesta.

José A. Villalobos S.


lunes, 6 de agosto de 2012

Voy a prometerme


Voy a comenzar a olvidarte de una vez 

arrancando de mi mente 
este amor tan deseado 
voy prometerme no volver a dedicarte 
otro sueño de mis noches un suspiro apasionado 
voy a comenzar desterrando de mi vida 
tus recuerdos y caprichos 
tus rencores y mentiras 
voy a prometerme olvidar aquel pasado 
que me lleva hasta el fracaso por tu amor apasionado 
voy a prometerme 
no volver a verte aunque me muera por tenerte 
aunque en mis noches yo te nombre de repente 
aunque en mi cama extrañe el roce de tu piel 
voy a prometerme olvidarte al despertar en la mañana 
te encontrabas a mi lado aquí en la cama 
hoy despiertas en sus brazos junto a el 
voy a prometerme no volver a verte 
y aunque sufra de amor sabré sobreponerme 
voy a comenzar desterrando de mi vida 
tus recuerdos y caprichos 
tus rencores y mentiras 
voy a prometerme olvidar aquel pasado 
que me lleva hasta el fracaso por tu amor apasionado 
voy a prometerme 
no volver a verte aunque me muera por tenerte 
aunque en mis noches yo te nombre de repente 
aunque en mi cama extrañe el roce de tu piel 
voy a prometerme olvidarte al despertar en la mañana 
te encontrabas a mi lado aquí en la cama 
hoy despiertas en sus brazos junto a el 
voy a prometerme no volver a verte 
y aunque sufra de amor sabré sobreponerme 
no volver a verte aunque me muera por tenerte 
aunque en mis noches yo te nombre de repente 
aunque en mi cama extrañe el roce de tu piel 
voy a prometerme no pensar en ti 

Victor Manuelle

miércoles, 1 de agosto de 2012

TRES METROS SOBRE EL CIELO

*Y de repente te das cuenta de que todo ha terminado, de verdad. Ya no hay vuelta atrás, lo sientes. Y justo entonces intentas recordar en qué momento comenzó todo. Y descubres que todo empezó antes de lo que pensabas. Mucho antes. Y es ahí, justo en ése momento, cuando te das cuenta de que las cosas solo ocurren una vez. Y por mucho que te esfuerces ya nunca volverás a sentir lo mismo. Ya nunca tendrás la sensación de estar a TRES METROS SOBRE EL CIELO.


viernes, 20 de julio de 2012

Vivir sin ella


Caminar sin ella es ir, sin rumbo fijo, 
refugiarse como un niño, en los brazos 
de la soledad, 
regresar sin ella es tan delirante 
tan nocivo tan frustrante 
que a la casa no quiero llegar.
Es como tener las manos llenas de ella, 
de su risa sus caderas, y saber que ella no esta, es como sentarse a deshojar estrellas bajo una luna nueva a través del ventanal.

Vivir sin ella es estar encadenado a ese cuerpo que yo amo, es temerle a la soledad, 
vivir sin ella es rendirse a cada instante es caer es levantarse y por ella comenzar. 
Esto no es normal es querer volar a donde ella esta, esto no es normal es querer volar a donde ella esta.

La noche sin ella es un trago amargo, 
es mirar el calendario, es llorar amigos es llorar, es como tener las manos llenas de ella de su risas sus caderas y saber que ella no esta es como sentarse a deshojar estrella bajo una luna nueva a través del ventanal

Vivir sin ella es estar encadenado a ese cuerpo que yo amo, es temerle a la soledad, 
vivir sin ella es rendirse a cada instante es caer es levantarse y por ella comenzar. 
Esto no es normal es querer volar a donde ella esta, esto no es normal es querer volar a donde ella esta.

Yo no se lo que es vivir sin ella, yo no se lo q es vivir, yo no se lo que es vivir con mi soledad que ahoga, Yo no se lo que es vivir sin ella, yo no se lo q es vivir, y se me hacen mas largas las horas sin su presencia.

Yo no se lo que es vivir sin ella, yo no se lo q es vivir, llegar a mi casa solo con esta tristeza a cuesta.

Yo no se lo que es vivir sin ella, yo no se lo q es vivir, todo me recuerda a ella, esa canción en la radio, la foto sobre la mesa, Yo no se lo que es vivir sin ella, yo no se lo q es vivir, me domina la tristeza si no esta ella

Gilberto Santarosa

martes, 24 de abril de 2012

Los Caminos de la Vida


Los caminos de la vida no son como yo pensaba
como me los imaginaba no son como yo creía (Coro).
Los caminos de la vida son muy difícil de andarlos
Difícil de caminarlos y no encuentro la salida (Coro).

Yo pensaba que la vida era distinta cuando estaba pequeñito yo creía
Que las cosas eran fáciles como ayer.
Que mi viejita buena se esmeraba por darme Todo lo que
necesitaba y hoy me doy cuenta que tanto así no es.

Porque mi viejita ya esta cansada de trabajar pa mi hermano y pa mi
Y ahora con gusto me toca ayudarla y por mi vieja luchare hasta el fin
Por ella luchare hasta que me muera y por ella no me quiero morir
Tampoco que se muera mi vieja pero que va si el destino es así

Los caminos de la vida no son como yo pensaba
Como los imaginaba no son como yo creía (Coro).
Los caminos de la vida son muy difícil de andarlos
difícil de caminarlos y no encuentro la salida (Coro).

“Ay mama” “ hay hombe” .
uno sabe que la vida de repente a de acabarse
y uno espera que sea tarde que llegue la despedida.
Un amigo me decía recompensare a mis viejos
Por la crianza que me dieron y no le alcanzo la vida
Por eso te pído a ti mi Dios del cielo pa me guies al camino correcto
Para mi viejita linda compensar para que olvide ese mal de sufrimientos
Y de ella se aparte ese mal de tormentos que para criarnos tubo que pasar
Viejita linda tienes que entenderme no te preocupes todo va a cambiar
Yo sufro mucho madrecita al verte necesitaba y no te puedo dar .
A veces lloro al sentirme impotente con tantas cosas que te quiero dar
Y voy a luchar incansablemente porque tu no mereces sufrir mas.
Los caminos de la vida no son como yo pensaba
Como los imaginaba no son como yo creía
Los caminos de la vida son muy difícil de andarlos
Difícil de caminarlos y no encuentro la salida.


VICENTICO

miércoles, 11 de abril de 2012

El ruido de tu silencio

No es el sonido de las aves cantando,
tampoco es el de un perro ladrando,
no es el volumen de la música que el
vecino está escuchando, mucho menos
los truenos que la lluvia está provocando,
es el ruido de tu silencio lo que a mis 
pensamientos está perturbando!


No son los gritos de los niños bajo 
la lluvia jugando, tampoco los gritos de
la vecina que a su hijo por el volumen
de la música está reclamando, mucho
menos el amo a su perro callando!!
es el ruido de tu silencio lo que a mis
pensamientos está perturbando!!


sábado, 10 de marzo de 2012

De que sirve

De que sirve una palabra si no hay nadie que la oiga
De que sirve el dinero si no hay nadie con quien compartirlo
De que sirven las esperanzas si no hay nadie que las alimente
De que sirve la luz si tu ausencia es oscuridad
De que sirve vencer al mundo si ante ti estoy derrotado
De que sirve todo lo que logre si nunca existirá el motivo
De que sirve dar todo por amor, si el amor es cruel
De que sirve...
De que sirve...
De que sirve lo hoy escrito si tal vez nadie llegue a leerlo.

José Angel Villalobos Sambrano.

xxxxxxxxxxxxxxxxx

Nunca entregues realidades
a quien vive en las fantasías,
porque incluso la mas fuerte
de las realidades sucumbe ante
una de esas fantasías!!

José Angel Villalobos Sambrano

xxxxxxxxxxx

Mi consuelo entre tanta soledad
es recordar tu bella sonrisa,
es imaginar tu cabello cuando
lo roza la brisa, son tus lindos
ojos que brillan cual estrellas
en el anochecer dejando con cada
mirada la luz que alumbra mi vida
cual sol alumbra a la tierra
en cada amanecer!!

José Angel Villalobos Sambrano

xxxxxxxxxxxxxxxxxx

Algunas veces creo ser el viento
y llego hasta a tí, roso tu cara,
tus labios, tu pelo, tu cuerpo,
y al darme cuenta que estoy aqui
pierdo la libertad que mis sueños
despiertos me proporcionan.

José Angel Villalobos Sambrano

Amor no correspondido

Cuando estas tan cerca de mí,
por momentos imagino que me perteneces
mi corazón comienza a latir y mi amor
por ti florece, tu sonrisa es mi ilusión
tu alegría mi felicidad, pero no correspondes
a mi amor y yo solo tengo soledad.

Imaginar que serás para otro, me hace
naufragar en un mar tan profundo, en el
cual me puedo ahogar, me duele que no
exista la esperanza, mas aún que no me la
logres dar, dejando mi amor atrapado
no dejandolo volar.

Mi amor no morirá aunque no le correspondas
el siempre aparecerá como lo hace en el agua
la onda cuando una piedra rompe su calma,
como tu clavas esta pena en mi alma.

José Angel Villalobos Sambrano

La mente

En mi mente hay un perfecto arreglo de ideas,
en donde estoy? en donde estuve? a donde voy?;
algunas ideas confusas por momentos estropean
mi razón, trato de escapar de ellas y el resueltado es peor
porque son reflejo de mi realidad, son un conjunto de
imagenes imborrables, aún en mi estado de perfecto
entendimiento de mis acciones ante la realidad,
el misterio de la mente humana es algo por encima
de cualquier razonamiento.

José Angel Villalobos Sambrano

Palabras & Acciones

PALABRAS

Son un mundo inanimado
Son como el viento al pasar
Son composición de promesas futuras
Son tu vocablo para hablar
Son una arreglo de silabas
Son lo que puedes decir sin sentir
Son palabras ...

ACCIONES

Ellas siempre hablan de ti
Ellas te hacen quien eres
Ellas te hacen notar
Ellas no se pueden borrar
Ellas son mas que palabras !!!


José Angel Villalobos Sambrano

Frenesí en la habitación

Cada momento es único, tu cuerpo y mi cuerpo lo saben,
esa pasión que se desborda y nos lleva a las redes del placer
recorro  tu cuerpo poco a poco y voy descubriendo cada
uno de los secretos que este guarda, y el sonido de nuestras
calientes respiración se juntan y forman una melodía
excitante, melodía que no quiero parar de escuchar,
mientras nuestros cuerpos se unen formando uno solo,
y el ardiente sudor es protagonista en la habitación, y somos
tu y yo esclavos de tan desbordante pasión.

José Angel Villalobos Sambrano

fantasía o verdad?

Que importa si es realidad, que importa si es fantasía
lo unico cierto es que me siento vivo, mucho antes
camine por lo incierto y pense nunca encontrar salidas,
quizás ahora camino por lo cierto y son muchas las salidas
y no lo sé, así de misteriosa es esta vida, inevitable es
preguntar será luz? será oscuridad?, será calma?
será tempestad?, será alegría? será tristeza?,
será verdad? será falsedad? de cualquier forma
solo me basta estar vivo para comprobar si es
fantasía o si es verdad.

José Angel Villalobos Sambrano

Frustración

Te calcome el alma, acelera
todo los nervios de tu cuerpo,
como si estuvieses en la desesperación
por instantes pierdes el control,
y es dificil razonar, es sin duda la
frustración que se apodera de ti
y no te deja pensar.

José Angel Villalobos Sambrano

Un instante en el Jarillo

Me falta un poco el aire, pero
la naturaleza me suple de él,
explendoroso es el paisaje,
en lontananza puedo ver
su infinita belleza.

Miles de piezas que juntas
forman el momento perfecto,
las aves y el verdor de la
vegetación son los únicos
protagonistas, el sol aún
no aparece, pero ya siento
su presencia.

Más allá de las palabras es
solo el momento, tan perfecto
como la creación, cerca estan
las voces de los que me acompañan
y la neblina se apodera del lugar.

José Angel Villalobos Sambrano

Dia de las madres

Eres amor y ternura
Eres esperanza y bondad
Eres la palabra segura en los
momentos de oscuridad
Eres dedicación y sacrificio
Eres experiencia y verdad
Eres bella mujer de este mundo
tu eres mamá!!!

José Angel Villalobos Sambrano

Enamorado de ti

Los sentimientos se hacen tan fuertes
no los puedos controlar me hacen debil
y vulnerable ante ti, y aun así deseo
continuar.

Siento perder mi poder de decidir
cada vez que estas a mi lado,
definitivamente estoy de ti enamorado.

Hoy que entiendo que no eres para mi,
solo hay dolor en mi corazón, me pierdo
en la oscuridad, no encuentro respuestas
siento perder la razón.

Inspiración para mi

En cada instante te pienso, es algo que no
puedo evitar, ocupas los rincones de mi mente
sin que te pueda tocar, mientras espero me perturba
el ruido que causa el silencio, pero si he de continuar
no hay duda que lo hago por ti!
Tal vez son varios tus nombres pero inspiración
eres para mi!, solo espero no equivocarme,
solo espero contigo ser feliz.

José Angel Villalobos Sambrano

Realidad

Son muchas verdades, son muchas mentiras
este es el mundo real, donde la gente no vive
sino sobrevive, inventando todos los días
un problema diferente, un motivo para complicar
sus vidas mucho mas de lo que por naturaleza ya es,
amigos, compañeros, familia y demás todos en un
mundo donde la justificación de un momento feliz
son un conjunto de momentos tristes pasados, yo
en el centro de este mundo contemplando con
distintas emociones el pasar del tiempo y mirando
como se desvanecen los sueños entre los
vientos de la realidad.

José Angel Villalobos Sambrano

xxxxxxxxxxxx

Mas allá de mis lamento estan mis aspiraciones,
hoy me aguanto lo que siento,  sin duda
sentir no da soluciones, si me duele no te miento,
y mis palabras lo suponen, me estoy muriendo
por dentro, pero aguantar y seguir es sin duda
la mejor de las opciones!!!

José Angel Villalobos Sambrano

Miro

Miro  al horizonte y que miro?
miro la incertidumbre de no saber a donde ir,
miro la desesperanza   crecer cada día mas,
miro que todo los caminos que transito me
llevan al mismo lugar, y al definir ese lugar
encuentro que es donde no quiero estar,

Miro que esfuerzos quedan atrás y se
esfuman como el humo en el aire, miro
ilusiones convertidas en desilusiones,
miro a la soledad como a mi unica
compañera, miro a la tristeza a los ojos
y me provoca llorar y no puedo, miro
como resultado el fracaso y me da miedo,
miro... miro... que el mundo ni la vida
estan contra mí, pero que de todos modo
hay una vida y un mundo al cual debo vencer!!

José Angel Villalobos Sambrano

Si me preguntas te lo dire

Llega al más grande de los volcanes, se sumerge
en su ardiente lava sin quemarse,
es capaz de subir el everest hasta lo mas
alto y permanecer ahí desnuda sin congelarse

Es capaz de sumergirse en el más profundo de
los mares, y mirar por horas su belleza, respirar
entre sus aguas sin ahogarse.

Atraviesa la atmosfera y admira la belleza del
universo sin asfixiarse

Es capaz de encontrarse en medio de la selva
luchar contra leones sin acobardarse,
atraviesa la mas grande tormenta llena de
vientos y rayos sin paralizarse

Solo ella es tan libre, tan unica como para
lograrlo todo, sin me preguntas su nombre
te lo dire...

José Angel  Villalobos Sambrano

Mira a través de mis ojos

Mira a través de mis ojos dime tu que ves?,
dime si hay maldad, dime si hay bondad!

Mira a través de mis ojos, dime si hay verdad!
dime si hay falsedad!

Mira a través de mis ojos, dime de que soy capaz,
dime en que puedo cambiar,
dime si existo a través de ellos o soy un simple
espejismo que se puede esfumar!

Mira a través de mis ojos hoy tienes la oportunidad
aqui ante ti y mirandote no hay nadie más, dime
si al mirarlos miras la alegría en el futuro o miras
la tempestad!

Mira a través de mis ojos antes que una lagrima
pueda brotar, mira amada mia, que esto es cierto
tan cierto como que el sol saldrá!!

José Angel Villalobos Sambrano

Un instante

Aqui estoy comtemplandote en silencio,
muchas veces te miro pasar
tan bella y tan radiante y no me atrevo
ni una sola palabra murmurarte
se congela todo mi cuerpo cuando
te acercas a mi, y aunque no quiera
toda mi atención se concentra en ti.


José Angel Villalobos Sambrano

jueves, 8 de marzo de 2012

Introducción SQL (DML)

DML (lenguaje de manipulación de datos)
Inserción de datos

La adición de datos a una tabla se realiza mediante la instrucción INSERT. Su sintaxis fundamental es:

INSERT INTO tabla [(listaDeCampos)]
VALUES (valor1 [,valor2 ...])

La tabla representa la tabla a la que queremos añadir el registro y los valores que siguen a VALUES son los valores que damos a los distintos campos del registro. Si no se especifica la lista de campos, la lista de valores debe seguir el orden de las columnas según fueron creados (es el orden de columnas según las devuelve el comando DESCRIBE).

La lista de campos a rellenar se indica si no queremos rellenar todos los campos. Los campos no rellenados explícitamente con la orden INSERT, se rellenan con su valor por defecto (DEFAULT) o bien con NULL si no se indicó valor alguno. Si algún campo tiene restricción de tipo NOT NULL, ocurrirá un error si no rellenamos el campo con algún valor.

Por ejemplo, supongamos que tenemos una tabla de clientes cuyos campos son: dni, nombre, apellido1, apellido2, localidad y dirección; supongamos que ese es el orden de creación de los campos de esa tabla y que la localidad tiene como valor por defecto Palencia y la dirección no tiene valor por defecto. En ese caso estas dos instrucciones son equivalentes:


INSERT INTO clientes
VALUES('11111111','Pedro','Gutiérrez', 'Crespo',DEFAULT,NULL);

INSERT INTO clientes(dni,nombre,apellido1,apellido2)
VALUES('11111111','Pedro','Gutiérrez', 'Crespo');


Son equivalentes puesto que en la segunda instrucción los campos no indicados se rellenan con su valor por defecto y la dirección no tiene valor por defecto. La palabra DEFAULT fuerza a utilizar ese valor por defecto. El uso de los distintos tipos de datos debe de cumplir los requisitos ya comentados en temas anteriores.

Relleno de registros a partir de filas de una consulta


Hay un tipo de consulta, llamada de adición de datos, que permite rellenar datos de una tabla copiando el resultado de una consulta. Ese relleno se basa en una consulta SELECT que poseerá los datos a añadir. Lógicamente el orden de esos campos debe de coincidir con la lista de campos indicada en la instrucción INDEX. Sintaxis:

INSERT INTO tabla (campo1, campo2,...)
SELECT campoCompatibleCampo1, campoCompatibleCampo2,...
FROM tabla(s)
[...otras cláusulas del SELECT...]


Ejemplo:

INSERT INTO clientes2004 (dni, nombre, localidad, direccion)
SELECT dni, nombre, localidad, direccion
FROM clientes
WHERE problemas=0;


Actualización de registros


La modificación de los datos de los registros lo implementa la instrucción UPDATE. Sintaxis:


UPDATE tabla
SET columna1=valor1 [,columna2=valor2...]
[WHERE condición]


Se modifican las columnas indicadas en el apartado SET con los valores indicados. La cláusula WHERE permite especificar qué registros serán modificados.Ejemplos:

UPDATE clientes SET provincia='Ourense'
WHERE provincia='Orense';


UPDATE productos SET precio=precio*1.16;


El primer dato actualiza la provincia de los clientes de Orense para que aparezca como Ourense. El segundo UPDATE incrementa los precios en un 16%. La expresión para el valor puede ser todo lo compleja que se desee:

UPDATE partidos SET fecha= NEXT_DAY(SYSDATE,'Martes')
WHERE fecha=SYSDATE;


Incluso se pueden utilizar subconsultas:


UPDATE empleados
SET puesto_trabajo=(SELECT puesto_trabajo
FROM empleados
WHERE id_empleado=12)
WHERE seccion=23;


Esta consulta coloca a todos los empleados de la sección 23 el mismo puesto de trabajo que el empleado número 12. Este tipo de actualizaciones sólo son válidas si el subselect devuelve un único valor, que además debe de ser compatible con la columna que se actualiza. Hay que tener en cuenta que las actualizaciones no pueden saltarse las reglas de integridad que posean las tablas.

Borrado de registros


Se realiza mediante la instrucción DELETE:


DELETE [FROM] tabla
[WHERE condición]


Es más sencilla que el resto, elimina los registros de la tabla que cumplan la condición indicada. Ejemplos:


DELETE FROM empleados
WHERE seccion=23;


DELETE FROM empleados
WHERE id_empleado IN (SELECT id_empleado FROM errores_graves);


Hay que tener en cuenta que el borrado de un registro no puede provocar fallos de integridad y que la opción de integridad ON DELETE CASCADE, hace que no sólo se borren los registros indicados en el SELECT, sino todos los relacionados.

Comando MERGE

Sin duda alguna el comando más poderoso del lenguaje de manipulación de Oracle es MERGE. Este comando sirve para actualizar los valores de los registros de una tabla a partir de valores de registros de otra tabla o consulta. Permite pues combinar los datos de dos tablas a fin de actualizar la primera Supongamos que poseemos una tabla en la que queremos realizar una lista de localidades con su respectiva provincia. 


Las localidades están ya rellenadas, nos faltan las provincias. Resulta que tenemos otra tabla llamada clientes en la que tenemos datos de localidades y provincias, gracias a esta tabla podremos rellenar los datos que faltan en la otra. La situación se muestra en la ilustración siguiente.          
  
La sintaxis del comando MERGE es:

MERGE INTO tabla alias
USING (instrucción SELECT) alias
ON (condición de unión)
WHEN MATCHED THEN
UPDATE SET col1=valor1 [col2=valor2]
WHEN NOT MATCHED THEN
INSERT (listaDeColumnas)
VALUES (listaDeValores)

MERGE compara los registros de ambas tablas según la condición indicada en el apartado ON. Compara cada registro de la tabla con cada registro del SELECT. Los apartados de la sintaxis significan lo siguiente:

  1.  tabla es el nombre de la tabla que queremos modificar
  2.  USING. En esa cláusula se indica una instrucción SELECT tan compleja como queramos que muestre una tabla que contenga los datos a partir de los cuales se modifica la tabla
  3.  ON. permite indicar la condición que permite relacionar los registros de la tabla con los registros de la consulta SELECT
  4.  WHEN MATCHED THEN. El UPDATE que sigue a esta parte se ejecuta cuandol a condición indicada en el apartado ON sea cierta para los dos registros actuales.
  5.  WHEN NOT MATCHED THEN. El INSERT que sigue a esta parte se ejecuta para cada registro de la consulta SELECT que no pudo ser relacionado con ningún registro de la tabla.

Para el ejemplo descrito antes la instrucción MERGE sería:

MERGE INTO localidades l
USING (SELECT * FROM clientes) c
ON (l.localidad=clientes.localidad)
WHEN MATCHED THEN
UPDATE SET l.provincia=c.provincia
WHEN NOT MATCHED THEN
INSERT (localidad, provincia)
VALUES (c.localidad, c.provincia);

El resultado es la siguiente tabla de localidades:


Transacciones 

Como se ha comentado anteriormente, una transacción está formada por una serie de instrucciones DML. Una transacción comienza con la primera instrucción DML que se ejecute y finaliza con alguna de estas circunstancias:
  1. Una operación COMMIT o ROLLBACK
  2.  Una instrucción DDL (como ALTER TABLE por ejemplo)
  3.  Una instrucción DCL (como GRANT)
  4.  El usuario abandona la sesión
  5.  Caída del sistema

Hay que tener en cuenta que cualquier instrucción DDL o DCL da lugar a un COMMIT implícito, es decir todas las instrucciones DML ejecutadas hasta ese instante pasan a ser definitivas.

COMMIT
La instrucción COMMIT hace que los cambios realizados por la transacción sean definitivos, irrevocables. Sólo se debe utilizar si estamos de acuerdo con los cambios, conviene asegurarse mucho antes de realizar el COMMIT ya que las instrucciones ejecutadas pueden afectar a miles de registros. Además el cierre correcto de la sesión da lugar a un COMMIT, aunque siempre conviene ejecutar explícitamente esta instrucción a fin de asegurarnos de lo que hacemos.

ROLLBACK
Esta instrucción regresa a la instrucción anterior al inicio de la transacción, normalmente el último COMMIT, la última instrucción DDL o DCL o al inicio de sesión. Anula definitivamente los cambios, por lo que conviene también asegurarse de esta operación. Un abandono de sesión incorrecto o un problema de comunicación o de caída del sistema dan lugar a un ROLLBACK implícito.

SAVEPOINT
Esta instrucción permite establecer un punto de ruptura. El problema de la combinación ROLLBACK/COMMIT es que un COMMIT acepta todo y un ROLLBACK anula todo. SAVEPOINT permite señalar un punto intermedio entre el inicio de la transacción y la situación actual. Su sintaxis es:

...instrucciones DML...
SAVEPOINT nombre
....instrucciones DML...

Para regresar a un punto de ruptura concreto se utiliza ROLLBACK TO SAVEPOINT seguido del nombre dado al punto de ruptura. Cuando se vuelve a un punto marcado, las instrucciones que siguieron a esa marca se anulan definitivamente. estado de los datos durante la transacción.

Si se inicia una transacción usando comandos DML hay que tener en cuenta que:

  1. Se puede volver a la instrucción anterior a la transacción cuando se desee
  2.  Las instrucciones de consulta SELECT realizadas por el usuario que inició la transacción muestran los datos ya modificados por las instrucciones DML
  3.  El resto de usuarios ven los datos tal cual estaban antes de la transacción, de hecho los registros afectados por la transacción aparecen bloqueados hasta que la transacción finalice. Esos usuarios no podrán modificar los valores de dichos registros.
Tras la transacción todos los usuarios ven los datos tal cual quedan tras el fin de transacción. Los bloqueos son liberados y los puntos de ruptura borrados.


Introducción SQL (Comando SELECT 5ta parte)

Subconsultas

Se trata de una técnica que permite utilizar el resultado de una tabla SELECT en otra consulta SELECT. Permite solucionar problemas en los que el mismo dato aparece dos veces. La sintaxis es:

SELECT listaExpresiones
FROM tabla
WHERE expresión operador
(SELECT listaExpresiones
FROM tabla);


Se puede colocar el SELECT dentro de las cláusulas WHERE, HAVING o FROM. El operador puede ser >,<,>=,<=,!=, = o IN. Ejemplo:

SELECT nombre_empleado, paga
FROM empleados
WHERE paga <
(SELECT paga FROM empleados
WHERE nombre_empleado='Martina');


Lógicamente el resultado de la subconsulta debe incluir el campo que estamos analizando. Se pueden realizar esas subconsultas las veces que haga falta:

SELECT nombre_empleado, paga
FROM empleados
WHERE paga <
(SELECT paga FROM empleados
WHERE nombre_empleado='Martina')
AND paga >
(SELECT paga FROM empleados WHERE nombre_empleado='Luis');


La última consulta obtiene los empleados cuyas pagas estén entre lo que gana Luis y lo que gana Martina.

Una subconsulta que utilice los valores >,<,>=,... tiene que devolver un único valor, de otro modo ocurre un error. Pero a veces se utilizan consultas del tipo: mostrar el sueldo y nombre de los empleados cuyo sueldo supera al de cualquier empleado del departamento de ventas.

La subconsulta necesaria para ese resultado mostraría los sueldos del departamento de  ventas. Pero no podremos utilizar un operador de comparación directamente ya que compararíamos un valor con muchos valores. La solución a esto es utilizar instrucciones especiales entre el operador y la consulta. Esas instrucciones son:




Ejemplo:

SELECT nombre, sueldo
FROM empleados
WHERE sueldo >= ALL (SELECT sueldo FROM empleados)

Esa consulta obtiene el empleado que más cobra. Otro ejemplo:

SELECT nombre FROM empleados
WHERE dni IN (SELECT dni FROM directivos)

En ese caso se obtienen los nombres de los empleados cuyos dni están en la tabla de directivos.

Combinaciones especiales

UNIONES

La palabra UNION permite añadir el resultado de un SELECT a otro SELECT. Para ello  ambas instrucciones tienen que utilizar el mismo número y tipo de columnas. Ejemplo:

SELECT nombre FROM provincias
UNION
SELECT nombre FROM comunidades;

El resultado es una tabla que contendrá nombres de provincia y de comunidades. Es decir,  UNION crea una sola tabla con registros que estén presentes en cualquiera de las consultas. Si están repetidas sólo aparecen una vez, para mostrar los duplicados se utiliza UNION ALL en lugar de la palabra UNION.

INTERSECCIONES

De la misma forma, la palabra INTERSECT permite unir dos consultas SELECT de modo que el resultado serán las filas que estén presentes en ambas consultas.

DIFERENCIA

Con MINUS también se combinan dos consultas SELECT de forma que aparecerán los registros del primer SELECT que no estén presentes en el segundo.

Se podrían hacer varias combinaciones anidadas (una unión cuyo resultado se intersectará con otro SELECT por ejemplo), en ese caso es conveniente utilizar paréntesis para indicar qué combinación se hace primero:

(SELECT....
....
UNION
SELECT....
...
)
MINUS
SELECT.... /* Primero se hace la unión y luego la diferencia*/


Introducción SQL (Comando SELECT 4ta parte)

Agrupaciones


Es muy común utilizar consultas en las que se desee agrupar los datos a fin de realizar cálculos en vertical, es decir calculados a partir de datos de distintos registros. Para ello se utiliza la cláusula GROUP BY que permite indicar en base a qué registros se realiza la agrupación. Con GROUP BY la instrucción SELECT queda de esta forma:

SELECT listaDeExpresiones
FROM listaDeTablas
[JOIN tablasRelacionadasYCondicionesDeRelación]
[WHERE condiciones]
[GROUP BY grupos]
[HAVING condiciones de grupo]
[ORDER BY columnas];


En el apartado GROUP BY, se indican las columnas por las que se agrupa. La función de este apartado es crear un único registro por cada valor distinto en las columnas del grupo. Si por ejemplo agrupamos en base a las columnas tipo y modelo en una tabla de existencias, se creará un único registro por cada tipo y modelo distintos:


SELECT tipo,modelo
FROM existencias
GROUP BY tipo,modelo;


Si la tabla de existencias sin agrupar es:


























Es decir es un resumen de los datos anteriores. Los datos n_almacen y cantidad no están disponibles directamente ya que son distintos en los registros del mismo grupo. Sólo se pueden utilizar desde funciones (como se verá ahora). Es decir esta consulta es errónea:

SELECT tipo,modelo, cantidad
FROM existencias GROUP BY tipo,modelo;

SELECT tipo,modelo, cantidad
*
ERROR en línea 1:
ORA-00979: no es una expresión GROUP BY

Funciones de cálculo con grupos 


Lo interesante de la creación de grupos es las posibilidades de cálculo que ofrece. Para ello se utilizan funciones que permiten trabajar con los registros de un grupo son:














Todos esos valores se calculan para cada elemento del grupo, así la expresión:


SELECT tipo,modelo, cantidad, SUM(Cantidad)
FROM existencias
GROUP BY tipo,modelo;


Obtiene este resultado:











condiciones HAVING
A veces se desea restringir el resultado de una expresión agrupada, por ejemplo con:


SELECT tipo,modelo, cantidad, SUM(Cantidad)
FROM existencias
WHERE SUM(Cantidad)>500
GROUP BY tipo,modelo;


Pero Oracle devolvería este error:


WHERE SUM(Cantidad)>500
*
ERROR en línea 3:
ORA-00934: función de grupo no permitida aquí


La razón es que Oracle calcula primero el WHERE y luego los grupos; por lo que esa condición no la puede realizar al no estar establecidos los grupos. Por ello se utiliza la cláusula HAVING, que se efectúa una vez realizados los grupos. Se usaría de esta forma:

SELECT tipo,modelo, cantidad, SUM(Cantidad)
FROM existencias
GROUP BY tipo,modelo
HAVING SUM(Cantidad)>500;


Eso no implica que no se pueda usar WHERE. Esta expresión sí es válida:


SELECT tipo,modelo, cantidad, SUM(Cantidad)
FROM existencias
WHERE tipo!='AR'
GROUP BY tipo,modelo
HAVING SUM(Cantidad)>500;


En definitiva, el orden de ejecución de la consulta marca lo que se puede utilizar con WHERE y lo que se puede utilizar con HAVING:

Pasos en la ejecución de una instrucción de agrupación por parte del gestor de bases de
datos:

1> Seleccionar las filas deseadas utilizando WHERE. Esta cláusula eliminará columnas en base a la condición indicada
2> Se establecen los grupos indicados en la cláusula GROUP BY
3> Se calculan los valores de las funciones de totales (COUNT, SUM, AVG,...)
4> Se filtran los registros que cumplen la cláusula HAVING
5> El resultado se ordena en base al apartado ORDER BY.