You are on page 1of 14

República‌‌Bolivariana‌‌de‌‌Venezuela‌ 


Ministerio‌‌del‌‌Poder‌‌Popular‌‌para‌‌la‌‌Educación‌‌Superior‌  ‌
Universidad‌‌Politécnica‌‌Territorial‌‌José‌‌Antonio‌‌Anzoátegui.‌  ‌
 ‌

 ‌
 ‌

 ‌
 ‌
 ‌

SMBD‌‌Y‌‌SQL‌‌AVANZADO‌  ‌
 ‌
 ‌
 ‌
Docente:‌‌ ‌ ‌Estudiante:‌ 
 ‌
Yormis‌‌Pérez‌ M
‌ arielys‌‌Araujo‌  ‌
C.I‌‌27.592.227‌  ‌
IF‌‌01‌‌
   ‌
T4-‌‌FASE‌‌I ‌ ‌

INTENSIVO‌   ‌ ‌
 ‌

 ‌
El‌‌Tigre,‌‌28‌‌de‌‌Agosto‌‌del‌‌2021.‌   ‌ ‌

 ‌
Arquitectura‌‌a‌‌tres‌‌niveles‌  ‌

 ‌
En‌  ‌1975‌  ‌el‌  ‌Organismo‌  ‌de‌  ‌Estandarización‌  ‌de‌  ‌Los‌  ‌Estados‌  ‌Unidos‌  ‌(ANSI)‌‌
 
publica‌  ‌un‌  ‌informe‌  ‌clave‌  ‌para‌  ‌la‌  ‌posterior‌  ‌evolución‌  ‌de‌  ‌los‌  ‌S.G.B.D.‌  ‌Insiste‌  ‌en‌  ‌la‌‌
 
necesidad‌‌
  de‌‌
 conseguir‌‌
 total‌‌
 independencia‌‌
 entre‌‌
 datos‌‌
 y ‌‌aplicaciones;‌‌
 propone‌‌
 una‌‌
 
arquitectura‌‌a‌‌3‌‌niveles‌‌y‌‌define‌‌el‌‌modelo‌‌conceptual‌‌para‌‌conseguir‌‌tales‌‌objetivos‌  ‌
 ‌
La‌  ‌arquitectura‌  ‌interna‌  ‌de‌  ‌SGBD‌  ‌que‌  ‌sigue‌  ‌esta‌  ‌normativa‌  ‌presenta‌  ‌en‌  ‌su‌‌
 
interior‌‌tres‌‌niveles‌‌perfectamente‌‌diferenciados:‌  ‌

1. Nivel‌‌Interno‌‌o‌‌Físico‌  ‌
2. Nivel‌‌Conceptual‌  ‌
3. Nivel‌‌Externo‌‌o‌‌Lógico‌  ‌

El‌  ‌Nivel‌  ‌Físico‌  ‌se‌‌


  encarga‌‌
  de‌‌
  engranar‌‌
  con‌‌
  el‌‌
  software‌‌
  más‌‌
  interno‌‌
  de‌‌
  cada‌‌
 
máquina‌‌
  (Sistema‌‌
  Operativo‌‌
  y ‌‌Sistema‌‌
 de‌‌
 Gestión‌‌
 de‌‌
 ficheros).‌‌
 El‌‌
 Esquema‌‌
 Interno‌‌
 
especifica‌‌
 qué‌‌
 y ‌‌cómo‌‌
 son‌‌
 almacenados‌‌
 los‌‌
 datos.‌‌
 Describe‌‌
 la‌‌
 estructura‌‌
 de‌‌
 la‌‌
 Base‌‌
 
de‌‌Datos.‌‌en‌‌forma‌‌de‌‌Modelo‌‌Conceptual‌‌de‌‌almacenamiento.‌  ‌
 ‌
El‌  ‌Nivel‌  ‌Conceptual‌‌
  materializa‌‌
  el‌‌
  lugar‌‌
  donde‌‌
  definir‌‌
  el‌‌
  resultado‌‌
  del‌‌
  diseño‌‌
 
de‌‌
  la‌‌
  Base‌‌
  de‌‌
  Datos.‌‌
  El‌‌
  Esquema‌‌
  Conceptual‌‌
  debe‌‌
  captar‌‌
 y ‌‌almacenar‌‌
 el‌‌
 “universo‌‌
 
del‌‌
  discurso”‌‌
  que‌‌
  describe‌‌
  a ‌‌la‌‌
  organización‌‌
  o ‌‌empresa‌‌
  y ‌‌que‌‌
  es‌‌
  necesaria‌‌
 para‌‌
 su‌‌
 
funcionamiento‌  ‌(capacidad‌  ‌semántica)‌  ‌sirve‌  ‌de‌  ‌punto‌  ‌de‌  ‌control‌  ‌para‌  ‌futuros‌‌
 
desarrollos‌  ‌de‌  ‌la‌  ‌Base‌  ‌de‌  ‌Datos,‌  ‌aísla‌  ‌la‌  ‌representación‌  ‌de‌  ‌la‌  ‌información‌  ‌de‌  ‌los‌‌
 
requerimientos‌  ‌de‌  ‌la‌  ‌máquina‌  ‌y ‌ ‌de‌  ‌las‌  ‌exigencias‌  ‌de‌  ‌cada‌  ‌usuario‌  ‌en‌  ‌particular‌  ‌e ‌‌
independiza‌‌la‌‌definición‌‌de‌‌la‌‌información‌‌de‌‌los‌‌SGPD‌‌en‌‌concreto.‌  ‌
 ‌
El‌  ‌Nivel‌  ‌Lógico‌  ‌o ‌ ‌externo‌  ‌de‌  ‌descripción,‌  ‌contiene‌  ‌las‌  ‌vistas‌  ‌externas‌  ‌de‌  ‌la‌‌
 
Base‌‌
  de‌‌
  Datos.‌‌
  que‌‌
  están‌‌
  asociadas‌‌
  cada‌‌
 una‌‌
 a ‌‌un‌‌
 Esquema‌‌
 Externo‌‌
 y ‌‌permite‌‌
 ver‌‌
 
a‌‌
  cada‌‌
  tipo‌‌
  de‌‌
  usuario‌‌
  de‌‌
  la‌‌
  Base‌‌
  de‌‌
  Datos,‌‌
  sólo‌‌
  aquella‌‌
 parte‌‌
 del‌‌
 esquema‌‌
 que‌‌
 es‌‌
 
de‌‌su‌‌interés.‌  ‌
 ‌
De‌  ‌una‌  ‌Base‌  ‌de‌  ‌Datos‌  ‌se‌  ‌pueden‌  ‌derivar‌  ‌tantas‌  ‌vistas‌  ‌como‌  ‌haga‌  ‌falta.‌‌
  El‌‌
 
propósito‌  ‌principal‌  ‌de‌  ‌esta‌  ‌arquitectura‌  ‌a ‌ ‌3 ‌ ‌niveles‌  ‌es‌  ‌conseguir‌  ‌que‌  ‌el‌  ‌Esquema‌‌
 
Conceptual‌  ‌sea‌  ‌una‌  ‌descripción‌  ‌estable‌  ‌de‌  ‌la‌  ‌organización‌‌
  e ‌‌independiente‌‌
  de‌‌
  las‌‌
 
“vistas”‌‌
  y ‌‌de‌‌
 la‌‌
 forma‌‌
 de‌‌
 almacenamiento‌‌
 de‌‌
 los‌‌
 datos.‌‌
 De‌‌
 este‌‌
 modo‌‌
 se‌‌
 conseguiría‌‌
 
