SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
UNIVERSIDAD NACIONAL DE
CHIMBORAZO
FACULTAD EN CIENCIAS DE LA
EDUCACION
ESCUELA DE IMFORMATICA APLICADA A
LA EDUCACION
BASE DE DATOS II
WILLIAM LOZANO
3. Sentencias de control
Además
de definir
y
manipular
una base
de datos
relacional, es importante que se establezcan mecanismos de control para resolver
problemas de concurrencia de usuarios y garantizar la seguridad de los datos. Para
la concurrencia de usuarios utilizaremos el concepto de transacción, y para la
seguridad veremos cómo se pue-de autorizar y desautorizar a usuarios a acceder a
la base de datos.
3.1. Las transacciones
Una transacción es una unidad lógica de trabajo. O informalmente, y
trabajando con SQL, un conjunto de sentencias que se ejecutan como si
fuesen una sola. En general, las sentencias que forman parte de una
transacción se interrelacionan entre sí, y no tiene sentido que se ejecute
una sin que se ejecuten las demás.
La mayoría de las transacciones se inician de forma implícita al utilizar alguna
sentencia que empieza con CREATE, ALTER, DROP, SET, DECLARE, GRANT o
REVOKE, aunque existe la sentencia SQL para iniciar transacciones, que es la
siguiente:
SET TRANSACTION {READ ONLY|READ WRITE};
Si queremos actualizar la base de datos utilizaremos la opción READ WRITE, y
si no la queremos actualizar, elegiremos la opción READ ONLY.
Sin embargo, en cambio, una transacción siempre debe acabar explícitamente
con alguna de las sentencias siguientes:
{COMMIT|ROLLBACK} [WORK];
La diferencia entre COMMIT y ROLLBACK es que mientras la sentencia COMMIT
confirma todos los cambios producidos contra la BD durante la ejecución de la
transacción, la sentencia ROLLBACK deshace todos los cambios que se hayan
producid
o en la
base de
datos y la
deja
como
estaba
antes del
inicio de
nuestra
transacci
ón.
La
palabra
reservad
a WORK
sólo sirve
para
aclarar lo
que hace
la
sentencia
, y es
totalment
e
opcional.
Ejemplo de transacción
A continuación proponemos un ejemplo de transacción en el que se quiere disminuir el
suel-do de los empleados que han trabajado en el proyecto 3 en 1.000 euros. y aumentar el
sueldo de los empleados que han trabajado en el proyecto 1 también en 1.000 euros.
SET TRANSACTION READ WRITE;
UPDATE empleados SET sueldo = sueldo – 1000 WHERE num_proyec =
3; UPDATE empleados SET sueldo = sueldo + 1000 WHERE
num_proyec = 1; COMMIT;
3.2. Las
autoriza
ciones y
desautor
izacione
s
Todos los
privilegio
s sobre
la base de datos los tiene su propietario, pero no es el único que accede a ésta.
Por este motivo, el SQL nos ofrece sentencias para autorizar y desautorizar a
otros usuarios.
1) Autorizaciones
Para autorizar, el SQL dispone de la siguiente sentencia:
GRANT privilegios ON objeto TO usuarios
[WITH GRANT OPTION];
Donde tenemos que:
a) privilegios puede ser:
• ALL PRIVILEGES: todos los privilegios sobre el objeto especificado.
• USAGE: utilización del objeto especificado; en este caso el dominio.
• SELECT: consultas.
• INSERT [(columnas)]: inserciones. Se puede concretar de qué columnas.
• UPDATE [(columnas)]: modificaciones. Se puede concretar de qué columnas.
• DELETE: borrados.
• REFE
RENC
ES
[(col
umna)
]:
refere
ncia
del
objeto
en
restric
cione
s de
integri
-dad.
Se
pued
e
concr
etar
de
qué
colu
mnas.
b)
Objeto
debe ser:
• DOMAIN: dominio
• TABLE: tabla.
• Vista.
c) Usuarios puede ser todo el mundo: PUBLIC, o bien una lista de los identi-
ficadores de los usuarios que queremos autorizar.
d) La opción WITH GRANT OPTION permite que el usuario que autoricemos
pueda, a su vez, autorizar a otros usuarios a acceder al objeto con los mismos
privilegios con los que ha sido autorizado.
2) Desautorizaciones
Para desautorizar, el SQL dispone de la siguiente sentencia:
REVOKE [GRANT OPTION FOR] privilegios ON objeto FROM
usua
rios
[RES
TRIC
T|
CASC
ADE]
;
Donde
tenemos
que:
a)
privile
gios,
objeto
y
usuario
s son los
mismos
que para
la sentencia
GRANT.
b) La opción GRANT OPTION FOR se utilizaría en el caso de que quisiéramos
eliminar el derecho a autorizar (WITH GRANT OPTION).
c) Si un usuario al que hemos autorizado ha autorizado a su vez a otros, que al
mismo tiempo pueden haber hecho más autorizaciones, la opción CASCADE
hace que queden desautorizados todos a la vez.
d) La opción RESTRICT no nos permite desautorizar a un usuario si éste ha
autorizado a otros.
4. Sublenguajes especializados
Muchas veces querremos acceder a la base de datos desde una aplicación he-
che en un lenguaje de programación cualquiera. Para utilizar el SQL desde un
lenguaje de programación, podemos utilizar el SQL hospedado, y para trabajar
con éste necesitamos un pre compilador que separe las sentencias del lenguaje
de programación de las del lenguaje de bases de datos. Una alternativa muy
interesante a esta forma de trabajar son las rutinas SQL/CLI.
El objetivo de este apartado no es explicar con detalle ni el SQL hospedado ni,
aún menos, las rutinas SQL/CLI. Sólo introduciremos las ideas básicas del
funcionamiento de ambos.
4.1. SQL hospedado
Para crear y manipular una base de datos relacional necesitamos SQL. Además,
si la tarea que queremos hacer requiere el poder de procesamiento de un len-
guaje de programación como Java, C, Cobol, Fortran, Pascal, etc., podemos
utilizar el SQL hospedado en el lenguaje de programación elegido. De este mo-
do, podemos utilizar las sentencias del SQL dentro de nuestras aplicaciones,
poniendo siempre delante la palabra reservada EXEC SQL*.
Para poder compilar la mezcla de llamadas de SQL y sentencias de
programación, antes tenemos que utilizar un pre compilador. Un precompilador
es una herramienta que separa las sentencias del SQL y las sentencias de
programación. Allá donde en el programa fuente haya una sentencia de acceso a
la base de datos, se debe insertar una llamada a la interfaz del SGBD. El
programa fuente resultante de la pre compilación ya está únicamente en el
lenguaje de programación, preparado para ser compilado, montado y ejecutado.
En la figura que encontraréis en la página siguiente podéis observar este
funcionamiento.
Todas las sentencias de definición, manipulación y control que hemos visto para
el SQL se pueden utilizar en el SQL hospedado, pero precedidas de la cláusula
EXEC SQL. Sólo habrá una excepción: cuando el resultado de una sentencia SQL
obtenga más de una fila o haga referencia también a más de una, deberemos
trabajar con el concepto de cursor.
Un cursor se tiene que haber declarado antes de su utilización (EXEC SQL
DECLARE nombre_cursor CURSOR FOR). Para utilizarlo, se debe abrir (EXEC
SQL OPEN nombre_cursor), ir tomando los datos uno a uno, tratarlos
*
(EXEC SQL FETCH nombre_cursor INTO), y finalmente, cerrarlo (EXEC SQL
CLOSE nombre_cursor).
4.2. Las SQL/CLI
Las SQL/CLI (SQL/Call-Level Interface), denominadas de forma abreviada CLI,
permiten que aplicaciones desarrolladas en un cierto lenguaje de programa-ción
(con sólo las herramientas disponibles para este lenguaje y sin el uso de un pre
compilador) puedan incluir sentencias SQL mediante llamadas a libre-rías. Estas
sentencias SQL se deben interpretar en tiempo de ejecución del programa, a
diferencia del SQL hospedado, que requería el uso de un pre-compilador.
La interfaz ODBC (Open Database Connectivity) define una librería de
funciones que permite a las aplicaciones acceder al SGBD utilizando el SQL.
Las rutinas SQL/CLI están fuertemente basadas en las características de la
interfaz ODBC, y gracias al trabajo desarrollado por SAG-X/Open (SQL Access
Group-X/Open), fueron añadidas al estándar ANSI/ISO SQL92 en 1995.
Las SQL/CLI son simplemente rutinas que llaman al SGBD para interpretar las
sentencias SQL que pide la aplicación. Desde el punto de vista del SGBD, las
SQL/CLI se pueden considerar, simplemente, como otras aplicaciones.
Bibliografíía
Escofet, C. M. (2006). El lenguaje SQL. En C. M. Escofet, El lenguaje SQL (pág. 62). Madrid: dos. Obtenido de
http://ocw.uoc.edu/computer-science-technology-and-multimedia/bases-de-datos/bases-de-
datos/P06_M2109_02149.pdf

