You are on page 1of 29

POO

La programacin Orientada a objetos (POO) es una forma especial de programar, ms cercana a


como expresaramos las cosas en la vida real que otros tipos de programacin.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir
nuestros programas en trminos de objetos, propiedades, mtodos y otras cosas que veremos
rpidamente para aclarar conceptos y dar una pequea base que permita soltarnos un poco con
este tipo de programacin.
Motivacin
Durante aos, los programadores se han dedicado a construir aplicaciones muy parecidas que
resolvan una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los
programadores puedan ser utilizados por otras personas se cre la POO. Que es una serie de
normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su
trabajo, de manera que consigamos que el cdigo se pueda reutilizar.
La POO no es difcil, pero es una manera especial de pensar, a veces subjetiva de quien la
programa, de manera que la forma de hacer las cosas puede ser diferente segn el programador.
Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difcil
no es programar orientado a objetos sino programar bien. Programar bien es importante porque
as nos podemos aprovechar de todas las ventajas de la POO.
Cmo se piensa en objetos
Pensar en trminos de objetos es muy parecido a cmo lo haramos en la vida real. Por ejemplo
vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diramos que el
coche es el elemento principal que tiene una serie de caractersticas, como podran ser el color, el
modelo o la marca. Adems tiene una serie de funcionalidades asociadas, como pueden ser
ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sera el objeto, las propiedades seran las caractersticas como
el color o el modelo y los mtodos seran las funcionalidades asociadas como ponerse en marcha o
parar.
Por poner otro ejemplo vamos a ver cmo modelizaramos en un esquema POO una fraccin, es
decir, esa estructura matemtica que tiene un numerador y un denominador que divide al
numerador, por ejemplo 3/2.
La fraccin ser el objeto y tendr dos propiedades, el numerador y el denominador. Luego podra
tener varios mtodos como simplificarse, sumarse con otra fraccin o nmero, restarse con otra
fraccin, etc.
Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de matemticas
hars uso de objetos fraccin y en un programa que gestione un taller de coches utilizars objetos

coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que
se desean realizar y ellos mismos tambin son objetos. Es decir, el taller de coches ser un objeto
que utilizar objetos coche, herramienta, mecnico, recambios, etc.
Clases en POO
Las clases son declaraciones de objetos, tambin se podran definir como abstracciones de
objetos. Esto quiere decir que la definicin de un objeto es la clase. Cuando programamos un
objeto y definimos sus caractersticas y funcionalidades en realidad lo que estamos haciendo es
programar una clase. En los ejemplos anteriores en realidad hablbamos de las clases coche o
fraccin porque slo estuvimos definiendo, aunque por encima, sus formas.
Propiedades en clases
Las propiedades o atributos son las caractersticas de los objetos. Cuando definimos una
propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que
las propiedades son algo as como variables donde almacenamos datos relacionados con los
objetos.
Mtodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las
llamamos mtodos. Los mtodos son como funciones que estn asociadas a un objeto.
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que
especificar la clase a partir de la cual se crear. Esta accin de crear un objeto a partir de una clase
se llama instanciar (que viene de una mala traduccin de la palabra instace que en ingls significa
ejemplar). Por ejemplo, un objeto de la clase fraccin es por ejemplo 3/5. El concepto o definicin
de fraccin sera la clase, pero cuando ya estamos hablando de una fraccin en concreto 4/7,
8/1000 o cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instruccin especial que puede ser distinta
dependiendo el lenguaje de programacin que se emplee, pero ser algo parecido a esto.

miCoche = new Coche()


Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a
continuacin. Dentro de los parntesis podramos colocar parmetros con los que inicializar el
objeto de la clase coche.
Estados en objetos

Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un
coche la propiedad color tomar un valor en concreto, como por ejemplo rojo o gris metalizado. El
valor concreto de una propiedad de un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto.
miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por ltimo el nombre e la propiedad a
la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad
del objeto a rojo con una simple asignacin.

Mensajes en objetos
Un mensaje en un objeto es la accin de efectuar una llamada a un mtodo. Por ejemplo, cuando
le decimos a un objeto coche que se ponga en marcha estamos pasndole el mensaje ponte en
marcha.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del mtodo que
deseamos invocar.
miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar parntesis igual que
cualquier llamada a una funcin, dentro iran los parmetros.
Otras cosas
Hay mucho todava que conocer de la POO ya que slo hemos hecho referencia a las cosas ms
bsicas. Tambin existen mecanismos como la herencia y el polimorfismo que son unas de las
posibilidades ms potentes de la POO.
La herencia sirve para crear objetos que incorporen propiedades y mtodos de otros objetos. As
podremos construir unos objetos a partir de otros sin tener que reescribirlo todo. Puedes
encontrar en DesarrolloWeb.com un artculo completo dedicado a la Herencia.
El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y
abstraernos para definir un cdigo que sea compatible con objetos de varios tipos. Puedes acceder
a otro artculo para saber ms sobre Polimorfismo.
Son conceptos avanzados que cuesta explicar en las lneas de ese informe. No hay que olvidar que
existen libros enteros dedicados a la POO y aqu solo pretendemos dar un repaso a algunas cosas
para que os suenen cuando tengis que poneros delante de ellas en los lenguajes de programacin
que debe conocer un desarrollador del web. Sin embargo, si quieres saber ms tambin puedes

continuar leyendo en DesarrolloWeb.com, en el manual de la teora de la Programacin orientada


a objetos.
Ejemplo concreto de programacin orientada a objetos
Para conseguir un ejemplo concreto de lo que es la programacin orientada a objetos, podemos
entrar en el Manual de PHP 5. Realmente este manual explica las caractersticas de orientacin a
objetos de PHP 5 y ofrece ejemplos concretos de creacin de clases con caractersticas como
herencia, polimorfismo, etc.