separar‌‌los‌‌programas‌‌de‌‌aplicación‌‌de‌‌la‌‌base‌‌de‌‌datos‌‌física.‌  ‌
La‌  ‌mayoría‌  ‌de‌  ‌los‌  ‌SGBD‌  ‌no‌  ‌distinguen‌  ‌del‌  ‌todo‌  ‌los‌  ‌tres‌  ‌niveles.‌  ‌Algunos‌‌
 
incluyen‌‌
  detalles‌‌
  del‌‌
  nivel‌‌
  físico‌‌
  en‌‌
  el‌‌
  esquema‌‌
 conceptual.‌‌
 En‌‌
 casi‌‌
 todos‌‌
 los‌‌
 SGBD‌‌
 
que‌‌
  manejan‌‌
  vistas‌‌
  de‌‌
  usuario,‌‌
  los‌‌
  esquemas‌‌
 externos‌‌
 se‌‌
 especifican‌‌
 con‌‌
 el‌‌
 mismo‌‌
 
modelo‌‌
  de‌‌
  datos‌‌
  que‌‌
  describe‌‌
  la‌‌
 información‌‌
 a ‌‌nivel‌‌
 conceptual,‌‌
 aunque‌‌
 en‌‌
 algunos‌‌
 
se‌‌pueden‌‌utilizar‌‌diferentes‌‌modelos‌‌de‌‌datos‌‌en‌‌los‌‌niveles‌‌conceptual‌‌y‌‌externo.‌  ‌
Hay‌  ‌que‌  ‌destacar‌  ‌que‌  ‌los‌  ‌tres‌  ‌esquemas‌  ‌no‌  ‌son‌  ‌más‌  ‌que‌  ‌descripciones‌  ‌de‌  ‌los‌‌
 
mismos‌  ‌datos‌  ‌pero‌  ‌con‌  ‌distintos‌  ‌niveles‌  ‌de‌  ‌abstracción.‌  ‌Los‌  ‌únicos‌  ‌datos‌  ‌que‌‌
 
existen‌  ‌realmente‌  ‌están‌  ‌a ‌ ‌nivel‌  ‌físico,‌  ‌almacenados‌  ‌en‌  ‌un‌‌
  dispositivo‌‌
  como‌‌
  puede‌‌
 
ser‌‌un‌‌disco.‌‌
   ‌
En‌  ‌un‌  ‌SGBD‌  ‌basado‌  ‌en‌  ‌la‌  ‌arquitectura‌  ‌de‌  ‌tres‌  ‌niveles,‌  ‌cada‌  ‌grupo‌  ‌de‌‌
 
usuarios‌‌
  hace‌‌
  referencia‌‌
  exclusivamente‌‌
  a ‌‌su‌‌
 propio‌‌
 esquema‌‌
 externo.‌‌
 Por‌‌
 lo‌‌
 tanto,‌‌
 
el‌‌
  SGBD‌‌
  debe‌‌
 transformar‌‌
 cualquier‌‌
 petición‌‌
 expresada‌‌
 en‌‌
 términos‌‌
 de‌‌
 un‌‌
 esquema‌‌
 
externo‌  ‌a ‌ ‌una‌  ‌petición‌  ‌expresada‌  ‌en‌  ‌términos‌  ‌del‌  ‌esquema‌‌
  conceptual,‌‌
  y ‌‌luego,‌‌
  a ‌‌
una‌  ‌petición‌  ‌en‌  ‌el‌  ‌esquema‌  ‌interno,‌  ‌que‌  ‌se‌  ‌procesará‌  ‌sobre‌  ‌la‌  ‌base‌  ‌de‌  ‌datos‌‌
 
almacenada.‌  ‌Si‌  ‌la‌  ‌petición‌  ‌es‌  ‌de‌  ‌una‌  ‌obtención‌  ‌(consulta)‌  ‌de‌  ‌datos,‌  ‌será‌  ‌preciso‌‌
 
modificar‌  ‌el‌  ‌formato‌  ‌de‌  ‌la‌  ‌información‌  ‌extraída‌  ‌de‌  ‌la‌  ‌base‌  ‌de‌  ‌datos‌  ‌almacenada,‌‌
 
para‌  ‌que‌  ‌coincida‌  ‌con‌  ‌la‌  ‌vista‌  ‌externa‌  ‌del‌  ‌usuario.‌  ‌El‌  ‌proceso‌  ‌de‌  ‌transformar‌‌
 
peticiones‌  ‌y ‌ ‌resultados‌  ‌de‌  ‌un‌  ‌nivel‌  ‌a ‌ ‌otro‌  ‌se‌  ‌denomina‌  ‌correspondencia‌  ‌o ‌‌
transformación.‌‌
 Estas‌‌
 correspondencias‌‌
 pueden‌‌
 requerir‌‌
 bastante‌‌
 tiempo,‌‌
 por‌‌
 lo‌‌
 que‌‌
 
algunos‌‌SGBD‌‌no‌‌cuentan‌‌con‌‌vistas‌‌externas.‌  ‌
 ‌
Independencia‌‌de‌‌los‌‌datos.‌  ‌
 ‌
La‌  ‌arquitectura‌  ‌de‌  ‌tres‌  ‌niveles‌  ‌es‌  ‌útil‌  ‌para‌  ‌explicar‌  ‌el‌  ‌concepto‌  ‌de‌‌
 
independencia‌  ‌de‌  ‌datos‌  ‌que‌  ‌podemos‌  ‌definir‌  ‌como‌  ‌la‌  ‌capacidad‌  ‌para‌  ‌modificar‌‌
  el‌‌
 
esquema‌  ‌en‌  ‌un‌  ‌nivel‌  ‌del‌  ‌sistema‌  ‌sin‌  ‌tener‌  ‌que‌  ‌modificar‌  ‌el‌  ‌esquema‌  ‌del‌  ‌nivel‌‌
 
inmediato‌‌superior.‌  ‌
Se‌‌pueden‌‌definir‌‌dos‌‌tipos‌‌de‌‌independencia‌‌de‌‌datos:‌  ‌

● La‌‌
  independencia‌‌
  lógica‌‌
  es‌‌
  la‌‌
 capacidad‌‌
 de‌‌
 modificar‌‌
 el‌‌
 esquema‌‌
 conceptual‌‌
 
sin‌  ‌tener‌  ‌que‌  ‌alterar‌  ‌los‌  ‌esquemas‌  ‌externos‌‌
  ni‌‌
  los‌‌
  programas‌‌
  de‌‌
  aplicación.‌‌
 
Se‌  ‌puede‌  ‌modificar‌  ‌el‌  ‌esquema‌  ‌conceptual‌  ‌para‌‌
  ampliar‌‌
  la‌‌
  base‌‌
  de‌‌
  datos‌‌
  o ‌‌
para‌  ‌reducirla.‌  ‌Si,‌  ‌por‌  ‌ejemplo,‌  ‌se‌  ‌reduce‌  ‌la‌  ‌base‌  ‌de‌  ‌datos‌  ‌eliminando‌  ‌una‌‌
 
entidad,‌  ‌los‌  ‌esquemas‌  ‌externos‌  ‌que‌  ‌no‌  ‌se‌  ‌refieran‌  ‌a ‌ ‌ella‌  ‌no‌‌
  deberán‌‌
  verse‌‌
 