Más contenido relacionado

La actualidad más candente

Bd 2 1 fundamentos transact sql
Bd 2   1 fundamentos transact sqlBd 2   1 fundamentos transact sql
Bd 2 1 fundamentos transact sqlCarlos Lopez
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sqlDeisyVilchez
 
William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sasRafael Toro
 
Transact sql
Transact sqlTransact sql
Transact sqljoan
 
Manual de conexión de base de datos distribuida
Manual  de conexión de base de datos distribuidaManual  de conexión de base de datos distribuida
Manual de conexión de base de datos distribuidaJorch Mendez
 
Administracion de la seguridad de sql server
Administracion de la seguridad de sql serverAdministracion de la seguridad de sql server
Administracion de la seguridad de sql serveranaleydilinaresserra1
 
U456 postgre sql
U456 postgre sqlU456 postgre sql
U456 postgre sqlJr. Serrano
 
permisos de ejecucion el sql
permisos de ejecucion el sql permisos de ejecucion el sql
permisos de ejecucion el sql Majo Tapia
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosiluijo
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My SqlZiscko
 

La actualidad más candente (17)

Bd 2 1 fundamentos transact sql
Bd 2   1 fundamentos transact sqlBd 2   1 fundamentos transact sql
Bd 2 1 fundamentos transact sql
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Diapositivas transact sql
Diapositivas transact sqlDiapositivas transact sql
Diapositivas transact sql
 
