7. Drop
• Instrucción para el borrado de un elemento:
DROP <elemento> <nombre>
• No tiene marcha atrás
• Ejemplos:
DROP TABLE films;
8. Alter
• Instrucción para la modificación de un elemento.
ALTER <elemento> <nombre>
{ADD | ALTER | DROP} <elemento [<definicion>]
Ejemplos: ALTER TABLE Botes
ADD Edad REAL;
ALTER TABLE Marineros
MODIFY rating REAL;
ALTER TABLE Distribuidores
DROP CONSTRAINT cons1;
ALTER TABLE Films
DROP COLUMN genero;
ALTER TABLE Botes
ADD CONSTRAINT con CHECK (edad<100);
9. Vistas
CREATE VIEW nombre_de_vista [<columnas>]
AS <expresion de consulta>
Hace la programacion simple
Algunas veces es usada para seguridad
No es instanciada- hace difíciles
los updates.
CREATE VIEW Rojos
AS SELECT B.bid, COUNT (*) AS scount
FROM Botes B, Reservacion R
WHERE R.bid=B.bid AND
B.color='rojo'
GROUP BY B.bid;
Utilizadas para aumentar las posibilidades de acceso a tablas
La expresión de consulta afecta a una o más tablas y su resultado
es compatible con la definición de columnas (si esta ha sido definida)
10. SELECT bnombre, scount
FROM Rojos R, Botes B
WHERE R.bid=B.bid
AND scount < 10
b.bid scount
102 1
Rojos
CREATE VIEW Rojos
AS SELECT B.bid, COUNT (*) AS scount
FROM Botes B, Reservacion R
WHERE R.bid=B.bid AND B.color='rojo'
GROUP BY B.bid;
Vistas en vez de Tablas en Queries
12. INSERT
INSERT INTO Botes VALUES ( 105, 'Clipper', 'purple');
INSERT INTO Botes (bid, color) VALUES (99, 'yellow');
También se puede realizar una “inserción masiva” de valores desde una tabla
a otra:
INSERT INTO Botes(bid)
SELECT r.bid FROM Reservacion r WHERE r.sid = 22;
(debe ser compatible por tipo)
INSERT [INTO] nombre_tabla [(lista_columna)]
VALUES ( lista_de_valores)
INSERT [INTO] nombre_tabla [(lista_columna)]
<select>
13. DELETE & UPDATE
DELETE FROM Botes WHERE color = 'red';
DELETE FROM Botes b
WHERE b. bid =
(SELECT r.bid FROM Reservacion r WHERE r.sid = 22);
También se pueden modificar tuplas usando UPDATE.
UPDATE Botes
SET color = 'green'
WHERE bid = 103;
DELETE [FROM] nombre_tabla
[WHERE clasificacion]
14. Transacciones
• Un problema puede surgir en la actualización de
información, supongamos que en el mismo
instante se realizan dos transacciones críticas
como transacciones financieras:
Se debe garantizar que un "deposito a cuenta" de
un cliente genere una "deducción de cuenta" a
otro. Que ocurre si se depositan $10,000 al
"usuario X", pero a la mitad de la transacción el
equipo de computo falla, y al "usuario Y" no se le
deducen los $10,000 ?
15. ACID
• En bases de datos se denomina ACID a un
conjunto de características necesarias para que
una serie de instrucciones puedan ser
consideradas como una transacción.
• ACID es un acrónimo de
Atomicity (Atomicidad)
Consistency (Consistencia)
Isolation (Aislamiento )
Durability (Durabilidad)
16. • Atomicidad: es la propiedad que asegura que la operación se ha
realizado o no, y por lo tanto ante un fallo del sistema no puede
quedar a medias.
• Consistencia: es la propiedad que asegura que sólo se empieza
aquello que se puede acabar. Por lo tanto se ejecutan aquellas
operaciones que no van a romper la reglas y directrices de
integridad de la base de datos.
• Aislamiento: es la propiedad que asegura que una operación no
puede afectar a otras. Esto asegura que la realización de dos
transacciones sobre la misma información sean independientes y
no generen ningún tipo de error.
• Durabilidad: es la propiedad que asegura que una vez realizada la
operación, ésta persistirá y no se podrá deshacer aunque falle el
sistema.
• Cumpliendo estas 4 condiciones se considera ACID Compliant
17. • Existen varios vendedores de Bases de Datos,pero
quizás la marca que tiene mayor mercado es
Oracle y en orden de uso posiblemente le sigan:
Sybase, Solid, Postgres ,MySql y DB2; todas
ofrecen las funcionalidades antes mencionadas y
utilizan el lenguaje SQL.
• Sin embargo, debido a la misma complejidad de
las operaciones que se llevan acabo, cada
vendedor utiliza diferentes algoritmos y diseños
por lo que el migrar y aprender a utilizar un
producto de cierta compañía requiere de un
esfuerzo e inversión substancial.
18. COMMIT
• Se refiere a la idea de hacer que un conjunto de
cambios "tentativos, o no permanentes" se
conviertan en permanentes.
• Un uso popular es al final de una transacción de
base de datos.
• En SQL finaliza una transacción de base de datos
dentro de un sistema gestor de base de datos
relacional (RDBMS) y pone visibles todos los
cambios a otros usuarios.
• El formato general es emitir una sentencia BEGIN
WORK, una o más sentencias SQL, y entonces la
sentencia COMMIT.
19. Oracle LOCK TABLE
• Bloquea una tabla o vista.
LOCK TABLE [esquema.] table [opciones] IN lockmode MODE [NOWAIT]
LOCK TABLE [esquema.] view [opciones] IN lockmode MODE [NOWAIT]
donde opciones: PARTITION, SUBPARTITION, @dblink
donde lockmodes: EXCLUSIVE, SHARE, ROW EXCLUSIVE, SHARE ROW
EXCLUSIVE ROW SHARE* | SHARE UPDATE*
• Si no ponemos NOWAIT Oracle esperará hasta que la tabla este
disponible.
• Se pueden bloquear varias tablas en un solo comando si las
escribimos separadas por comas.
LOCK TABLE tabla1,tabla2,tabla3 IN ROW EXCLUSIVE MODE;
20. Oracle COMMIT
• Libera los recursos bloqueados por cualquier
actualización hecha con la transacción actual
(LOCK TABLE).
• Por ejemplo:
DELETE FROM T_PEDIDOS WHERE
COD_PEDIDO=15;
COMMIT;
Borra un registro y guarda los cambios.
21. ROLLBACK
• Deshace los cambios de la transacción en curso.
• Libera los recursos bloqueados por cualquier
actualización hecha con la transacción actual
(LOCK TABLE).
• Por ejemplo:
DELETE FROM T_PEDIDOS WHERE
COD_PEDIDO=15;
ROLLBACK;
Borra un registro pero cancela los cambios. Queda
como si no hubiésemos hecho nada.
22. SAVEPOINT
• Sirve para marca un punto de referencia en la transacción
para hacer un ROLLBACK parcial.
• SAVEPOINT identificador;
• Un ejemplo es:
UPDATE T_PEDIDOS
SET NOMBRE='jorge'
WHERE CODPEDIDO=125;
SAVEPOINT solouno;
UPDATE T_PEDIDOS SET NOMBRE = 'jorge';
SAVEPOINT todos;
SELECT * FROM T_PEDIDOS;
ROLLBACK TO SAVEPOINT todos;
COMMIT;
• Solo guardamos la primera modificación.
23. Bloqueos por defecto
• Las sentencias del DML pueden producir bloqueos sobre las filas de
la tabla:
• Una sentencia SELECT normal no bloquea filas.
• Las sentencias INSERT, UPDATE o DELETE realiza un bloqueo ROW
EXCLUSIVE de las filas afectadas por el WHERE.
• La sentencia SELECT ... FOR UPDATE NOWAIT realiza un bloqueo
ROW EXCLUSIVE de las filas afectadas por el WHERE.
• Las sentencias COMMIT y ROLLBACK desbloquean las filas
bloqueadas anteriormente dentro de la transacción actual.
• Aunque una fila este bloqueada (por otra transacción), siempre
podemos hacer una SELECT sobre esa fila. Los valores retornados
son los anteriores al bloqueo.
• Las sentencias UPDATE Y DELETE pueden provocar o sufrir esperas
si hay conflictos con otra transacción.