afectados.‌  ‌
● La‌  ‌independencia‌‌
  física‌‌
  es‌‌
  la‌‌
  capacidad‌‌
  de‌‌
  modificar‌‌
  el‌‌
  esquema‌‌
  interno‌‌
  sin‌‌
 
tener‌‌
  que‌‌
  alterar‌‌
  el‌‌
  esquema‌‌
 conceptual‌‌
 (o‌‌
 los‌‌
 externos).‌‌
 Por‌‌
 ejemplo,‌‌
 puede‌‌
 
ser‌  ‌necesario‌  ‌reorganizar‌  ‌ciertos‌  ‌ficheros‌  ‌físicos‌  ‌con‌  ‌el‌  ‌fin‌  ‌de‌  ‌mejorar‌  ‌el‌‌
 
rendimiento‌  ‌de‌  ‌las‌  ‌operaciones‌  ‌de‌  ‌consulta‌  ‌o ‌ ‌de‌  ‌actualización‌  ‌de‌  ‌datos.‌‌
 
Dado‌  ‌que‌  ‌la‌  ‌independencia‌  ‌física‌  ‌se‌  ‌refiere‌  ‌sólo‌  ‌a ‌ ‌la‌  ‌separación‌  ‌entre‌  ‌las‌‌
 
aplicaciones‌  ‌y ‌ ‌las‌  ‌estructuras‌  ‌físicas‌  ‌de‌  ‌almacenamiento,‌  ‌es‌  ‌más‌  ‌fácil‌  ‌de‌‌
 
conseguir‌‌que‌‌la‌‌independencia‌‌lógica.‌  ‌

En‌  ‌los‌  ‌SGBD‌  ‌que‌  ‌tienen‌  ‌la‌  ‌arquitectura‌  ‌de‌  ‌varios‌  ‌niveles‌  ‌es‌  ‌necesario‌‌
 
ampliar‌  ‌el‌  ‌catálogo‌  ‌o ‌ ‌diccionario,‌  ‌de‌  ‌modo‌  ‌que‌  ‌incluya‌  ‌información‌  ‌sobre‌  ‌cómo‌‌
 
establecer‌‌
  la‌‌
  correspondencia‌‌
  entre‌‌
  las‌‌
  peticiones‌‌
  de‌‌
  los‌‌
 usuarios‌‌
 y ‌‌los‌‌
 datos,‌‌
 entre‌‌
 
los‌  ‌diversos‌  ‌niveles.‌  ‌El‌  ‌SGBD‌  ‌utiliza‌  ‌una‌  ‌serie‌‌
  de‌‌
  procedimientos‌‌
  adicionales‌‌
  para‌‌
 
realizar‌  ‌estas‌  ‌correspondencias‌  ‌haciendo‌  ‌referencia‌  ‌a ‌ ‌la‌  ‌información‌  ‌de‌‌
 
correspondencia‌‌que‌‌se‌‌encuentra‌‌en‌‌el‌‌catálogo.‌  ‌
La‌‌
  independencia‌‌
  de‌‌
  datos‌‌
  se‌‌
 consigue‌‌
 porque‌‌
 al‌‌
 modificarse‌‌
 el‌‌
 esquema‌‌
 en‌‌
 
algún‌‌
  nivel,‌‌
 el‌‌
 esquema‌‌
 del‌‌
 nivel‌‌
 inmediato‌‌
 superior‌‌
 permanece‌‌
 sin‌‌
 cambios,‌‌
 sólo‌‌
 se‌‌
 
modifica‌  ‌la‌  ‌correspondencia‌  ‌entre‌  ‌los‌  ‌dos‌  ‌niveles.‌  ‌No‌  ‌es‌  ‌preciso‌  ‌modificar‌  ‌los‌‌
 
programas‌‌de‌‌aplicación‌‌que‌‌hacen‌‌referencia‌‌al‌‌esquema‌‌del‌‌nivel‌‌superior.‌  ‌
Por‌  ‌lo‌  ‌tanto,‌  ‌la‌  ‌arquitectura‌  ‌de‌  ‌tres‌‌
  niveles‌‌
  puede‌‌
  facilitar‌‌
  la‌‌
  obtención‌‌
  de‌‌
  la‌‌
 
verdadera‌  ‌independencia‌  ‌de‌  ‌datos,‌  ‌tanto‌  ‌física‌  ‌como‌  ‌lógica.‌  ‌Sin‌‌
  embargo,‌‌
  los‌‌
  dos‌‌
 
niveles‌  ‌de‌  ‌correspondencia‌  ‌implican‌  ‌un‌  ‌gasto‌  ‌extra‌  ‌durante‌  ‌la‌  ‌ejecución‌  ‌de‌  ‌una‌‌
 
consulta‌  ‌o ‌ ‌de‌  ‌un‌‌
  programa,‌‌
  lo‌‌
  cual‌‌
  reduce‌‌
  la‌‌
  eficiencia‌‌
  del‌‌
  SGBD.‌‌
  Es‌‌
  por‌‌
  esto‌‌
  que‌‌
 
muy‌‌pocos‌‌SGBD‌‌han‌‌implementado‌‌esta‌‌arquitectura‌‌completa.‌  ‌
Debido‌‌
  a ‌‌la‌‌
  independencia‌‌
  de‌‌
 niveles,‌‌
 las‌‌
 Base‌‌
 de‌‌
 Datos.‌‌
 son‌‌
 flexibles‌‌
 y ‌‌adaptables‌‌
 
a‌‌los‌‌cambios.‌  ‌
 ‌
 ‌
 ‌
 ‌
 ‌
Lenguajes‌‌e‌‌Interfaces‌‌del‌‌SMBD‌  ‌
 ‌

Un‌‌
  sistema‌‌
  manejador‌‌
  de‌‌
  bases‌‌
  de‌‌
  datos‌‌
  (SGBD,‌‌
  por‌‌
  sus‌‌
 siglas‌‌
 en‌‌
 inglés)‌‌
 o ‌‌
DataBase‌  ‌Management‌  ‌System‌  ‌(DBMS)‌  ‌es‌  ‌una‌  ‌colección‌  ‌de‌  ‌software‌  ‌muy‌‌
 
específico‌, ‌‌orientado‌‌
  al‌‌
  manejo‌‌
  de‌‌
  base‌‌
  de‌‌
  datos‌, ‌‌cuya‌‌
  función‌‌
  es‌‌
 servir‌‌
 de‌‌
 interfaz‌‌
 
entre‌‌la‌‌base‌‌de‌‌datos,‌‌el‌‌usuario‌‌y‌‌las‌‌distintas‌‌aplicaciones‌‌utilizadas.‌  ‌

Su‌‌
  uso‌‌
  permite‌‌
  realizar‌‌
  un‌‌
  mejor‌‌
  control‌‌
  a ‌‌los‌‌
 administradores‌‌
 de‌‌
 sistemas‌‌
 y,‌‌
 
por‌  ‌otro‌  ‌lado,‌  ‌también‌  ‌obtener‌  ‌mejores‌  ‌resultados‌  ‌a ‌ ‌la‌  ‌hora‌  ‌de‌  ‌realizar‌  ‌consultas‌‌
 
que‌  ‌ayuden‌  ‌a ‌ ‌la‌  ‌gestión‌  ‌empresarial‌  ‌mediante‌  ‌la‌  ‌generación‌  ‌de‌  ‌la‌  ‌tan‌‌
  perseguida‌‌
 
ventaja‌‌competitiva.‌  ‌

Un‌  ‌sistema‌  ‌SGBD‌  ‌es‌  ‌sinónimo‌‌


  de‌‌
  independencia,‌‌
  una‌‌
  redundancia‌‌
  mínima,‌‌
 