William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sas
 
Lenguaje Transact SQL
Lenguaje Transact SQL Lenguaje Transact SQL
Lenguaje Transact SQL
 
Transact sql
Transact sqlTransact sql
Transact sql
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
TRANSACT-SQL
TRANSACT-SQLTRANSACT-SQL
TRANSACT-SQL
 
Manual de conexión de base de datos distribuida
Manual  de conexión de base de datos distribuidaManual  de conexión de base de datos distribuida
Manual de conexión de base de datos distribuida
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Administracion de la seguridad de sql server
Administracion de la seguridad de sql serverAdministracion de la seguridad de sql server
Administracion de la seguridad de sql server
 
U456 postgre sql
U456 postgre sqlU456 postgre sql
U456 postgre sql
 
Bloques
BloquesBloques
Bloques
 
permisos de ejecucion el sql
permisos de ejecucion el sql permisos de ejecucion el sql
permisos de ejecucion el sql
 
Sql plus oracle
Sql plus oracleSql plus oracle
Sql plus oracle
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 

Destacado (20)

Administrasi server
Administrasi serverAdministrasi server
Administrasi server
 
Abruzzo
AbruzzoAbruzzo
Abruzzo
 
Admission Post Bac Calendrier 2010
Admission Post Bac Calendrier 2010Admission Post Bac Calendrier 2010
Admission Post Bac Calendrier 2010
 
Apresentação slides torre breeze
Apresentação slides torre breezeApresentação slides torre breeze
Apresentação slides torre breeze
 
O Ordenador
O OrdenadorO Ordenador
O Ordenador
 