PROGRAMACION ESTRUCTURADA
La programacin estructurada es un paradigma de programacin orientado a mejorar la
claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando
nicamente subrutinas y tres estructuras: secuencia, seleccin (if y switch)
e iteracin (bucles for y while), considerando innecesario y contraproducente el uso de la
instruccin de transferencia incondicional (GOTO), que podra conducir a "cdigo espagueti",
que es mucho ms difcil de seguir y de mantener, y era la causa de muchos errores de
programacin.
Surgi en la dcada de 1960, particularmente del trabajo de Bhm y Jacopini,1 y una famosa
carta, La sentencia goto considerada perjudicial, de Edsger Dijkstraen 19682 y fue
reforzado tericamente por el teorema del programa estructurado, y prcticamente por la
aparicin de lenguajes como ALGOL con adecuadas y ricas estructuras de control.

La programacin estructurada es una teoria de programacin que consiste en construir


programas de facil comprension.
La programacin estructurada es especialmente util, cuando se necesitan realizar
correciones o modificaciones despues de haber concluido un programa o aplicacion. Al
haberse utilizado la programacin estructurada, es mucho ms sencillo entender la
codificacion del programa, que se habra hecho en diferentes secciones.
La programacin estructurada se basa en una metodologi de desarrollo de programas
llamda refinamiento sucesivos: Se plantea una operacion como un todo y se divide en
segmentos ms sencillos o de menor complejidad. Una vez terminado todos los
segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool
de programadores. Si se ha utilizado adecuadamente la programacin estructurada,
esta integracion debe ser sencilla y no presentar problemas al integrar la misma , y de
presentar algun problema, sera rapidamente detectable para su correccion.

La representacion grafica de la programacin estructurada se realiza a traves de


diagramas de flujo o flow chart, el cual representa el programa con sus entradas,
procesos y salidas.
La programacin estructurada propone segregar los procesos en estructuras lo ms
simple posibles, las cuales se conocen como secuencia, seleccion e interaccion. Ellas
estan disponibles en todos los lenguajes modernos de programacin imperativa en
forma de sentencias. Combinando esquemas sencillos se pueden llegar a construir
sistemas amplios y complejos pero de facil entendimiento.

PUREBAS DE CAJA DE NEGRA Y BLANCA INTEGRACION


En programacin, se denomina cajas blancas a un tipo de pruebas de software que se realiza
sobre las funciones internas de un mdulo. As como las pruebas de caja negra ejercitan
los requisitos funcionales desde el exterior del mdulo, las de caja blanca estn dirigidas a las
funciones internas. Entre las tcnicas usadas se encuentran; la cobertura de caminos
(pruebas que hagan que se recorran todos los posibles caminos de ejecucin), pruebas sobre
las expresiones lgico-aritmticas, pruebas de camino de datos (definicin-uso de variables),
comprobacin de bucles (se verifican los bucles para 0,1 e interacciones, y luego para las
interacciones mximas, mximas menos uno y ms uno).
Las pruebas de caja blanca se llevan a cabo en primer lugar, sobre un mdulo concreto, para
luego realizar las de caja negra sobre varios subsistemas (integracin).
En los sistemas orientados a objetos, las pruebas de caja blanca pueden aplicarse a los
mtodos de la clase, pero segn varias opiniones, ese esfuerzo debera dedicarse a otro tipo
de pruebas ms especializadas (un argumento podra ser que los mtodos de una clase
suelen ser menos complejos que los de una funcin de programacin estructurada). Dentro de
las Pruebas de Caja Blanca encontramos las llamadas coberturas (sentencia, decisin,
condicin y mltiple adems de los mencionados caminos ciclomticos propuestos por
McCabe)

VERIFICACION VALIDACION
Diferencia entre validacin y verificacin
Mensaje jchaustre el Dom Feb 28, 2010 1:22 am

Muchas veces se confunde verificacin con validacin. Barry W. Boehm (1979) puso en claro
con pocas palabras la diferencia:

Validacin: Estamos construyendo el producto correcto? Se ocupa de controlar si el


producto satisface los requerimientos del usuario

Verificacin: Estamos construyendo correctamente el producto? implica controlar que el


producto conforma su especificacin inicial.

En la Validacin el resultado final del desarrollo software se debe ajustar a lo que el usuario quera
(sus necesidades)? En la mayora de las ocasiones el producto desarrollado no casa con la ideas del
cliente, normalmente porque a ste suele faltarle capacidad tcnica de expresin.

En la Verificacin el cdigo que estamos construyendo debe estar en armona con la especificacin
que hemos tomado del usuario. El resultado final del desarrollo software debe concordar con la
especificacin (requisitos) del sistema, por lo que debemos asegurarnos que el desarrollo final
coincida con dicha especificacin

Un sistema puede pasar la validacin, sin embargo, no pasa la verificacin. Cumple con la
especificacin del usuario, con lo que l quera, cubre sus necesidades pero internamente puede
adolecer de graves detalles como: un precario diseo en la base de datos; uso de un excesivo e
innecesario nmero de lneas de cdigo, por desconocer las potencialidades del lenguaje de
desarrollo o de tcnicas avanzadas de programacin como la POO y uso incorrecto en la BD de
instrucciones propias del lenguaje de desarrollo, en lugar de las sentencias adecuadas de SQL.

Las dos utilizan mtodos de diseo de casos de prueba y estrategias de prueba, para la validacin
usamos Pruebas de Caja Negra (Grafos, particin equivalente y prueba de valores lmites) para la
verificacin empleamos Pruebas de Caja Blanca (Prueba de Camino crtico: Grafo de flujo,
complejidad ciclomtica; prueba de Condicin: ramificaciones, dominio, operador relacional y de
ramificacin; Prueba de Flujo de datos y Prueba de Bucles).
VALIDACIONES DE RIESGO, TIPOS DE RIESGO

Al igual que un jefe de proyecto debe identificar riesgos y buscar soluciones durante la
etapa de desarrollo del software para conseguir los objetivos marcados, el test
manager debe identificar los riesgos relacionados con el proceso de pruebas, as
como evaluar la criticidad y probabilidad de los mismos. Gracias a este anlisis se
podr generar un plan de contingencia.
Algunos de los riesgos ms comunes durante la fase de pruebas suelen ser:

Falta de recursos y baja competencia en pruebas

Falta de los recursos necesarios para ejecutar las pruebas segn el plan

Tiempo reducido asignado a la fase de pruebas

Cambios frecuentes en la definicin de los objetivos y alcance del plan de pruebas

Falta de coordinacin entre los equipos de desarrollo y testing