consistencia‌  ‌de‌  ‌la‌  ‌información‌  ‌(control‌  ‌de‌  ‌la‌  ‌concurrencia),‌  ‌abstración‌  ‌de‌  ‌la‌‌
 
información‌  ‌sobre‌  ‌su‌  ‌almacenamiento‌  ‌físico,‌  ‌así‌  ‌como‌  ‌un‌  ‌acceso‌  ‌seguro‌  ‌y ‌ ‌la‌‌
 
adopción‌‌de‌‌las‌‌medidas‌‌necesarias‌‌para‌‌garantizar‌‌la‌‌integridad‌‌de‌‌los‌‌datos‌. ‌ ‌

Estas‌  ‌particularidades‌  ‌son‌  ‌algunos‌  ‌de‌  ‌los‌  ‌rasgos‌  ‌definitorios‌  ‌de‌  ‌un‌  ‌SGBD,‌‌
 
cuyosprocesos‌  ‌esenciales‌  ‌son‌  ‌la‌  ‌manipulación‌  ‌y ‌ ‌construcción‌  ‌de‌  ‌las‌  ‌bases‌  ‌de‌‌
 
datos,‌  ‌así‌  ‌como‌  ‌la‌  ‌definición‌  ‌de‌  ‌los‌  ‌mismos.‌  ‌Son‌  ‌características‌  ‌que,‌  ‌a ‌ ‌su‌  ‌vez,‌‌
 
facilitan‌  ‌el‌  ‌cumplimiento‌  ‌de‌  ‌una‌‌
  serie‌‌
  de‌‌
  funcionesrelacionadas‌‌
  con‌‌
  muchos‌‌
  de‌‌
  los‌‌
 
aspectos‌‌
 apuntados,‌‌
 entre‌‌
 otros‌‌
 la‌‌
 definición‌‌
 de‌‌
 los‌‌
 datos,‌‌
 su‌‌
 fácil‌‌
 manipulación,‌‌
 una‌‌
 
rápida‌‌
  gestión,‌‌
  poder‌‌
  representar‌‌
  relaciones‌‌
  complejas‌‌
 entre‌‌
 datos‌‌
 y ‌‌otros‌‌
 aspectos‌‌
 
relacionados‌‌con‌‌la‌‌seguridad‌‌y‌‌validez‌‌de‌‌los‌‌datos.‌  ‌

Frente‌  ‌a ‌ ‌su‌  ‌gran‌  ‌funcionalidad,‌  ‌algunas‌‌


  de‌‌
  sus‌‌
  principales‌‌
  desventajas‌‌
  son,‌‌
 
por‌  ‌otra‌  ‌parte:‌  ‌la‌  ‌inversión‌  ‌necesaria‌  ‌para‌  ‌implementar‌  ‌un‌  ‌DBMS‌  ‌en‌  ‌hardware,‌  ‌el‌‌
 
software‌‌
  y‌‌
  concimientos‌‌
  que‌‌
  se‌‌
  requieren‌‌
  para‌‌
  ello,‌‌
  la‌‌
 vulnerabilidad‌‌
 a ‌‌los‌‌
 fallos‌‌
 por‌‌
 
su‌  ‌misma‌  ‌centralización‌  ‌y ‌ ‌sus‌  ‌deficiencias‌  ‌con‌‌
  algunos‌‌
  tipos‌‌
  de‌‌
  datos‌‌
  (como‌‌
  es‌‌
  el‌‌
 
caso‌‌de‌‌los‌‌datos‌‌gráficos‌‌o‌‌multimedia,‌‌entre‌‌otros.).‌  ‌

 ‌
Los‌  ‌lenguajes‌  ‌más‌  ‌utilizados‌  ‌en‌  ‌un‌  ‌Manejador‌  ‌de‌  ‌Base‌  ‌de‌  ‌Datos‌‌
 
(DBMS)‌  ‌

En‌  ‌lo‌  ‌que‌  ‌respecta‌‌


  a ‌‌los‌‌
  lenguajes‌‌
  utilizados‌‌
  en‌‌
  un‌‌
  DBMS,‌‌
  cabe‌‌
  destacar‌‌
  el‌‌
 
Lenguaje‌  ‌de‌  ‌Manipulación‌  ‌de‌  ‌datos‌  ‌o ‌ ‌Data‌  ‌Manipulation‌  ‌Language‌  ‌(DML)‌  ‌para‌  ‌la‌‌
 
realización‌  ‌de‌  ‌consultas‌  ‌y ‌ ‌manipulación‌‌
  de‌‌
  datos.‌‌
  Especialmente,‌‌
  se‌‌
  ‌utiliza‌‌
  el‌‌
  SQL‌‌
 
(Structured‌  ‌Query‌  ‌Language),‌  ‌el‌  ‌DML‌  ‌más‌  ‌utilizado‌  ‌para‌  ‌gestionar‌  ‌datos‌‌
 
relacionales,‌  ‌así‌  ‌como‌  ‌el‌  ‌Data‌  ‌Definition‌  ‌Language‌  ‌(DDL),‌  ‌utilizado‌  ‌para‌  ‌definir‌‌
 
estructuras‌‌y‌‌funciones‌‌en‌‌la‌‌realización‌‌de‌‌consultas.‌‌
   ‌

El‌‌
  Data‌‌
  Control‌‌
  Language‌‌
  (DCL),‌‌
  por‌‌
 último,‌‌
 también‌‌
 es‌‌
 un‌‌
 lenguaje‌‌
 utilizado‌‌
 
en‌‌
  un‌‌
  DBMS‌‌
  por‌‌
  el‌  ‌administrador,‌‌
  en‌‌
  esta‌‌
  ocasión‌‌
  con‌‌
 el‌‌
 fin‌‌
 de‌‌
 controlar‌‌
 el‌‌
 acceso‌‌
 
a‌‌los‌‌datos‌‌de‌‌la‌‌base‌‌de‌‌datos.‌  ‌

Cursor:‌  ‌Modificacion‌‌
  por‌‌
  cursor.‌‌
  Proteccion‌‌
  contra‌‌
  modificaciones‌‌
 
concurrentes.‌  ‌

 ‌ Un‌  ‌cursor‌  ‌permite‌  ‌acceder‌  ‌un‌  ‌resultado‌  ‌(result‌  ‌set),‌  ‌una‌  ‌fila‌  ‌(registro)‌  ‌a ‌ ‌la‌‌
 
vez.‌‌
  Debido‌‌
  a ‌‌su‌‌
  orientación‌‌
  en‌‌
 filas,‌‌
 los‌‌
 cursores‌‌
 a ‌‌menudo‌‌
 son‌‌
 utilizados‌‌
 en‌‌
 ciclos‌‌
 
(loops)‌‌que‌‌localizan‌‌y‌‌procesan‌‌una‌‌fila‌‌dentro‌‌de‌‌cada‌‌iteración‌‌del‌‌ciclo.‌‌
   ‌

 ‌ La‌‌implementación‌‌del‌‌cursor‌‌en‌‌MySQL‌‌tiene‌‌las‌‌siguientes‌‌propiedades:‌  ‌

Este‌  ‌es‌  ‌proporcionado‌  ‌para‌  ‌cursores‌  ‌de‌  ‌solo‌  ‌lectura‌  ‌(read-only);‌  ‌no‌  ‌pueden‌  ‌ser‌‌
 
utilizados‌‌para‌‌modificar‌‌tablas.‌‌
   ‌