Presentación1
Presentación1Presentación1
Presentación1
 
Resumen interaccones y guia
Resumen interaccones y guiaResumen interaccones y guia
Resumen interaccones y guia
 
Boletim 11 Projeto Geração Mulher
Boletim 11 Projeto Geração MulherBoletim 11 Projeto Geração Mulher
Boletim 11 Projeto Geração Mulher
 
Captyurador de pantalles
Captyurador de pantallesCaptyurador de pantalles
Captyurador de pantalles
 
Arte Na Areia
Arte Na AreiaArte Na Areia
Arte Na Areia
 
Grupo condor 1
Grupo condor 1Grupo condor 1
Grupo condor 1
 
Call Sheet 1
Call Sheet 1Call Sheet 1
Call Sheet 1
 
Comunicato stampa nojarella 2014
Comunicato stampa nojarella 2014Comunicato stampa nojarella 2014
Comunicato stampa nojarella 2014
 
Inside the office
Inside  the officeInside  the office
Inside the office
 
Ecercice gestion
Ecercice gestionEcercice gestion
Ecercice gestion
 
Azul
AzulAzul
Azul
 
Mapa Curricular Plan 2000
Mapa Curricular Plan 2000Mapa Curricular Plan 2000
Mapa Curricular Plan 2000
 
Catedra
CatedraCatedra
Catedra
 
Taller nº 1 problemas isr 2014 listo..
Taller nº 1 problemas isr 2014 listo..Taller nº 1 problemas isr 2014 listo..
Taller nº 1 problemas isr 2014 listo..
 
Multimedia
MultimediaMultimedia
Multimedia
 

Similar a BD2-SentenciasControl

Saula ana bdii_t7
Saula ana bdii_t7Saula ana bdii_t7
Saula ana bdii_t7Any Saula
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7GeovannyYungan
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sqlSuarezJhon
 
Diseño de aplicaciones
Diseño de aplicacionesDiseño de aplicaciones
Diseño de aplicacionesUTN
 
Procedimientos almacenados..mañana
Procedimientos almacenados..mañanaProcedimientos almacenados..mañana
Procedimientos almacenados..mañanaANilez Solrak
 
Html,php
Html,phpHtml,php
Html,phpsoftyed
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Antonio Ortiz
 
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.Lorenzo Jose Mota Garcia
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Byron Quisquinay
 
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)Karina Lucio
 
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlF004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlMiguel Amgo
 

Similar a BD2-SentenciasControl (20)

Saula ana bdii_t7
Saula ana bdii_t7Saula ana bdii_t7
Saula ana bdii_t7
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Diseño de aplicaciones
Diseño de aplicacionesDiseño de aplicaciones
Diseño de aplicaciones
 
Ms SQL Server
Ms SQL ServerMs SQL Server
Ms SQL Server
 
ARQSQL.docx
ARQSQL.docxARQSQL.docx
ARQSQL.docx
 
Procedimientos almacenados..mañana
Procedimientos almacenados..mañanaProcedimientos almacenados..mañana
Procedimientos almacenados..mañana
 
Html,php
Html,phpHtml,php
Html,php
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012
 
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
Provisionamiento de un RAC de 2 nodos en la nube de Oracle.
 
Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10Curso de SQL Básico parte 1 de 10
Curso de SQL Básico parte 1 de 10
 
java con base de datos
java con base de datos java con base de datos
java con base de datos
 
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
 
SQL VS ACCESS
SQL VS ACCESSSQL VS ACCESS
SQL VS ACCESS
 
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlF004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
 
Procedimientos almacenadoss
Procedimientos almacenadossProcedimientos almacenadoss
Procedimientos almacenadoss
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
LENGUAJE TRANSACT SQL
 LENGUAJE TRANSACT SQL LENGUAJE TRANSACT SQL
LENGUAJE TRANSACT SQL
 
Introduction to SQL SERVER
Introduction to  SQL SERVERIntroduction to  SQL SERVER
Introduction to SQL SERVER
 

Más de William Lozano