Falta de experiencia con nuevas tecnologas, herramientas, lenguajes de programacin,

Una caracterstica muy deseable de un equipo de pruebas es la pro-actividad, Incluso


antes de que el software comience a desarrollarse, el equipo puede involucrarse en
las distintas etapas de definicin para conocer ms en profundidad el proyecto as
como comenzar a definir estrategias de pruebas.
Medidas a tomar para obtener los mejores resultados podran ser:
1. Intervencin temprana del equipo de pruebas en el proyecto
La inclusin del equipo de pruebas en las etapas iniciales del desarrollo del producto
ayudar a obtener mayor conocimiento del mismo as como permitir detectar
posibles defectos en etapas tempranas, por lo que el coste de resolucin de los
mismos ser inferior.
2. Preparacin de las pruebas
Antes de comenzar el desarrollo del producto, el equipo de pruebas podr comenzar a
disear el plan a seguir as como identificar futuras necesidades. Herramientas a
utilizar, configuracin de entornos,
3. Definicin de los criterios de entrada salida

No refirindose a los datos, sino los puntos de unin con otras plataformas e
integraciones con terceros. Es muy til definir y mantener las interfaces y mecanismos
de comunicacin con terceros para evitar futuros problemas.
4. Requerimientos de pruebas
Desde el equipo de pruebas, se fomentar el uso de estndares, tecnologas abiertas,
as como buenas practicas de desarrollo (por ejemplo TDD, integracin contnua, etc)
5. Gestin de defectos
Una tarea de gran importancia es el seguimiento y priorizacin de los defectos
encontrados. Estos deben ser incluidos en los planings de siguientes iteraciones para
que sean resueltos. Adems, deben ser trazados para conocer cuando y en qu
versin han sido resueltos.
Siguiendo estos puntos, conseguiremos reducir en gran medida los riesgos ms
comunes durante el desarrollo de software. Hay que tener en cuenta que se debe
trabajar en sincronia con los dems grupos implicados, desde la parte de gestin,
pasando por desarrollo, pruebas, despliegue, Unos dependen de otros y los
problemas de unos se propagan a otros.

SEUDOCODIGCO
En ciencias de la computacin, y anlisis numrico, el pseudocdigo (o falso lenguaje) es
una descripcin de alto nivel compacta e informal1 del principio operativo de un programa
informtico u otro algoritmo.
Utiliza las convenciones estructurales de un lenguaje de programacin real,2 pero est
diseado para la lectura humana en lugar de la lectura mediante mquina, y con
independencia de cualquier otro lenguaje de programacin. Normalmente, el pseudocdigo
omite detalles que no son esenciales para la comprensin humana del algoritmo, tales como
declaraciones de variables, cdigo especfico del sistema y algunas subrutinas. El lenguaje de
programacin se complementa, donde sea conveniente, con descripciones detalladas
en lenguaje natural, o con notacin matemtica compacta. Se utiliza pseudocdigo pues este
es ms fcil de entender para las personas que el cdigo del lenguaje de programacin
convencional, ya que es una descripcin eficiente y con un entorno independiente de los
principios fundamentales de un algoritmo. Se utiliza comnmente en los libros de texto y

publicaciones cientficas que se documentan varios algoritmos, y tambin en la planificacin


del desarrollo de programas informticos, para esbozar la estructura del programa antes de
realizar la efectiva codificacin.
No existe una sintaxis estndar para el pseudocdigo, aunque los ocho IDE's que manejan
pseudocdigo tengan su sintaxis propia. Aunque sea parecido, el pseudocdigo no debe
confundirse con los programas esqueleto que incluyen cdigo ficticio, que pueden
ser compilados sin errores. Los diagramas de flujo y UMLpueden ser considerados como una
alternativa grfica al pseudocdigo, aunque sean ms amplios en papel.

PRCTICA 6: EJERCICIOS DE PROGRAMACIN EN


PSEUDOCDIGO
INTRODUCCIN TERICA (ms informacin en este documento o en
las transparencias de teora)

Representacin de variables
Cuando representamos datos, numricos o alfanumricos, debemos
darles un nombre. Una variable es un nombre que representa el valor de
un dato. En esencia, una variable es una zona o posicin de memoria en
la computadora donde se almacena informacin. En un pseudocdigo y
tambin en un programa se pueden crear tantas variables como
queramos. Ejemplos:
A = 50; Variable tipo numrica A cuyo valor es 50.
Ciudad = "Asuncin"; Variable alfanumrica o de tipo carcter Ciudad,
cuyo valor es "Asuncin"
X = C + B; Variable numrica X cuyo valor es la suma de los valores de
las variables numricas C y B. (Nota: C y B deben tener algn valor).
Asignacin
Para asignar un valor a una variable se utilizar el smbolo = que en este
contexto significa es reemplazado por. De forma general tendremos
que:
Nombre_variable = expresin
El valor de Nombre_variable se sustituye por el valor de expresin
Ejemplos:
C = 13
B = 25
X=C+B
(despus de estas instrucciones, X contendr el valor 13 +
25 = 38)

Existe otra forma de asignar un valor a una variable, a travs de la


instruccin leer:
Leer (Nombre_variable)
Esta instruccin pide al usuario un valor que ser asignado a la variable
Nombre_variable, es decir, en Nombre_variable se almacena el valor
ingresado por el usuario.
Operadores de relacin
Los operadores relacionales se utilizan para formar expresiones que al
ser evaluadas producen un valor de tipo lgico: verdadero o falso.
Signo
>
<
==
<=
>=
<>

Operador
Mayor que
Menor que
Igual a
Menor o igual que
Mayor o igual que
Distinto

Operadores aritmticos
Signo
+
*
/
^
MOD

Significado
Suma
Resta
Multiplicacin
Divisin
Potenciacin
Resto de la divisin entera

Estructuras de seleccin
El formato de la estructura de seleccin es:
si (condicin) entonces
instruccin 1
instruccin 2
...................
instruccin n
si no
instruccin a
instruccin b
...................
instruccin z

Ejemplo
25 <= 25
25 <> 25
25 <> 4
50 <= 100
500 >= 1
1=6

Resultado
Verdadero
Falso
Verdadero
Verdadero
Verdadero
Falso