Los‌‌
  cursores‌‌
  solo‌‌
  avanzan‌‌
  a ‌‌través‌‌
  de‌‌
  un‌‌
  resultado‌‌
 fila‌‌
 por‌‌
 fila;‌‌
 no‌‌
 permiten‌‌
 ir‌‌
 hacia‌‌
 
atrás‌‌y‌‌luego‌‌hacia‌‌delatante‌‌libremente.‌‌
   ‌

Para‌  ‌nosotros‌  ‌poder‌  ‌hacer‌  ‌uso‌  ‌de‌  ‌un‌  ‌cursor‌  ‌sera‌  ‌necesario‌  ‌seguir‌  ‌los‌‌
  siguientes‌‌
 
pasos‌  ‌

● Crear‌‌un‌‌cursor‌‌a‌‌partir‌‌de‌‌una‌‌sentencia‌‌SQL‌  ‌
● Apertura‌‌del‌‌cursor‌  ‌
● Acceso‌‌a‌‌Datos‌  ‌
● Cierre‌‌del‌‌cursor.‌  ‌
Para‌‌
  usar‌‌
  un‌‌
  cursor‌‌
  en‌‌
  una‌‌
  rutina‌‌
  almacenada,‌‌
  se‌‌
  debe‌‌
  escribir‌‌
  la‌‌
 sentencia‌‌
 
DECLARE‌  ‌CURSOR‌  ‌que‌  ‌nombra‌‌
  el‌‌
  cursor‌‌
  y ‌‌asociarlo‌‌
  con‌‌
  una‌‌
  sentencia‌‌
  SELECT‌‌
 
que‌  ‌produce‌  ‌un‌  ‌resultado‌  ‌(result‌  ‌set):‌  ‌DECLARE‌  ‌cursor_name‌  ‌CURSOR‌  ‌FOR‌‌
 
select_statement‌‌
  Cada‌‌
  cursor‌‌
  declarado‌‌
  dentro‌‌
  de‌‌
 un‌‌
 bloque‌‌
 debe‌‌
 tener‌‌
 un‌‌
 nombre‌‌
 
diferente.‌  ‌Para‌  ‌abrir‌  ‌el‌  ‌cursor,‌  ‌coloque‌  ‌su‌  ‌nombre‌  ‌en‌  ‌una‌  ‌sentencia‌  ‌OPEN.‌  ‌Esto‌‌
 
ejecuta‌  ‌la‌  ‌sentencia‌  ‌SELECT‌  ‌asociada‌  ‌con‌  ‌el‌  ‌cursor:‌  ‌OPEN‌  ‌cursor_name‌  ‌La‌‌
 
sentencia‌  ‌FETCH‌  ‌localiza‌  ‌la‌  ‌próxima‌  ‌fila‌  ‌o ‌ ‌registro‌  ‌de‌  ‌un‌  ‌resultado‌  ‌de‌  ‌un‌  ‌cursor‌‌
 
abierto.‌  ‌La‌  ‌sentencia‌  ‌nombra‌  ‌el‌  ‌cursor‌  ‌y ‌ ‌proporciona‌  ‌una‌  ‌lista‌  ‌de‌‌
  variables‌‌
  dentro‌‌
 
del‌  ‌cual‌  ‌localizará‌  ‌los‌  ‌valores‌  ‌de‌  ‌las‌  ‌columnas‌  ‌de‌  ‌la‌  ‌fila.‌  ‌Aquí‌  ‌debe‌  ‌estar‌  ‌una‌‌
 
variable‌‌por‌‌columna‌‌en‌‌el‌‌resultado‌‌(result‌‌set).‌  ‌

Es‌  ‌importante‌  ‌mencionar‌  ‌que‌  ‌en‌  ‌MySQL‌  ‌los‌  ‌cursores‌  ‌solo‌  ‌podran‌  ‌ser‌‌
 
utilizados‌‌dentro‌‌de‌‌stored‌‌procedures.‌  ‌

Ejemplo‌  ‌

 ‌
DROP‌‌PROCEDURE‌‌IF‌‌EXISTS‌‌cargar_imagen;‌  ‌
DELIMITER‌‌$$‌  ‌
CREATE‌‌PROCEDURE‌‌cargar_imagen‌‌( ‌ ‌
)‌‌BEGIN‌  ‌
--‌‌Variables‌‌donde‌‌almacenar‌‌el‌‌id‌‌que‌‌de‌‌la‌‌SELECT‌  ‌
‌DECLARE‌‌i_idimagen‌‌BIGINT;‌  ‌
‌DECLARE‌‌v_imagen‌‌VARCHAR(250);‌  ‌
--‌‌Variable‌‌para‌‌controlar‌‌el‌‌fin‌‌del‌‌bucle‌  ‌
‌DECLARE‌‌findelbucle‌‌INTEGER‌‌DEFAULT‌‌0;‌  ‌
  ‌ ‌
--‌‌La‌‌SELECT‌‌que‌‌queremos‌  ‌
‌DECLARE‌‌cursor_elidimagen‌‌CURSOR‌‌FOR‌‌
   ‌
‌SELECT‌‌imagen,id_producto‌‌FROM‌‌imagenes‌‌;‌  ‌
  ‌ ‌
--‌C
‌ uando‌‌no‌‌existan‌‌mas‌‌datos‌‌findelbucle‌‌se‌‌pondra‌‌a‌‌1‌  ‌
‌DECLARE‌‌CONTINUE‌‌HANDLER‌‌FOR‌‌NOT‌‌FOUND‌‌SET‌‌findelbucle=1;‌  ‌
--‌ ‌DECLARE‌‌CONTINUE‌‌HANDLER‌‌FOR‌‌NOT‌‌FOUND‌‌SET‌‌@hecho‌‌=‌‌TRUE;‌  ‌
  ‌ ‌
‌OPEN‌‌cursor_elidimagen;‌  ‌
‌bucle:‌‌LOOP‌  ‌
‌FETCH‌‌cursor_elidimagen‌‌INTO‌‌v_imagen,i_idimagen;‌  ‌
‌IF‌‌findelbucle‌‌=‌‌1‌‌THEN‌  ‌
‌LEAVE‌‌bucle;‌  ‌
‌END‌‌IF;‌  ‌
  ‌ ‌
‌UPDATE‌‌oc_product‌‌SET‌‌image=‌‌v_imagen‌‌WHERE‌‌model=i_idimagen;‌  ‌
  ‌ ‌
‌END‌‌LOOP‌‌bucle;‌  ‌
  ‌ ‌
‌CLOSE‌‌cursor_elidimagen;‌  ‌
END$$‌  ‌
DELIMITER‌‌;‌  ‌

Qué‌‌son‌‌los‌‌procedimientos‌‌almacenados‌‌MySQL‌  ‌
Los‌  ‌procedimientos‌  ‌almacenados‌  ‌MySQL,‌  ‌también‌  ‌conocidos‌  ‌como‌  ‌Stored‌‌
 
Procedure‌, ‌ ‌se‌  ‌presentan‌  ‌como‌  ‌conjuntos‌  ‌de‌  ‌instrucciones‌  ‌escritas‌  ‌en‌  ‌el‌  ‌lenguaje‌‌
 
SQL.‌  ‌Su‌  ‌objetivo‌  ‌es‌  ‌realizar‌  ‌una‌  ‌tarea‌  ‌determinada,‌  ‌desde‌  ‌operaciones‌  ‌sencillas‌‌
 