Silabo redes de computadores ii
Silabo redes de computadores iiSilabo redes de computadores ii
Silabo redes de computadores iiWilliam Lozano
 
Ejercicios subnetting y vlsm
Ejercicios subnetting y vlsmEjercicios subnetting y vlsm
Ejercicios subnetting y vlsmWilliam Lozano
 
Lozano william bdii_t7
Lozano william bdii_t7Lozano william bdii_t7
Lozano william bdii_t7William Lozano
 
William lozano bdii_t8
William lozano bdii_t8William lozano bdii_t8
William lozano bdii_t8William Lozano
 
Lozano william 6_a_ti_1 (1) (1)
Lozano william 6_a_ti_1 (1) (1)Lozano william 6_a_ti_1 (1) (1)
Lozano william 6_a_ti_1 (1) (1)William Lozano
 
7. sgbd sistema gestor de bases de datos
7. sgbd   sistema gestor de bases de datos7. sgbd   sistema gestor de bases de datos
7. sgbd sistema gestor de bases de datosWilliam Lozano
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query languageWilliam Lozano
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalizaciónWilliam Lozano
 
Silabo bases de_datos_ii
Silabo bases de_datos_iiSilabo bases de_datos_ii
Silabo bases de_datos_iiWilliam Lozano
 
Los números naturales 2.1
Los números naturales 2.1Los números naturales 2.1
Los números naturales 2.1William Lozano
 

Más de William Lozano (20)

Tipos de coneciones
Tipos de conecionesTipos de coneciones
Tipos de coneciones
 
Silabo redes de computadores ii
Silabo redes de computadores iiSilabo redes de computadores ii
Silabo redes de computadores ii
 
Ejercicios subnetting y vlsm
Ejercicios subnetting y vlsmEjercicios subnetting y vlsm
Ejercicios subnetting y vlsm
 
Lozano william bdii_t7
Lozano william bdii_t7Lozano william bdii_t7
Lozano william bdii_t7
 
William lozano bdii_t8
William lozano bdii_t8William lozano bdii_t8
William lozano bdii_t8
 
Lozano william rl_1
Lozano william rl_1Lozano william rl_1
Lozano william rl_1
 
Lozano william 6_a_ti_1 (1) (1)
Lozano william 6_a_ti_1 (1) (1)Lozano william 6_a_ti_1 (1) (1)
Lozano william 6_a_ti_1 (1) (1)
 
Lozano william 7_a
Lozano william 7_aLozano william 7_a
Lozano william 7_a
 
Data warehouse
Data warehouseData warehouse
Data warehouse
 
7. sgbd sistema gestor de bases de datos
7. sgbd   sistema gestor de bases de datos7. sgbd   sistema gestor de bases de datos
7. sgbd sistema gestor de bases de datos
 
Ejercicios sql access
Ejercicios sql accessEjercicios sql access
Ejercicios sql access
 
Bases de datos access
Bases de datos accessBases de datos access
Bases de datos access
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query language
 
4. normalización
4. normalización4. normalización
4. normalización
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
1 bases de-datos
1 bases de-datos1 bases de-datos
1 bases de-datos
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
Silabo bases de_datos_ii
Silabo bases de_datos_iiSilabo bases de_datos_ii
Silabo bases de_datos_ii
 
Recta numérica 2
Recta numérica 2Recta numérica 2
Recta numérica 2
 
Los números naturales 2.1
Los números naturales 2.1Los números naturales 2.1
Los números naturales 2.1
 