fin si
El resultado de evaluar la condicin puede ser verdadero o falso: en el
caso de que sea verdadero, se ejecutarn: instruccin 1, instruccin 2,
... , instruccin n. Si el resultado de evaluar condicin es falso se
ejecutarn: instruccin a, instruccin b, ... , instruccin z.
Ejemplo:
Si A = 5 entonces
Imprimir("A es 5")
si no
imprimir("A no es igual a 5")
fin si
Estructuras de repeticin
El formato de la estructura de repeticin es:
mientras (condicin)
instruccin 1
instruccin 2
.....
instruccin n
fin mientras
El resultado de evaluar condicin puede ser verdadero o falso:
Mientras sea verdadero, se ejecutarn: instruccin 1, instruccin 2, ... ,
instruccin
n.
Estas
instrucciones
dejarn
de
ejecutarse
cuando condicin sea falso.
Ejemplo:
leer(contrasea)
mientras (contrasea < > "joshua")
imprimir("La contrasea es incorrecta !")
leer (contrasea)
fin-mientras
imprimir("Ha tecleado la contrasea correcta")
Nota: El bucle se repetir mientras que contrasea <> joshua sea
verdadero
Salida de resultados

Los resultados de nuestros algoritmos los vamos a mostrar al usuario a


travs de la instruccin imprimir, que tiene la siguiente forma general:
Imprimir(argumento 1, argumento 2, argumento 3, ... , argumento n)
Donde los argumentos pueden ser cadenas de caracteres
entrecomilladas o variables:
Si son cadenas de caracteres entrecomillados se imprime
literalmente lo que est entre comillas
Si son variables se imprime el contenido de dicha variable (no el
nombre)
Ejemplo:
sueldo = 1000
trabajador = Martnez
Imprimir( el sueldo de , trabajador , es , sueldo , Euros. )
La instruccin imprimir, muestra lo siguiente: el sueldo de Martnez es
1000 Euros.
EJERCICIOS: ENUNCIADOS

Ejercicio 1: Observa la siguiente secuencia de instrucciones:


1.
2.
3.
4.
5.
6.
7.

A=5
B=7
C=2
A=A+B+C
B=C/2
A=A/B+A^C
Imprimir(A)

Ahora responde a las siguientes cuestiones:


a) Qu valor contiene A despus de la cuarta instruccin?
b) Qu valor contiene B despus de la quinta instruccin?
c) Qu valor contiene A despus de la sexta instruccin?
d) Qu valor imprime la ltima instruccin?
e) Si en lugar de Imprimir(A) hubisemos escrito Imprimir(A) Qu
aparecera?
Ejercicio 2: Observa la siguiente secuencia de instrucciones:
1.
2.

A=5
B=7

3.
4.
5.
6.

C=1
D = (A == B)
E = (A <> B)
F = (MOD(B/A) >= C)

Ahora responde a las siguientes cuestiones:


a) Qu valor contiene D despus de la cuarta instruccin?
b) Qu valor contiene E despus de la quinta instruccin?
c) Qu valor contiene F despus de la sexta instruccin?
d) Cunto valen A, B y C despus de la ltima instruccin?
Ejercicio 3: Observa la siguiente secuencia de instrucciones:
1.
2.
3.
4.
5.
6.

leer(A)
leer(B)
leer(C)
D = (A == B)
E = (A <> B)
F = (MOD(B/A) >= C)

Ahora responde a las siguientes cuestiones: Supongamos que el usuario


introduce 3 en A, 4 en B y 5 en C
a)
b)
c)
d)

Qu valor contiene D despus de la cuarta instruccin?


Qu valor contiene E despus de la quinta instruccin?
Qu valor contiene F despus de la sexta instruccin?
Cunto valen A, B y C despus de la ltima instruccin?

Ejercicio 4: Observa la siguiente secuencia de instrucciones:


1.
2.
3.
4.
5.
6.
7.

leer (A)
resultado = 1
mientras (A>1)
resultado = resultado * A
A=A1
fin mientras
imprimir(resultado)

Ahora responde a las siguientes cuestiones:


a) Si en la primera instruccin se introduce un valor 2 en A Qu
valor se imprime?

b) Si en la primera instruccin se introduce un valor 3 en A Qu


valor se imprime?
c) Si en la primera instruccin se introduce un valor 4 en A Qu
valor se imprime?
d) Qu se est calculando?
Ejercicio 5: Observa la siguiente secuencia de instrucciones:
1.
2.
3.
4.
5.
6.

leer (A)
Si (A>0)
Imprimir (A,es positivo)
Si no
Imprimir (A,es negativo)
Fin si

a) Describe, instruccin por instruccin, qu se est haciendo con


este algoritmo.
b) Qu pasa si A = 5? Y si A = - 100?
c) Escribe otro algoritmo para distinguir mltiplos de 3 y compralo
Ejercicio 6: Observa la siguiente secuencia de instrucciones:
1.
2.
3.
4.
5.
6.
7.
a)
b)
c)
d)

leer (NumeroA)
leer (NumeroB)
Si (NumeroA < NumeroB)
imprimir ("El mayor es:", NumeroB)
si-no
imprimir ("El mayor es:", NumeroA)
fin-si

Describe qu se est haciendo con este algoritmo.


Qu pasa si NumeroA = 5 y NumeroB = - 100?
Qu pasa si NumeroA = 10 y NumeroB = 100?
Qu pasa si NumeroA = 10 y NumeroB = 10?

QUIENES PUREBAS UNITARIAS ACEPTACION FUNCIONALES INTEGRALES

TESTING DE INTEGRACIN
Verifica las interfaces entre componentes, las interacciones entre las diferentes partes de
un sistema, tales como el sistema operativo, sistema de archivos, hardware, o interfaces
con otros sistemas.
Puede haber ms de un nivel de pruebas de integracin y puede llevarse a cabo sobre
objetos de prueba de tamao variable. Por ejemplo: Pruebas de integracin de
componentes verifican las interacciones entre las los componentes del software y se
realiza despus de las pruebas de componentes.
Cuanto mayor sea el alcance de la integracin, ms difcil se hace para aislar las fallas de
un elemento o sistema especfico, que puede conducir a un aumento del riesgo.
Las estrategias sistemticas de integracin pueden estar basadas en la arquitectura del
sistema (por ejemplo, de arriba abajo y de abajo hacia arriba), tareas funcionales, las
secuencias de procesamiento de transacciones, o algn otro aspecto del sistema o
componente. Con el fin de reducir el riesgo de encontrar errores demasiado tarde, la
integracin normalmente es incremental.