hasta‌  ‌tareas‌  ‌muy‌  ‌complejas.‌  ‌Los‌  ‌procedimientos‌  ‌almacenados‌  ‌MySQL‌  ‌contienen‌‌
 
una‌‌o‌‌más‌‌instrucciones‌‌SQL‌‌además‌‌de‌‌un‌‌procesamiento‌‌manipulador‌‌o‌‌lógico.‌  ‌
 ‌
La‌  ‌característica‌  ‌fundamental‌  ‌de‌  ‌los‌  ‌procedimientos‌  ‌almacenados‌  ‌MySQL‌  ‌es‌  ‌que‌‌
 
estos‌‌
  comandos‌‌
  se‌‌
  quedan‌‌
  almacenados‌‌
  y ‌‌se‌‌
  ejecutan‌‌
  en‌‌
  el‌‌
 servidor‌‌
 o ‌‌en‌‌
 el‌‌
 motor‌‌
 
de‌  ‌bases‌  ‌de‌‌
  datos.‌‌
  Este‌‌
  aspecto‌‌
  permite‌‌
  que‌‌
  las‌‌
  aplicaciones‌‌
  clientes‌‌
  las‌‌
  ejecuten‌‌
 
directamente‌‌mediante‌‌llamada‌‌a‌‌una‌‌API.‌  ‌
 ‌
Los‌  ‌procedimientos‌  ‌almacenados‌  ‌MySQL‌  ‌se‌  ‌han‌  ‌diseñado‌  ‌para‌  ‌aligerar‌  ‌a ‌ ‌las‌‌
 
aplicaciones‌‌
  clientes,‌‌
  pudiendo‌‌
  ejecutar‌‌
  directamente‌‌
  en‌‌
  el‌‌
  servidor‌‌
  aquellas‌‌
 tareas‌‌
 
pesadas‌‌y‌‌que‌‌necesitan‌‌muchos‌‌recursos.‌  ‌
Estas‌  ‌son‌  ‌las‌  ‌características‌  ‌principales‌  ‌de‌  ‌los‌  ‌procedimientos‌  ‌almacenados‌‌
 
MySQL:‌  ‌

● Pueden‌‌recibir‌‌y‌‌devolver‌‌parámetros.‌  ‌
● Pueden‌  ‌manejar‌  ‌tablas,‌  ‌ejecutando‌  ‌operaciones‌  ‌e ‌ ‌iteraciones‌‌
 
de‌‌lectura/escritura.‌  ‌
● Pueden‌‌devolver‌‌una‌‌tabla‌‌como‌‌resultado.‌  ‌
● Se‌‌almacenan‌‌en‌‌la‌‌base‌‌de‌‌datos‌‌en‌‌la‌‌cual‌‌se‌‌crean.‌  ‌
● No‌‌dependen‌‌de‌‌ninguna‌‌tabla‌‌en‌‌particular.‌  ‌
● Pueden‌‌aceptar‌‌recursividad.‌  ‌

Crear‌‌procedimientos‌‌almacenados‌‌MySQL‌  ‌
Los‌  ‌procedimientos‌  ‌almacenados‌  ‌se‌  ‌implementan‌  ‌desde‌  ‌la‌  ‌versión‌  ‌5.0‌  ‌de‌‌
 
MySQL‌  ‌y ‌ ‌se‌  ‌pueden‌‌
  crear‌‌
  en‌‌
  casi‌‌
  todas‌‌
  las‌‌
  bases‌‌
  de‌‌
  datos,‌‌
  como‌‌
  Oracle,‌‌
  MySQL‌‌
 
Server‌‌
 y ‌‌Postgresql.‌‌
 Para‌‌
 crear‌‌
 y ‌‌gestionar‌‌
 los‌‌
 procedimientos‌‌
 almacenados‌‌
 MySQL‌‌
 
existe‌‌una‌‌serie‌‌de‌‌comandos‌‌dedicados:‌ 

● CREATE‌  ‌PROCEDURE:‌  ‌nos‌  ‌permite‌  ‌crear‌  ‌procedimientos‌‌


 
almacenados‌‌MySQL‌‌para‌‌su‌‌posterior‌‌ejecución.‌  ‌
● ALTER‌  ‌PROCEDURE:‌  ‌con‌  ‌esta‌  ‌sentencia‌  ‌podemos‌  ‌modificar‌‌
 
los‌‌procedimientos‌‌almacenados‌‌MySQL.‌  ‌
● DROP‌  ‌PROCEDURE:‌  ‌nos‌  ‌permite‌  ‌eliminar‌  ‌los‌  ‌procedimientos‌‌
 
almacenados‌‌MySQL.‌ 
● DELIMETER:‌  ‌permite‌  ‌crear‌  ‌un‌  ‌delimitador‌  ‌para‌  ‌las‌  ‌consultas‌‌
 
SQL.‌  ‌

BENEFICIOS‌‌DE‌‌LOS‌‌PROCEDIMIENTOS‌‌ALMACENADOS‌  ‌

Los‌  ‌procedimientos‌  ‌almacenados‌  ‌y ‌‌funciones‌‌


  ofrecen‌‌
  varios‌‌
  beneficios‌‌
  para‌‌
 
el‌‌desarrollo‌‌de‌‌aplicaciones,‌‌distribución‌‌y‌‌operación:‌‌
   ‌

•‌‌
 Sintaxis‌‌
 SQL‌‌
 más‌‌
 flexible.‌‌
 Las‌‌
 rutinas‌‌
 almacenadas‌‌
 (procedimientos‌‌
 almacenados)‌‌
 
pueden‌  ‌ser‌  ‌escritas‌  ‌utilizando‌  ‌extensiones‌  ‌para‌  ‌la‌  ‌sintaxis‌  ‌SQL,‌  ‌tales‌  ‌como‌‌
 
composición‌  ‌de‌  ‌sentencias‌  ‌y ‌ ‌construcciones‌  ‌para‌  ‌el‌‌
  control‌‌
  de‌‌
  flujo,‌‌
  esto‌‌
  facilita‌‌
  la‌‌
 
expresión‌‌de‌‌lógicas‌‌complejas.‌  ‌

  ‌• ‌ ‌Capacidades‌  ‌para‌  ‌el‌  ‌manejo‌  ‌de‌  ‌errores.‌  ‌Una‌  ‌rutina‌  ‌almacenada‌  ‌puede‌  ‌crear‌‌
 
manejadores‌  ‌de‌  ‌errores‌  ‌que‌  ‌son‌  ‌utilizados‌  ‌cuando‌  ‌surgen‌  ‌condiciones‌‌
 
excepcionales.‌  ‌La‌  ‌ocurrencia‌  ‌de‌‌
  un‌‌
  error‌‌
  no‌‌
  necesitará‌‌
  causar‌‌
  la‌‌
  terminación‌‌
  de‌‌
  la‌‌
 
rutina‌‌sino‌‌que‌‌puede‌‌ser‌‌manejada‌‌apropiadamente.‌‌
   ‌
•‌  ‌Fácil‌  ‌de‌  ‌mantener.‌  ‌Una‌  ‌única‌  ‌copia‌  ‌de‌  ‌una‌  ‌rutina‌  ‌es‌  ‌más‌  ‌fácil‌  ‌de‌‌
  mantener‌‌
  que‌‌
 
una‌  ‌copia‌  ‌insertada‌  ‌dentro‌  ‌de‌‌
  cada‌‌
  aplicación.‌‌
  La‌‌
  actualización‌‌
  de‌‌
  aplicaciones‌‌
  es‌‌
 