BD2-SentenciasControl

  • 1. UNIVERSIDAD NACIONAL DE CHIMBORAZO FACULTAD EN CIENCIAS DE LA EDUCACION ESCUELA DE IMFORMATICA APLICADA A LA EDUCACION BASE DE DATOS II WILLIAM LOZANO 3. Sentencias de control Además de definir y manipular una base de datos
  • 2. relacional, es importante que se establezcan mecanismos de control para resolver problemas de concurrencia de usuarios y garantizar la seguridad de los datos. Para la concurrencia de usuarios utilizaremos el concepto de transacción, y para la seguridad veremos cómo se pue-de autorizar y desautorizar a usuarios a acceder a la base de datos. 3.1. Las transacciones Una transacción es una unidad lógica de trabajo. O informalmente, y trabajando con SQL, un conjunto de sentencias que se ejecutan como si fuesen una sola. En general, las sentencias que forman parte de una transacción se interrelacionan entre sí, y no tiene sentido que se ejecute una sin que se ejecuten las demás. La mayoría de las transacciones se inician de forma implícita al utilizar alguna sentencia que empieza con CREATE, ALTER, DROP, SET, DECLARE, GRANT o REVOKE, aunque existe la sentencia SQL para iniciar transacciones, que es la siguiente: SET TRANSACTION {READ ONLY|READ WRITE}; Si queremos actualizar la base de datos utilizaremos la opción READ WRITE, y si no la queremos actualizar, elegiremos la opción READ ONLY. Sin embargo, en cambio, una transacción siempre debe acabar explícitamente con alguna de las sentencias siguientes: {COMMIT|ROLLBACK} [WORK]; La diferencia entre COMMIT y ROLLBACK es que mientras la sentencia COMMIT confirma todos los cambios producidos contra la BD durante la ejecución de la transacción, la sentencia ROLLBACK deshace todos los cambios que se hayan producid o en la base de datos y la deja como estaba antes del inicio de nuestra transacci ón. La palabra reservad a WORK sólo sirve para aclarar lo que hace la sentencia , y es totalment e opcional. Ejemplo de transacción A continuación proponemos un ejemplo de transacción en el que se quiere disminuir el suel-do de los empleados que han trabajado en el proyecto 3 en 1.000 euros. y aumentar el sueldo de los empleados que han trabajado en el proyecto 1 también en 1.000 euros. SET TRANSACTION READ WRITE; UPDATE empleados SET sueldo = sueldo – 1000 WHERE num_proyec = 3; UPDATE empleados SET sueldo = sueldo + 1000 WHERE num_proyec = 1; COMMIT; 3.2. Las autoriza ciones y desautor izacione s Todos los privilegio s sobre
  • 3. la base de datos los tiene su propietario, pero no es el único que accede a ésta. Por este motivo, el SQL nos ofrece sentencias para autorizar y desautorizar a otros usuarios. 1) Autorizaciones Para autorizar, el SQL dispone de la siguiente sentencia: GRANT privilegios ON objeto TO usuarios [WITH GRANT OPTION]; Donde tenemos que: a) privilegios puede ser: • ALL PRIVILEGES: todos los privilegios sobre el objeto especificado. • USAGE: utilización del objeto especificado; en este caso el dominio. • SELECT: consultas. • INSERT [(columnas)]: inserciones. Se puede concretar de qué columnas. • UPDATE [(columnas)]: modificaciones. Se puede concretar de qué columnas. • DELETE: borrados. • REFE RENC ES [(col umna) ]: refere ncia del objeto en restric cione s de integri -dad. Se pued e concr etar de qué colu mnas. b) Objeto debe ser: • DOMAIN: dominio • TABLE: tabla. • Vista. c) Usuarios puede ser todo el mundo: PUBLIC, o bien una lista de los identi- ficadores de los usuarios que queremos autorizar. d) La opción WITH GRANT OPTION permite que el usuario que autoricemos pueda, a su vez, autorizar a otros usuarios a acceder al objeto con los mismos privilegios con los que ha sido autorizado. 2) Desautorizaciones Para desautorizar, el SQL dispone de la siguiente sentencia: REVOKE [GRANT OPTION FOR] privilegios ON objeto FROM usua rios [RES TRIC T| CASC ADE] ; Donde tenemos que: a) privile gios, objeto y usuario s son los mismos que para
  • 4. la sentencia GRANT. b) La opción GRANT OPTION FOR se utilizaría en el caso de que quisiéramos eliminar el derecho a autorizar (WITH GRANT OPTION). c) Si un usuario al que hemos autorizado ha autorizado a su vez a otros, que al mismo tiempo pueden haber hecho más autorizaciones, la opción CASCADE hace que queden desautorizados todos a la vez. d) La opción RESTRICT no nos permite desautorizar a un usuario si éste ha autorizado a otros.
  • 5. 4. Sublenguajes especializados Muchas veces querremos acceder a la base de datos desde una aplicación he- che en un lenguaje de programación cualquiera. Para utilizar el SQL desde un lenguaje de programación, podemos utilizar el SQL hospedado, y para trabajar con éste necesitamos un pre compilador que separe las sentencias del lenguaje de programación de las del lenguaje de bases de datos. Una alternativa muy interesante a esta forma de trabajar son las rutinas SQL/CLI. El objetivo de este apartado no es explicar con detalle ni el SQL hospedado ni, aún menos, las rutinas SQL/CLI. Sólo introduciremos las ideas básicas del funcionamiento de ambos. 4.1. SQL hospedado Para crear y manipular una base de datos relacional necesitamos SQL. Además, si la tarea que queremos hacer requiere el poder de procesamiento de un len- guaje de programación como Java, C, Cobol, Fortran, Pascal, etc., podemos utilizar el SQL hospedado en el lenguaje de programación elegido. De este mo- do, podemos utilizar las sentencias del SQL dentro de nuestras aplicaciones, poniendo siempre delante la palabra reservada EXEC SQL*. Para poder compilar la mezcla de llamadas de SQL y sentencias de programación, antes tenemos que utilizar un pre compilador. Un precompilador es una herramienta que separa las sentencias del SQL y las sentencias de programación. Allá donde en el programa fuente haya una sentencia de acceso a la base de datos, se debe insertar una llamada a la interfaz del SGBD. El programa fuente resultante de la pre compilación ya está únicamente en el lenguaje de programación, preparado para ser compilado, montado y ejecutado. En la figura que encontraréis en la página siguiente podéis observar este funcionamiento. Todas las sentencias de definición, manipulación y control que hemos visto para el SQL se pueden utilizar en el SQL hospedado, pero precedidas de la cláusula EXEC SQL. Sólo habrá una excepción: cuando el resultado de una sentencia SQL obtenga más de una fila o haga referencia también a más de una, deberemos trabajar con el concepto de cursor. Un cursor se tiene que haber declarado antes de su utilización (EXEC SQL DECLARE nombre_cursor CURSOR FOR). Para utilizarlo, se debe abrir (EXEC SQL OPEN nombre_cursor), ir tomando los datos uno a uno, tratarlos *
  • 6. (EXEC SQL FETCH nombre_cursor INTO), y finalmente, cerrarlo (EXEC SQL CLOSE nombre_cursor). 4.2. Las SQL/CLI Las SQL/CLI (SQL/Call-Level Interface), denominadas de forma abreviada CLI, permiten que aplicaciones desarrolladas en un cierto lenguaje de programa-ción (con sólo las herramientas disponibles para este lenguaje y sin el uso de un pre compilador) puedan incluir sentencias SQL mediante llamadas a libre-rías. Estas sentencias SQL se deben interpretar en tiempo de ejecución del programa, a diferencia del SQL hospedado, que requería el uso de un pre-compilador. La interfaz ODBC (Open Database Connectivity) define una librería de funciones que permite a las aplicaciones acceder al SGBD utilizando el SQL. Las rutinas SQL/CLI están fuertemente basadas en las características de la interfaz ODBC, y gracias al trabajo desarrollado por SAG-X/Open (SQL Access Group-X/Open), fueron añadidas al estándar ANSI/ISO SQL92 en 1995. Las SQL/CLI son simplemente rutinas que llaman al SGBD para interpretar las sentencias SQL que pide la aplicación. Desde el punto de vista del SGBD, las SQL/CLI se pueden considerar, simplemente, como otras aplicaciones.
  • 7. Bibliografíía Escofet, C. M. (2006). El lenguaje SQL. En C. M. Escofet, El lenguaje SQL (pág. 62). Madrid: dos. Obtenido de http://ocw.uoc.edu/computer-science-technology-and-multimedia/bases-de-datos/bases-de- datos/P06_M2109_02149.pdf