ALCANCE:

Se prueban grupos de componentes

Se puede implementar a nivel subsistemas si se tiene un grupo de los mismos

Comprueban la interaccin entre componentes respecto de la especificacin de


interfaces.

TESTING DE SISTEMA
La calidad del software es observada desde el punto de vista del usuario. El entorno de
prueba debe corresponder al entorno de produccin tanto como sea posible para reducir
al mnimo el riesgo de incidentes debidos al ambiente especficamente y que no se
encontraron en las pruebas. Pueden incluir pruebas basadas en los riesgos y/o
especificaciones sobre los requerimientos, procesos de negocio, casos de uso, u otras
descripciones de alto nivel del comportamiento del sistema, las interacciones con el
sistema operativo y los recursos del sistema.
Deben investigar tanto requerimientos funcionales y no funcionales del sistema. Estos
requerimientos pueden existir como texto y/o modelos.

ALCANCE:

Adecuacion (Suitability): Las funcoines implementadas son adecuadas para su


uso esperado?

Exactitud (Accuracy): Las funciones presentan los resultados correctos


(acordados)?

Interoperabilidad (Interoperability): Las interacciones con el entorno del sistema


presentan algun problema?

Cumplimiento de Funcionalidad (Compliance): El sistema cumple con normas y


reglamentos aplicables?

Seguridad (Security): Estn protegidos los datos/programas contra acceso no


deseado o perdida?

TESTING DE ACEPTACIN
Son a menudo responsabilidad de los clientes y/o usuarios de un sistema; otras partes
interesadas pueden participar tambin. La meta en las pruebas de aceptacin es el de
establecer confianza en el sistema, las partes del sistema o las caractersticas especficas
y no funcionales del sistema. Encontrar defectos no es el foco principal en las pruebas de
aceptacin. Las pruebas de aceptacin pueden evaluar la disposicin del sistema para el
uso, aunque no es necesariamente el nivel final de las pruebas. Por ejemplo, una prueba
de integracin de sistemas a gran escala puede venir en pos de la prueba de aceptacin
para un sistema.
La prueba de aceptacin se puede presentar como algo ms que una prueba de nivel
nico, por ejemplo: Se pueden realizar pruebas de aceptacin sobre un producto de
software cuando se instala o se integra. Las pruebas de aceptacin de la usabilidad de un
componente puede hacerse durante las pruebas de componentes. Las pruebas de
aceptacin de una nueva mejora funcional puede hacerse antes de la prueba del sistema.

ALCANCE:

Se verificar que el software satisface los requisitos del cliente

TIPOS DE PRUEBAS SEGUN OBJETIVOS


TESTING FUNCIONAL:
Las pruebas se basan en funciones y caractersticas (descripta en los documentos o
entendidas por los testers) y su interoperabilidad con sistemas especficos, y puede

llevarse a cabo en todos los niveles del Testing (por ejemplo, las pruebas de unidad
pueden estar basadas en la especificacin de componentes). Se pueden llevar a cabo en
todos los niveles de pruebas.

Objetivo: la funcin del objeto de prueba.

TESTING NO FUNCIONAL
Es la prueba de cmo funciona el sistema. Incluyen, pero no se limitan a, las pruebas de
rendimiento, pruebas de carga, pruebas de estrs, pruebas de usabilidad, pruebas de
mantenimiento, pruebas de fiabilidad y pruebas de portabilidad.
Las pruebas no funcionales se pueden realizar en todos los niveles del Testing. El termino
pruebas no funcionales describe las pruebas necesarias para medir las caractersticas de
los sistemas y software que se puede cuantificar en una escala variable, tales como
tiempos de respuesta para las pruebas de rendimiento.
Objetivo: Describir las pruebas necesarias para medir las caractersticas de los sistemas
que se puede cuantificar en una escala variable

PREGUNTAS SQL
El lenguaje de consulta estructurado o SQL (por sus siglas en ingls Structured Query
Language) es unlenguaje declarativo de acceso a bases de datos relacionales que permite
especificar diversos tipos de operaciones en ellas. Una de sus caractersticas es el manejo
del lgebra y el clculo relacional que permiten efectuar consultascon el fin de recuperar de
forma sencilla informacin bases de datos, as como hacer cambios en ellas.
ndice
[ocultar]

1 Orgenes y evolucin

2 Caractersticas generales del SQL

2.1 Tipos de Datos

2.2 Optimizacin

3 Lenguaje de definicin de datos (DDL)


o

3.1 CREATE | CREAR

3.2 ALTER | MODIFICAR

3.3 DROP| ELIMINAR

3.4 TRUNCATE | BORRAR TABLA

4 Lenguaje de manipulacin de datos DML(Data Manipulation Language)

4.1 Definicin

4.2 SELECT | SELECCIONAR

4.2.1 Forma bsica

4.2.2 Clusula WHERE

4.2.3 Clusula ORDER BY

4.3 INSERT | INSERTAR

4.3.1 Forma bsica

4.3.2 Ejemplo

4.3.3 Formas avanzadas

4.4 UPDATE

4.3.3.1 Copia de filas de otras tablas

4.4.1 Ejemplo

4.5 DELETE

4.5.1 Forma bsica

4.5.2 Ejemplo

5 Recuperacin de clave

6 Disparadores

7 Sistemas de gestin de base de datos

8 Referencias

9 Vase tambin

10 Enlaces externos