más‌  ‌fácil‌  ‌si‌  ‌todos‌  ‌utilizan‌  ‌una‌  ‌rutina‌  ‌en‌  ‌común,‌  ‌debido‌  ‌a ‌ ‌que‌  ‌si‌  ‌es‌  ‌necesario‌‌
 
actualizar‌‌una‌‌sola‌‌rutina,‌‌no‌‌todas‌‌las‌‌aplicaciones‌‌que‌‌la‌‌usan.‌  ‌

•‌‌
  Los‌‌
  clientes‌‌
  se‌‌
  benefician‌‌
  de‌‌
  las‌‌
  actualizaciones‌‌
  del‌‌
  servidor.‌‌
  La‌‌
  actualización‌‌
 del‌‌
 
servidor‌  ‌(upgrades)‌  ‌mejoran‌  ‌el‌  ‌desempeño‌  ‌de‌  ‌las‌  ‌rutinas‌  ‌almacenadas‌  ‌que‌  ‌se‌‌
 
ejecutan‌  ‌en‌  ‌el‌  ‌host.‌  ‌Esto‌  ‌mejora‌  ‌el‌  ‌desempeño‌  ‌para‌  ‌las‌  ‌aplicaciones‌  ‌clientes‌  ‌que‌‌
 
usan‌‌las‌‌rutinas‌‌aun‌‌cuando‌‌las‌‌máquinas‌‌clientes‌‌no‌‌sean‌‌actualizadas.‌  ‌

  ‌• ‌‌Mejor‌‌
  seguridad.‌‌
  Una‌‌
  rutina‌‌
 puede‌‌
 ser‌‌
 escrita‌‌
 para‌‌
 acceder‌‌
 datos‌‌
 sensibles‌‌
 sobre‌‌
 
el‌  ‌definidor‌  ‌de‌  ‌la‌  ‌rutina‌  ‌para‌  ‌el‌‌
  invocador‌‌
  de‌‌
  la‌‌
  rutina,‌‌
  pero‌‌
  no‌‌
  retorna‌‌
  nada‌‌
  que‌‌
  el‌‌
 
invocador‌  ‌no‌  ‌debería‌  ‌ver.‌  ‌Una‌  ‌rutina‌  ‌también‌  ‌puede‌  ‌ser‌  ‌utilizada‌  ‌para‌  ‌modificar‌‌
 
tablas‌  ‌de‌  ‌manera‌  ‌segura,‌  ‌sin‌‌
  darle‌‌
  a ‌‌los‌‌
  usuarios‌‌
  acceso‌‌
  directo‌‌
  a ‌‌las‌‌
  tablas.‌‌
  Esto‌‌
 
previene‌‌la‌‌realización‌‌de‌‌cambios‌‌posiblemente‌‌no‌‌seguros‌‌sobre‌‌ellos.‌‌
  

DIFERENCIAS‌‌ENTRE‌‌FUNCIONES‌‌Y‌‌PROCEDIMIENTOS‌‌
   ‌

La‌  ‌diferencia‌  ‌más‌  ‌general‌  ‌entre‌  ‌procedimientos‌  ‌y ‌ ‌funciones‌  ‌es‌‌


  que‌‌
  son‌‌
  invocados‌‌
 
de‌‌forma‌‌diferente‌‌y‌‌son‌‌utilizadas‌‌para‌‌diferentes‌‌propósitos:‌  ‌

•‌  ‌Un‌  ‌procedimiento‌  ‌no‌  ‌retorna‌  ‌un‌  ‌valor.‌  ‌En‌  ‌su‌  ‌lugar‌  ‌este‌  ‌es‌  ‌invocado‌  ‌con‌  ‌una‌‌
 
sentencia‌‌
  CALL‌‌
  para‌‌
  realizar‌‌
  una‌‌
 operación‌‌
 tales‌‌
 como‌‌
 la‌‌
 modificación‌‌
 de‌‌
 una‌‌
 tabla‌‌
 
o‌‌el‌‌procesamiento‌‌de‌‌registros‌‌recuperados.‌  ‌

•‌  ‌Una‌  ‌función‌  ‌es‌  ‌invocada‌  ‌dentro‌  ‌de‌  ‌una‌  ‌expresión‌  ‌y ‌ ‌retorna‌  ‌un‌  ‌solo‌  ‌valor‌‌
 
directamente‌‌
  al‌‌
  llamador‌‌
  para‌‌
  ser‌‌
  utilizado‌‌
  en‌‌
  la‌‌
  expresión.‌‌
 Es‌‌
 decir,‌‌
 una‌‌
 función‌‌
 es‌‌
 
utilizada‌  ‌en‌  ‌expresiones‌  ‌de‌  ‌la‌  ‌misma‌  ‌forma‌  ‌como‌  ‌una‌  ‌constante,‌  ‌una‌  ‌función‌‌
 
preconstruida,‌‌o‌‌una‌‌referencia‌‌a‌‌la‌‌columna‌‌de‌‌una‌‌tabla.‌  ‌

  ‌• ‌‌No‌‌
  se‌‌
  puede‌‌
 invocar‌‌
 una‌‌
 función‌‌
 con‌‌
 una‌‌
 sentencia‌‌
 CALL,‌‌
 ni‌‌
 se‌‌
 puede‌‌
 invocar‌‌
 un‌‌
 
procedimiento‌‌
  almacenado‌‌
  en‌‌
  una‌‌
  expresión.‌‌
 La‌‌
 sintaxis‌‌
 para‌‌
 la‌‌
 creación‌‌
 de‌‌
 rutinas‌‌
 
difiere‌‌algo‌‌para‌‌los‌‌procedimientos‌‌y‌‌funciones:‌‌
   ‌

•‌‌
  Los‌‌
  parámetros‌‌
  de‌‌
 procedimiento‌‌
 pueden‌‌
 ser‌‌
 definidos‌‌
 como‌‌
 de‌‌
 solo‌‌
 entrada,‌‌
 solo‌‌
 
salida,‌  ‌o ‌ ‌para‌  ‌ambos‌  ‌entrada‌  ‌y ‌ ‌salida.‌  ‌Esto‌  ‌significa‌  ‌que‌  ‌un‌  ‌procedimiento‌  ‌puede‌‌
 
pasar‌  ‌valores‌  ‌de‌  ‌regreso‌  ‌al‌  ‌llamador‌  ‌por‌  ‌la‌  ‌utilización‌  ‌de‌  ‌parámetros‌  ‌de‌  ‌salida.‌‌
 
Estos‌  ‌valores‌  ‌pueden‌  ‌ser‌  ‌accedidos‌  ‌en‌  ‌sentencias‌  ‌que‌  ‌sigan‌  ‌la‌  ‌sentencia‌  ‌CALL.‌‌
 
Las‌  ‌funciones‌  ‌solo‌  ‌tienen‌  ‌parámetros‌  ‌de‌  ‌entrada.‌  ‌Como‌  ‌resultado,‌‌
  aunque‌‌
  ambos‌‌
 
los‌  ‌procedimientos‌‌
  y ‌‌funciones‌‌
  pueden‌‌
  tener‌‌
  parámetros,‌‌
  la‌‌
  sintaxis‌‌
  de‌‌
  declaración‌‌
 
de‌‌parámetros‌‌de‌‌procedimiento‌‌difieren‌‌para‌‌las‌‌funciones.‌‌
   ‌

 ‌

EJEMPLO:‌  ‌

 ‌

 ‌

 ‌

 ‌

 ‌

  ‌ ‌

 ‌

 ‌
