1. BASE DE DATOS I
S4L
GRUPO #2
MANEJO DE SENTENCIAS DE MANIPULACIÓN
03/02/2016
Integrantes:
• BAJANA ANDRES
• LUZARDO EDUARDO
• SANCAN ANAIS
• VELASQUEZ MIGUEL
2. MANEJO DE SENTENCIAS DE MANIPULACION 1
MANEJO DE SENTENCIAS DE MANIPULACIÓN
Presentado por:
• BAJANA ANDRES
• LUZARDO EDUARDO
• SANCAN ANAIS
• VELASQUEZ MIGUEL
Docente:
ING. ROSSANA LUCIN
Curso:
S4L
UNIVERSIDAD DE GUAYAQUIL
FACULTAD MATEMÁTICAS Y FÍSICAS
INGENIERÍA EN SISTEMAS COMPUTACIONALES
EXPOSICIÓN 2DO PARCIAL
GUAYAQUIL
2016
3. MANEJO DE SENTENCIAS DE MANIPULACION 2
Contenido
1. Manejo de Sentencias de Manipulacion .................................................................... 3
1.2 Insert .....................................................................Error! Bookmark not defined.
1.3 Delete .................................................................................................................... 7
1.4 Update.................................................................................................................... 8
1.5 Manejo de Transaccion(ACID) ............................................................................. 9
1.5.1 ¿Cómo se termina una transaccion? ............................................................ 11
1.5.2 Ejemplo de Transaccion............................................................................... 11
Conclusión............................................................................................................... 12
Referencias ..................................................................................................................... 13
4. MANEJO DE SENTENCIAS DE MANIPULACION 3
1. Manejo de Sentencias de Manipulación
1.2 INSERT
Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla
en una base de datos relacional.
Hay dos formas de instrucción INSERT. La primera permite insertar una única fila en
una tabla especificada y tiene el siguiente formato:
INSERT INTO NombreTabla [(ListaColumnas)]
VALUES (ListaValoresDatos)
Forma básica
INSERT INTO 'tablatura' ('columna1',['columna2,... '])
VALUES ('valor1', ['valor2,...'])
O tambien se puede utilizar como:
INSERT tablatura VALUES ('valor1','valor2')
Las cantidades de columnas y valores deben ser iguales. Si una columna no se
especifica, le será asignado el valor por omisión. Los valores especificados (o
implícitos) por la sentencia INSERTdeberán 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.
NombreTabla puede ser una tabla base o una vista actualizable y ListaColumnas
representa una lista de uno o más nombres de columnas, separados por comas. La
ListaColumnas es opcional; si se la omite, SQL utilizará de forma predeterminada una
lista de todas las columnas en su orden original especificado en la instrucción CREATE
TABLE. Si se especifica esta lista de columnas, todas las columnas omitidas de la lista
deberán haber sido declaradas como columnas NULL en el momento de crear la tabla, a
menos que se hubiera utilizado la opción DEFAULT al crear la columna. La
ListaValoresDatos debe corresponderse con la ListaColumnas de la forma siguiente:
El número de elementos de cada lista debe ser el mismo.
Debe haber una correspondencia directa entre las posiciones de los elementos de
ambas listas, de modo que el primer elemento de ListaValoresDatos se aplique
al primer elemento de ListaColumnas, el segundo elemento de
ListaValoresDatos se aplique al segundo elemento de LsitaColumnas, etc.
5. MANEJO DE SENTENCIAS DE MANIPULACION 4
El tipo de datos de cada elemento de ListaValoresDatos debe ser compatible con
el tipo de datos de la correspondiente columna.
Ejemplo
Insertar una nueva fila en la tabla Staff suministrando datos para todas las columnas.
INSERT INTO Staff
VALUES (SG16,Alan,Brown, Assistant, M, DATE 19570525, 8300, B003);
Puesto que estamos insertanto los datos en cada columna en el mismo orden en el que
fue creada la tabla, no hay necesidad de especificar ninguna lista de columnas. Observe
que los literales de caracteres, como Alan, deben encerrarse entre comillas simples.
Ejemplo
inserter una nueva fila en la table Staff suministrando datos para todas las columnas
obligatorias: staffNo, fName, IName, position, salary, branchNo.
INSERT INTO Staff (staffNo, fName, IName, position, salary, branchNo)
VALUES (SG44, Anne, Jones, Assistant, 8100, B003);
Puesto que estamos insertando datos en ciertas columnas, podemos especificar los
nombres de las columnas en las que los estamos insertando. El orden de los nombres de
las columnas no es significativo, aunque lo normal es especificarlas en el orden en que
aparece en la Tabla.
La segunda forma de la instrucción INSERT permite copiar multiples filas de una o mas
tablas en otra tabla, y tiene el siguiente formato.
INSERT INTO NombreTabla [( ListaColumnas)]
Formas avanzadas
Una característica de SQL (desde SQL-92) es el uso de constructores de filas para
insertar múltiples filas a la vez, con una sola sentencia SQL:
INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])
VALUES (''valor1a'', [''valor1b,...'']),
(''value2a'', [''value2b,...'']),...;
Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y
H2.
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la tabla
'agenda_telefonica'):
6. MANEJO DE SENTENCIAS DE MANIPULACION 5
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'),
('Alejandro Sosa', '4556550');
Que podía haber sido realizado por las sentencias
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');
INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');
Notar que las sentencias separadas pueden tener semántica diferente (especialmente con
respecto a los triggers), y puede tener diferente rendimiento que la sentencia de
inserción múltiple.
Para insertar varias filas en MS SQL puede utilizar esa construcción:
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 válida de acuerdo con el estándar
SQL (SQL: 2003), debido a la cláusula 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 implementación conforme al estándar de esta lógica 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)
7. MANEJO DE SENTENCIAS DE MANIPULACION 6
Copia de filas de otras tablas
Un INSERT también 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 ningún procesamiento intermedio en la aplicación cliente. Un
SUBSELECT se utiliza en lugar de la cláusula VALUES. El SUBSELECT puede
contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA
los datos que se inserta. Lógicamente, el SELECT se evalúa antes que la operación
INSERT esté iniciada. Un ejemplo se da a continuación.
INSERT INTO phone_book2
SELECT *
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
Una variación 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.
8. MANEJO DE SENTENCIAS DE MANIPULACION 7
1.3 DELETE
La instrucción DELETE permite borrar filas de una tabla especificada. El formato del
comando es:
DELETE FROM NombreTabla
[WHERE condicionBusqueda]
Al igual que sucede con las instrucciones INSERT y UPDATE, NombreTabla puede ser
el nombre de una tabla base o de una vista actualizable. La condicionBusqueda es
opcional; si se la omite, todas las filas serán borradas de la tabla, esto no hace que se
borre la propia tabla; para borrar tanto el contenido de la tabla como su definición, es
necesario utilizar la instrucción DROP TABLE. Si se especifica una
condicionBusqueda, solo se borraran aquellas filas que satisfagan la condición indicada.
Ejemplo
Borrar todas las visitas relativas al inmueble PG4
DELETE FROM Viewing
WHERE propertyNo = PG4;
La clausula where localiza las filas correspondientes al inmueble PG4 y la operación de
borrado se aplica únicamente a esas filas concretas.
Ejemplo
Borrar todas las filas de la tabla visitas
DELETE FROM Viewing;
No se ha especificado ninguna clausula WHERE, por lo que la operación de borrado se
aplica a todas las filas de la tabla. Esto elimina de la tabla el contenido de todas las filas,
dejando únicamente la definición de la tabla, por lo que continuaremos siendo capaces
de insertar datos en la tabla posteriormente.
9. MANEJO DE SENTENCIAS DE MANIPULACION 8
1.4 UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.
Ejemplo
UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N';
La instrucción UPDATE permite modificar el contenido de filas ya existentes en una
tabla especificada el formato del comando es:
UPDATE NombreTabla
SET NombreColumna1 = valorDatos1 [, NombreColumna2 = valorDatos2�]
[WHERE condicionBusqueda]
NombreTabla puede ser el nombre de una tabla base o de una vista actualizable. La
clausula SET específica los nombres de una o más columnas que hay que actualizar. La
clausula WHERE es opcional; si se la omite, las columnas especificadas se actualizarán
para todas de las filas de la tabla. Si se especifica una clausula WHERE, solo se
actualizarán aquellas filas que satisfagan la condicionBusqueda. Los nuevos valores
valorDatos deber ser compatibles con los tipos de datos de las columnas
correspondientes.
Ejemplo
Incrementar un 3% el salario de todos los empleados
UPDATE Staff
SET salary = salary * 1.03;
Puesto que la actualización se aplica a todas las filas de la table Staff, omitimos la
clausula WHERE.
Ejemplo
Incrementar un 5% el salario de todos los gerentes.
UPDATE Staff
SET salary = salary * 1.05
10. MANEJO DE SENTENCIAS DE MANIPULACION 9
WHERE position = Manager;
La clausula WHERE localiza las filas que contienen datos para los gerentes (Manager)
y la actualizacion salary = salary * 1.05 se aplica únicamente a dichas filas concretas.
Ejemplo
Ascender a David Ford (staffNo = SG14) a Gerente e incrementar su salario a 18000
euros.
UPDATE Staff
SET position = Manager, salary = 18000
WHERE staffNo = SG14;
1.5 Manejo de transacciones (ACID)
Desde los inicios de la Informática se guardaron datos para ser recuperados y
procesados más tarde pero muchísimas veces esos datos eran inconsistentes y causaban
problemas muy graves.
Una transacción en un Sistema de Gestión de Bases de Datos (SGBD), es un conjunto
de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma
indivisible o atómica.
Un SGBD se dice transaccional, si es capaz de mantener la integridad de los datos,
haciendo que estas transacciones no puedan finalizar en un estado intermedio. Cuando
por alguna causa el sistema debe cancelar la transacción, empieza a deshacer las órdenes
ejecutadas hasta dejar la base de datos en su estado inicial (llamado punto de
integridad), como si la orden de la transacción nunca se hubiese realizado. Una
transacción debe contar con ACID (un acrónimo inglés) que quiere decir: Atomicidad,
Consistencia, Aislamiento y Durabilidad. Entonces para que un Sistema de Gestión de
Bases de Datos sea considerado Transaccional, debe cumplir con estos criterios (ACID).
Veamos un ejemplo:
Se tiene que grabar una venta y para ello se tienen dos tablas:
Cabecera de ventas
Detalles de ventas
11. MANEJO DE SENTENCIAS DE MANIPULACION 10
Se grabó la cabecera y antes de que se grabaran todos los detalles ocurrió un corte en la
energía eléctrica o se dañó la red o algún otro problema que impidió grabar todos los
detalles de dicha venta.
Eso implica que algo está muy mal: la cabecera no corresponde exactamente con los
detalles. Y eso es inaceptable.
A veces, ese tipo de error puede ser detectado y corregido enseguida, pero a veces
pueden pasar días, meses o inclusive años antes de ser detectado.
Este tipo de problemas y muchos más causaban serios perjuicios a las empresas, motivo
por el cual muchas personas se dedicaron a investigar como solucionarlos. A finales de
los años 1970 Jim Gray definió las propiedades que debía tener una transacción
confiable y en 1983 Andreas Reuter y Theo Härder inventaron la palabra ACID para
describir a ese tipo de transacción.
Atomicidad significa que las modificaciones a la Base de Datos (agregar, borrar o
modificar) deben seguir la regla de todo o nada. Si cualquier parte de la transacción
falló, por más pequeña que sea dicha parte, toda la transacción falló.
Consistencia significa que solamente datos válidos pueden ser escritos en la Base de
Datos. Dentro de una transacción se pueden tener temporalmente datos inválidos pero
cuando la transacción termina, sea de la forma que sea, la Base de Datos debe tener
solamente datos válidos.
Aislamiento significa que si varias transacciones se están ejecutando al mismo tiempo,
ninguna de ellas interfiere con las otras. Eso implica que la transacción A no conoce ni
puede cambiar lo que la transacción B está haciendo. Cada transacción está aislada de
todas las demás transacciones, o sea que cada transacción es totalmente independiente
de todas las demás transacciones.
Durabilidad significa que cuando los cambios a los datos que realizó la transacción son
grabados, dichos cambios permanecerán aún cuando se corte la energía eléctrica, se
interrumpa la conexión a la red, o cualquier otro problema físico.
Si una Base de Datos no cumple con alguno de esos 4 criterios entonces no puede ser
considerada confiable.
Para esto, el lenguaje de consulta de datos SQL (Structured Query Language), provee
los mecanismos para especificar que un conjunto de acciones deben constituir una
transacción.
BEGIN TRAN: Especifica que va a empezar una transacción.
COMMIT TRAN: Le indica al motor que puede considerar la transacción
completada con éxito.
ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer
la base al punto de integridad.
12. MANEJO DE SENTENCIAS DE MANIPULACION 11
En un sistema ideal, las transacciones deberían garantizar todas las propiedades ACID;
en la práctica, a veces alguna de estas propiedades se simplifica o debilita con vistas a
obtener un mejor rendimiento.
1.5.1¿Cómo se termina una transacción?
Solamente hay dos formas “normales” de terminar una transacción:
o con un COMMIT
o con un ROLLBACK
Si una transacción termina con un COMMIT exitoso entonces todos los cambios que
ocurrieron dentro de esa transacción (es decir, todos los INSERT, DELETE, UPDATE)
son grabados permanentemente en la Base de Datos
Si una transacción terminó con un ROLLBACK entonces ninguno de los cambios que
ocurrieron dentro de esa transacción (es decir, ningún INSERT, DELETE, UPDATE)
será grabado y la Base de Datos regresará al estado que tenía cuando comenzó la
transacción
1.5.2 Ejemplo de una Transacción:
Un ejemplo habitual de transacción es el traspaso de una cantidad de dinero entre
cuentas bancarias. Normalmente se realiza mediante dos operaciones distintas, una en la
que se decrementa el saldo de la cuenta origen y otra en la que incrementamos el saldo
de la cuenta destino. Para garantizar la integridad del sistema (es decir, para que no
aparezca o desaparezca dinero), las dos operaciones deben ser atómicas, es decir, el
sistema debe garantizar que, bajo cualquier circunstancia (incluso una caída del
sistema), el resultado final es que, o bien se han realizado las dos operaciones, o bien no
se ha realizado ninguna.
13. MANEJO DE SENTENCIAS DE MANIPULACION 12
Conclusión
Podemos mencionar que el Manejo de las sentencias de Manipulacion es muy
importante ya que es usado con mucha frecuencia entre las tablas que usamos y se
deben de usar con mucha responsabilidad ya que al realizar estas operaciones puede
afectar gravemente nuestra base de datos, tambien nuestro sistema tiene que ser ideal al
hacer las transacciones y que al realizarlas cumplan con las reglas ACID ya que estas
propiedades se simplifica o debilita con vistas a obtener un mejor rendimiento. Podemos
concluir que al hacer uso de las
14. MANEJO DE SENTENCIAS DE MANIPULACION 13
Referencias
www.manualesguebs.com
www.monografias.com
www.wikipedia.com
www.youtube.com
www.sqlinformes.com
www.aprendesq.com
www.codificacionfacil.com
www.