Orgenes y evolucin[editar]
Los orgenes del SQL estn ligados a los de las bases de datos relacionales. En 1970 E. F.
Codd propone elmodelo relacional y asociado a este un sublenguaje de acceso a
los datos basado en el clculo de predicados. Basndose en estas ideas, los laboratorios
de IBMdefinieron el lenguaje SEQUEL (Structured English Query Language) que ms tarde
fue ampliamente implementado por el sistema de gestin de bases de datos(SGBD)
experimental System R, desarrollado en 1977 tambin por IBM. Sin embargo, fue Oracle quien
lo introdujo por primera vez en 1979 en un producto comercial.
El SEQUEL termin siendo el predecesor de SQL, que es una versin evolucionada del
primero. El SQL pasa a ser el lenguaje por excelencia de los diversossistemas de gestin de
bases de datos relacionales surgidos en los aos siguientes y fue por fin estandarizado en
1986 por el ANSI, dando lugar a la primera versin estndar de este lenguaje, el "SQL-86" o
"SQL1". Al ao siguiente este estndar es tambin adoptado por la ISO.

Sin embargo, este primer estndar no cubra todas las necesidades de los desarrolladores e
inclua funcionalidades de definicin de almacenamiento que se consider suprimirlas. As
que, en 1992, se lanz un nuevo estndar ampliado y revisado del SQL llamado "SQL-92" o
"SQL2".
En la actualidad el SQL es el estndar de facto de la inmensa mayora de los SGBD
comerciales. Y, aunque la diversidad de aadidos particulares que incluyen las distintas
implementaciones comerciales del lenguaje es amplia, el soporte al estndar SQL-92 es
general y muy amplio.
El ANSI SQL sufri varias revisiones y agregados a lo largo del tiempo:
Ao Nombre
1986 SQL-86

Alias
SQL-87

1989 SQL-89
1992 SQL-92

Comentarios
Primera publicacin hecha por ANSI. Confirmada por ISO en 1987.
Revisin menor.

SQL2

Revisin mayor.

1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas (para


relaciones jerrquicas), triggers y algunas caractersticas orientadas
a objetos.
2003 SQL:2003

Introduce algunas caractersticas de XML, cambios en las


funciones, estandarizacin del objeto sequence y de las columnas
autonumericas. (Ver Eisenberg et al.: SQL:2003 Has Been
Published.)

2005 SQL:2005

ISO/IEC 9075-14:2005 Define las maneras en las cuales el SQL se


puede utilizar conjuntamente con XML. Define maneras de importar
y guardar datos XML en una base de datos SQL, manipulndolos
dentro de la base de datos y publicando el XML y los datos SQL
convencionales en forma XML. Adems, proporciona facilidades
que permiten a las aplicaciones integrar dentro de su cdigo SQL el
uso de XQuery, lenguaje de consulta XML publicado por el W3C
(World Wide Web Consortium) para acceso concurrente a datos
ordinarios SQL y documentos XML.

2008 SQL:2008

Permite el uso de la clusula ORDER BY fuera de las definiciones


de los cursores. Incluye los disparadores del tipo INSTEAD OF.

Aade la sentencia TRUNCATE. (Ver [1].)

Caractersticas generales del SQL[editar]


El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los
sistemas relacionales y permite as gran variedad de operaciones.
Es un lenguaje declarativo de "alto nivel" o "de no procedimiento" que, gracias a su fuerte
base terica y su orientacin al manejo de conjuntos de registros y no a registros
individuales permite una alta productividad en codificacin y la orientacin a objetos. De
esta forma, una sola sentencia puede equivaler a uno o ms programas que se utilizaran en
un lenguaje de bajo nivel orientado a registros. SQL tambin tiene las siguientes
caractersticas:

Lenguaje de definicin de datos: El LDD de SQL proporciona comandos para la


definicin de esquemas de relacin, borrado de relaciones y modificaciones de los
esquemas de relacin.

Lenguaje interactivo de manipulacin de datos: El LMD de SQL incluye lenguajes de


consultas basado tanto en lgebra relacional como en clculo relacional de tuplas.

Integridad: El LDD de SQL incluye comandos para especificar las restricciones de


integridad que deben cumplir los datos almacenados en la base de datos.

Definicin de vistas: El LDD incluye comandos para definir las vistas.

Control de transacciones: SQL tiene comandos para especificar el comienzo y el final de


una transaccin.

SQL incorporado y dinmico: Esto quiere decir que se pueden incorporar instrucciones
de SQL en lenguajes de programacin como: C++, C, Java, PHP, Cobol, Pascal y Fortran.

Autorizacin: El LDD incluye comandos para especificar los derechos de acceso a las
relaciones y a las vistas.

Tipos de Datos[editar]
Algunos de los tipos de datos bsicos de SQL son:

Date: una fecha de calendario que contiene el ao (de cuatro cifras), el mes y el da.

Time: La hora del da en horas minutos segundos (el valor predeterminado es 0).

Timestamp: la combinacin de Date y Time.

Optimizacin[editar]
Como ya se dijo antes, y suele ser comn en los lenguajes de acceso a bases de datos de alto
nivel, el SQL es un lenguaje declarativo. O sea, que especifica qu es lo que se quiere y no
cmo conseguirlo, por lo que una sentencia no establece explcitamente un orden de
ejecucin.
El orden de ejecucin interno de una sentencia puede afectar seriamente a la eficiencia del
SGBD, por lo que se hace necesario que ste lleve a cabo una optimizacin antes de su
ejecucin. Muchas veces, el uso de ndices acelera una instruccin de consulta, pero ralentiza
la actualizacin de los datos. Dependiendo del uso de la aplicacin, se priorizar el acceso
indexado o una rpida actualizacin de la informacin. La optimizacin difiere sensiblemente
en cada motor de base de datos y depende de muchos factores.
Existe una ampliacin de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el
acceso a bases de datos difusas, usando la lgica difusa. Este lenguaje ha sido implementado
a nivel experimental y est evolucionando rpidamente.

Lenguaje de definicin de datos (DDL)[editar]


El lenguaje de definicin de datos (en ingls Data Definition Language, o DDL), es el que se
encarga de la modificacin de la estructura de los objetos de la base de datos. Incluye
rdenes para modificar, borrar o definir las tablas en las que se almacenan los datos de la
base de datos. Existen cuatro operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE.

CREATE | CREAR[editar]
Este comando permite crear objetos de datos, como nuevas bases de datos, tablas, vistas
y procedimientos almacenados.
Ejemplo (crear una tabla)
CREATE TABLE 'CUSTOMERS';