El‌  ‌ambiente‌  ‌SQL:‌  ‌Ambientes.‌  ‌Esquemas.‌  ‌Catálogos.‌  ‌Clientes‌  ‌y ‌‌
servidores‌‌en‌‌el‌‌ambiente‌‌SQL‌  ‌

 ‌
El‌‌
  esquema‌‌
  de‌‌
  la‌‌
  base‌‌
  de‌‌
 datos.‌‌
 Una‌‌
 vez‌‌
 construido‌‌
 el‌‌
 esquema‌‌
 conceptual,‌‌
 
el‌‌
  diseño‌‌
  de‌‌
  bases‌‌
  de‌‌
  datos‌‌
  obliga‌‌
  a ‌‌realizar‌‌
 varias‌‌
 tareas‌‌
 previas‌‌
 a ‌‌la‌‌
 construcción‌‌
 
del‌  ‌esquema‌  ‌lógico‌  ‌global‌  ‌del‌  ‌sistema,‌  ‌también‌  ‌llamado‌  ‌esquema‌  ‌de‌  ‌bases‌  ‌de‌‌
 
datos.‌‌
  Por‌‌
  el‌‌
  momento,‌‌
  basta‌‌
 saber‌‌
 que‌‌
 el‌‌
 esquema‌‌
 de‌‌
 la‌‌
 base‌‌
 de‌‌
 datos‌‌
 representa‌‌
 
la‌  ‌descripción‌  ‌de‌  ‌los‌  ‌datos‌  ‌de‌  ‌la‌  ‌base‌  ‌de‌  ‌datos,‌  ‌mientras‌  ‌que‌  ‌el‌  ‌esquema‌‌
 
conceptual‌  ‌representaba‌  ‌a ‌ ‌la‌  ‌realidad.‌  ‌La‌  ‌primera‌  ‌de‌  ‌las‌  ‌tareas‌  ‌necesarias‌  ‌es‌  ‌la‌‌
 
identificación‌  ‌de‌  ‌los‌  ‌datos‌  ‌requeridos,‌  ‌para‌  ‌obtener‌  ‌como‌  ‌resultado‌  ‌las‌  ‌partes‌  ‌del‌‌
 
área‌‌
  de‌‌
  aplicación‌‌
  que‌‌
  deben‌‌
  representarse‌‌
  mediante‌‌
  datos,‌‌
  y ‌‌en‌‌
  qué‌‌
 forma‌‌
 deben‌ 
presentarse‌‌éstos‌‌a‌‌los‌‌usuarios.‌  ‌

 ‌

SQL‌  ‌Server‌  ‌utiliza‌  ‌la‌  ‌arquitectura‌  ‌Cliente‌  ‌/ ‌ ‌servidor‌  ‌para‌  ‌coodinar‌  ‌el‌‌
  trabajo‌‌
 
entre‌  ‌el‌  ‌equipo‌  ‌cliente‌‌
  y ‌‌el‌‌
  equipo‌‌
  servidor,‌‌
  dependiendo‌‌
  del‌‌
  tipo‌‌
  de‌‌
  aplicacion‌‌
  que‌‌
 
se‌  ‌quiera‌  ‌programar‌  ‌la‌  ‌reparticion‌  ‌de‌  ‌la‌  ‌carga‌  ‌de‌  ‌trabajo‌  ‌entre‌  ‌el‌  ‌cliente‌  ‌y ‌ ‌el‌‌
 
servidor.‌  ‌

● Equipo‌  ‌cliente‌  ‌: ‌ ‌Se‌  ‌suele‌  ‌encargar‌  ‌de‌  ‌la‌  ‌parte‌  ‌logica‌  ‌y ‌ ‌de‌  ‌mostrar‌  ‌la‌‌
 
informacion‌‌al‌‌usuario‌‌que‌‌realiza‌‌una‌‌peticion.‌  ‌
● Equipo‌‌
  servidor‌‌
  SQL‌‌
  Server:‌‌
  Se‌‌
  encarga‌‌
  de‌‌
  administrar‌‌
  la‌‌
  base‌‌
 de‌‌
 datos,‌‌
 de‌‌
 
gestionar‌  ‌los‌  ‌recursos‌  ‌del‌  ‌servidor‌  ‌(CPU,‌  ‌memoria,‌  ‌etc)‌  ‌y ‌ ‌por‌  ‌supuesto‌  ‌de‌‌
 
resolver‌‌y‌‌devolver‌‌el‌‌resultado‌‌de‌‌la‌‌peticion‌‌realizada‌‌por‌‌el‌‌cliente.‌  ‌

 ‌

 ‌

 ‌

 ‌

 ‌

 ‌
EJERCICIO‌  ‌
 ‌
1)‌‌
  Crear‌‌
  un‌‌
  Stored‌‌
 Procedure‌‌
 que‌‌
 permita‌‌
 incrementar‌‌
 en‌‌
 20‌‌
 el‌‌
 numero‌‌
 de‌‌
 paginas‌‌
 de‌‌
 cada‌‌
 
libro(LIBROS‌‌TABLE).‌  ‌
 ‌
DROP‌‌PROCEDURE‌‌IF‌‌EXISTS‌‌procesoLibros‌  ‌
DELIMITER‌‌$$‌  ‌
CREATE‌‌PROCEDURE‌‌procesoLibros()‌  ‌
BEGIN‌  ‌
DECLARE‌‌id‌‌INT;‌  ‌
DECLARE‌‌paginas‌‌INT;‌  ‌
DECLARE‌‌titulo‌‌VARCHAR(255);‌  ‌
DECLARE‌‌final‌‌INT‌‌DEFAULT‌‌0;‌  ‌
 ‌
DECLARE‌‌cursor1‌‌CURSOR‌‌FOR‌‌SELECT‌‌libro_id,‌‌titulo,‌‌paginas‌‌FROM‌‌Libros;‌  ‌
 ‌
DECLARE‌‌CONTINUE‌‌HANDLER‌‌FOR‌‌NOT‌‌FOUND‌‌SET‌‌final=1;‌  ‌
 ‌
OPEN‌‌cursor1;‌  ‌
bucle:‌‌LOOP‌  ‌
FETCH‌‌cursor1‌‌INTO‌‌id,‌‌titulo,‌‌paginas;‌  ‌
 ‌
IF‌‌final=‌‌1‌‌THEN‌  ‌
LEAVE‌‌bucle;‌  ‌
END‌‌IF;‌ 
 ‌
UPDATE‌‌libros‌‌SET‌‌paginas‌‌=‌‌paginas+20‌‌WHERE‌‌libro_id=id;‌  ‌
 ‌
SELECT‌  ‌
titulo‌‌AS‌‌"titulo",‌  ‌
paginas‌‌AS‌‌"anterior",‌  ‌
pag‌‌AS‌‌"Incremento",‌  ‌
FROM‌‌libros‌‌WHERE‌‌libro_id=id;‌  ‌
 ‌
END‌‌LOOP‌‌bucle;‌  ‌
CLOSE‌‌cursor1;‌  ‌
 ‌
END$$‌  ‌
DELIMITER‌  ‌
 ‌
2)‌  ‌Crear‌  ‌un‌  ‌store‌  ‌procedure‌  ‌que‌  ‌permita‌  ‌obtener‌  ‌los‌  ‌productos‌  ‌por‌  ‌el‌  ‌estado‌  ‌de‌‌
 
disponibilidad.‌  ‌

 ‌

 ‌

 ‌

 ‌

You might also like