ALTER | MODIFICAR[editar]
Este comando permite modificar la estructura de una tabla u objeto. Se pueden
agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar ndices a una
tabla, modificar un trigger, etc.
Ejemplo (agregar columna a una tabla)
ALTER TABLE 'ALUMNOS' ADD EDAD INT UNSIGNED;

DROP| ELIMINAR[editar]
Este comando elimina un objeto de la base de datos. Puede ser una
tabla, vista, ndice, trigger, funcin, procedimiento o cualquier objeto que el motor de la base
de datos soporte. Se puede combinar con la sentencia ALTER.
Ejemplo
DROP TABLE 'ALUMNOS';.

TRUNCATE | BORRAR TABLA[editar]


Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es
que si se quiere borrar todo el contenido de la tabla, es mucho ms rpido, especialmente si la
tabla es muy grande. La desventaja es que TRUNCATE slo sirve cuando se quiere eliminar
absolutamente todos los registros, ya que no se permite la clusula WHERE. Si bien, en un
principio, esta sentencia parecera ser DML (Lenguaje de Manipulacin de Datos), es en
realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a
crear y no ejecuta ninguna transaccin.
Ejemplo
TRUNCATE TABLE 'NOMBRE_TABLA';

Lenguaje de manipulacin de datos DML(Data Manipulation


Language)[editar]

Definicin[editar]
Un lenguaje de manipulacin de datos (Data Manipulation Language, o DML en ingls) es un
lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios
llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de
datos adecuado.
El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y
manipular datos en una base de datos relacional.

SELECT | SELECCIONAR[editar]
La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base
de datos.
Forma bsica[editar]
SELECT [ALL | DISTINCT ]
<nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista>

[{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicin> [{ AND|OR <condicin>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicin>[{ AND|OR <condicin>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

SELECT

ALL

Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de
seleccin.
Indica que queremos seleccionar todos los valores.Es el valor por defecto y no
suele especificarse casi nunca.

DISTINCT Indica que queremos seleccionar slo los valores distintos.


Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de
FROM

que exista ms de una tabla se denomina a la consulta "consulta combinada" o


"join". En las consultas combinadas es necesario aplicar una condicin de
combinacin a travs de una clusula WHERE.

WHERE

Especifica una condicin que debe cumplirse para que los datos sean devueltos
por la consulta. Admite los operadores lgicos AND y OR.

GROUP

Especifica la agrupacin que se da a los datos. Se usa siempre en combinacin

BY

con funciones agregadas.


Especifica una condicin que debe cumplirse para que los datos sean devueltos

HAVING

por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al


conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto
a GROUP BY y la condicin debe estar referida a los campos contenidos en ella.

ORDER
BY

Presenta el resultado ordenado por las columnas indicadas. El orden puede


expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor
predeterminado es ASC.

Ejemplo:
Para formular una consulta a la tabla Coches y recuperar los campos matricula, marca,
modelo, color, numero_kilometros, num_plazas debemos ejecutar la siguiente consulta. Los
datos sern devueltos ordenados por marca y por modelo en orden ascendente, de menor a
mayor. La palabra clave FROM indica que los datos sern recuperados de la tabla Coches.

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas


FROM Coches
ORDER BY marca,modelo;

Ejemplo de Consulta simplificada a travs de un comodn de Campos (*):


El uso del asterisco indica que queremos que la consulta devuelva todos los campos que
existen en la tabla y los datos sern devueltos ordenados por marca y por modelo.
SELECT * FROM Coches ORDER BY marca, modelo;

Clusula WHERE[editar]
La clusula WHERE es la instruccin que nos permite filtrar el resultado de una
sentencia SELECT. Habitualmente no deseamos obtener toda la informacin existente en la
tabla, sino que queremos obtener slo la informacin que nos resulte til en ese momento. La
clusula WHERE filtra los datos antes de ser devueltos por la consulta. Cuando en la Clusula
WHERE queremos incluir un tipo texto, debemos incluir el valor entre comillas simples.
Ejemplos:
En nuestro ejemplo, se desea consultar un coche en concreto, para esto se agreg una
clusula WHERE. Esta clusula especifica una o varias condiciones que deben cumplirse para
que la sentencia SELECT devuelva los datos. En este caso la consulta devolver slo los
datos del coche con matrcula para que la consulta devuelva slo los datos del coche con
matrcula MF-234-ZD o bien la matrcula FK-938-ZL . Se puede utilizar la
clusula WHERE solamente, en combinacin con tantas condiciones como queramos.
SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas
FROM Coches
WHERE matricula = 'MF-234-ZD'
OR matricula = 'FK-938-ZL' ;

Una Condicin WHERE puede ser negada a travs del Operador Lgico NOT. La Siguiente
consulta devolver todos los datos de la tabla Coches, menos el que tenga la Matrcula MF234-ZD .
SELECT matricula,marca, modelo, color, numero_kilometros, num_plazas
FROM coches

WHERE NOT matricula = 'MF-234-ZD';

La Siguiente consulta utiliza la condicional DISTINCT, la cual nos devolver todos los valores
distintos formados por los Campos Marca y Modelo. de la tablacoches.
SELECT DISTINCT marca, modelo FROM coches;
Clusula ORDER BY[editar]
La clusula ORDER BY es la instruccin que nos permite especificar el orden en el que sern
devueltos los datos. Podemos especificar la ordenacin ascendente o descendente a travs
de las palabras clave ASC y DESC. La ordenacin depende del tipo de datos que este
definido en la columna, de forma que un campo nmerico ser ordenado como tal, y un
alfanmerico se ordenar de la A a la Z, aunque su contenido sea nmerico. El valor
predeterminado es ASC si no se especifica al hacer la consulta.
Ejemplos:
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM coches
ORDER BY marca ASC,modelo DESC; Este ejemplo, selecciona todos los campos matricula,
marca, modelo, color, numero_kilometros y num_plazas de la tabla coches, ordenndolos por
los campos marca y modelo, marca en forma ascendente y modelo en forma descendente.
SELECT matricula,
marca,
modelo,
color,
numero_kilometros, num_plazas
FROM coches
ORDER BY 2;

Este ejemplo, selecciona todos los campos matrcula, marca, modelo, color,
numero_kilometros y num_plazas de la tabla coches, ordenndolos por el campomarca, ya
que aparece en segundo lugar dentro de la lista de campos que componen la SELECT.

INSERT | INSERTAR[editar]
Una sentencia INSERT de SQL agrega uno o ms registros a una (y slo una) tabla en una
base de datos relacional.
Forma bsica[editar]
INSERT INTO 'tablatura' ('columna1',['columna2,... '])
VALUES ('valor1', ['valor2,...'])
Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le
ser asignado el valor por omisin. Los valores especificados (o implcitos) por la
sentencia INSERT debern satisfacer todas las restricciones aplicables. Si ocurre un error de
sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error.
Ejemplo[editar]
INSERT INTO agenda_telefonica (nombre, numero)
VALUES ('Roberto Jeldrez', 4886850);
Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:
INSERT INTO nombreTabla VALUES ('valor1', ['valor2,...'])
Ejemplo (asumiendo que 'nombre' y 'nmero' son las nicas columnas de la tabla
'agenda_telefonica'):
INSERT INTO agenda_telefonica
VALUES ('Jhonny Aguiar', 080473968);
Formas avanzadas[editar]
Una caracterstica de SQL (desde SQL-92) es el uso de constructores de filas para insertar
mltiples filas a la vez, con una sola sentencia SQL:
INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])
VALUES (''valor1a'', [''valor1b,...'']),
(''value2a'', [''value2b,...'']),...;
Esta caracterstica es soportada por DB2, PostgreSQL (desde la versin 8.2), MySQL, y H2.
Ejemplo (asumiendo que 'nombre' y 'nmero' son las nicas columnas en la tabla
'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Fernndez', '4886850'),
('Alejandro Sosa', '4556550');
Que poda haber sido realizado por las sentencias
INSERT INTO agenda_telefonica VALUES ('Roberto Fernndez', '4886850');
INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');

Notar que las sentencias separadas pueden tener semntica diferente (especialmente con
respecto a los triggers), y puede tener diferente rendimiento que la sentencia de insercin
mltiple.
Para insertar varias filas en MS SQL puede utilizar esa construccin:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212'
UNION ALL
SELECT 'Peter Doe', '555-2323';
Tenga en cuenta que no se trata de una sentencia SQL vlida de acuerdo con el estndar
SQL (SQL: 2003), debido a la clusula subselect incompleta.
Para hacer lo mismo en Oracle se usa la Tabla DUAL, siempre que se trate de solo una simple
fila:
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM DUAL
UNION ALL
SELECT 'Peter Doe','555-2323' FROM DUAL
Una implementacin conforme al estndar de esta lgica se muestra el siguiente ejemplo, o
como se muestra arriba (no aplica en Oracle):
INSERT INTO phone_book
SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c)
UNION ALL
SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)
Copia de filas de otras tablas[editar]
Un INSERT tambin puede utilizarse para recuperar datos de otros, modificarla si es
necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL
que no implica ningn procesamiento intermedio en la aplicacin cliente. Un SUBSELECT se
utiliza en lugar de la clusula VALUES. El SUBSELECT puede contener JOIN, llamadas a
funciones, y puede incluso consultar en la misma TABLA los datos que se inserta.
Lgicamente, el SELECT se evala antes que la operacin INSERT est iniciada. Un ejemplo
se da a continuacin.
INSERT INTO phone_book2
SELECT *
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')

Una variacin es necesaria cuando algunos de los datos de la tabla fuente se est insertando
en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son
iguales.)
INSERT INTO phone_book2 ( [name], [phoneNumber] )
SELECT [name], [phoneNumber]
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con
el esquema de la tabla donde los datos son insertados.

UPDATE[editar]
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.
Ejemplo[editar]
UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N';

DELETE[editar]
Una sentencia DELETE de SQL borra uno o ms registros existentes en una tabla.
Forma bsica[editar]
DELETE FROM tabla WHERE columna1 = 'valor1'
Ejemplo[editar]
DELETE FROM My_table WHERE field2 = 'N';

Recuperacin de clave[editar]
Los diseadores de base de datos que usan una clave suplente como la clave principal para
cada tabla, se ejecutar en el ocasional escenario en el que es necesario recuperar
automticamente la base de datos, generando una clave primaria de una sentencia SQL
INSERT para su uso en otras sentencias SQL. La mayora de los sistemas no permiten
sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar
una solucin en tales escenarios.
Implementaciones comunes incluyen:

Utilizando un procedimiento almacenado especfico de base de datos que genera la clave


suplente, realice la operacin INSERT, y finalmente devuelve la clave generada.

Utilizando una sentencia SELECT especfica de base de datos, sobre una tabla temporal
que contiene la ltima fila insertada. DB2 implementa esta caracterstica de la siguiente

manera:
SELECT *
FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Cristobal
Jeldrez','0426.817.10.30' ) ) AS t

Utilizando una sentencia SELECT despus de la sentencia INSERT con funcin especfica
de base de datos, que devuelve la clave primaria generada por el registro insertado ms
recientemente.

Utilizando una combinacin nica de elementos del original SQL INSERT en una posterior
sentencia SELECT.

Utilizando un GUID en la sentencia SQL INSERT y la recupera en una sentencia SELECT.

Utilizando la funcin de PHP mysql_insert_id() de MySQL despus de la sentencia


INSERT.

Utilizando un INSERT con la clusula RETURNING para Oracle, que slo se puede utilizar
dentro de un PL/SQL bloque, en el caso de PostgreSQL se puede usar tambin tanto con

SQL como con PL/SQL.


INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' )
RETURNING phone_book_id INTO v_pb_id

En el caso de MS SQL se puede utilizar la siguiente instruccin:


SET NoCount ON;
INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30'
);
SELECT @@IDENTITY AS ID

Disparadores[editar]
Los disparadores, tambin conocidos como desencadenantes (triggers en ingls) son
definidos sobre la tabla en la que opera la sentencia INSERT, y son evaluados en el contexto
de la operacin. Los desencadenantes BEFORE INSERT permiten la modificacin de los
valores que se insertarn en la tabla. Los desencadenantes AFTER INSERT no puede
modificar los datos de ahora en adelante, pero se puede utilizar para iniciar acciones en otras
tablas, por ejemplo para aplicar mecanismos de auditora.

You might also like