SlideShare una empresa de Scribd logo
1 de 23
SQL
Data Definition Language
CREATE TABLE
• CREATE TABLE nombre_de_tabla
( { nombre_de_columna tipo_de_dato [ DEFAULT expr_default] [
restriccion_de_column [, ... ] ] | restriccion_de_tabla} [, ... ] )
• Tipos de Datos incluyen:
char (n) – cadena de caracteres de tamaño fijo
varchar2(n) – cadena de caracteres de tamaño variable (ahorra
espacio, Guarda 'SMITH' no 'SMITH ‘)
integer, numeric, float, double precision
date, time, timestamp, …
serial – ID unico para indexar y referencia
Create Table (con/restricciones de tabla)
• CREATE TABLE table_name
( { column_name data_type [ DEFAULT default_expr ] [
column_constraint [, ... ] ] | table_constraint } [, ... ] )
Restricciones de Tabla:
[ CONSTRAINT nombe_restriccion]
{ UNIQUE ( nombre_de_columna [, ... ] ) |
PRIMARY KEY (nombre_de_columna [, ... ] ) |
CHECK ( expresion ) |
FOREIGN KEY (nombre_de_columna [, ... ] ) REFERENCES
tablaref[ ( refcolumn [, ... ] ) ] [ ON DELETE accion ] [ ON
UPDATE accion ] }
Aqui, las expresiones, llaves, etc pueden incluir múltiples columnas
Create Table (Ejemplos)
CREATE TABLE films (
codigo CHAR(5) PRIMARY KEY,
titulo VARCHAR2(40),
did DECIMAL(3),
fecha_prod DATE,
genero VARCHAR(10),
CONSTRAINT production UNIQUE(fecha_prod),
FOREIGN KEY (did) REFERENCES distribuidores(did)
);
CREATE TABLE distribuidores(
did DECIMAL(3) PRIMARY KEY,
nombre VARCHAR2(40),
CONSTRAINT cons1 CHECK (did > 100 AND nombre <> ' ')
);
sid snombre rating edad
22 Dustin 7 45.0
31 Lubber 8 55.5
95 Bob 3 63.5
bid bnombre color
101 Interlake azul
102 Interlake rojo
103 Clipper verde
104 Marine rojo
sid bid dia
22 101 10/10/96
95 103 11/12/96
Reservacion
Marineros
Botes
Para estas tablas:
Esquemas de Ejemplo
CREATE TABLE Marineros
( sid INTEGER PRIMARY KEY,
snombre CHAR(20),
rating INTEGER,
edad REAL);
CREATE TABLE Botes
( bid INTEGER PRIMARY KEY,
bnombre CHAR (20),
color CHAR(10));
CREATE TABLE Reservacion
( sid INTEGER,
bid INTEGER,
dia DATE,
PRIMARY KEY (sid, bid, dia),
FOREIGN KEY (sid) REFERENCES Marineros,
FOREIGN KEY (bid) REFERENCES Botes);
Drop
• Instrucción para el borrado de un elemento:
DROP <elemento> <nombre>
• No tiene marcha atrás
• Ejemplos:
DROP TABLE films;
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);
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)
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
SQL
Data Manipulation Language
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>
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]
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 ?
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)
• 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
• 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.
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.
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;
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.
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.
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.
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.

Más contenido relacionado

La actualidad más candente

Comandos, sentencias, clausulas
Comandos, sentencias, clausulasComandos, sentencias, clausulas
Comandos, sentencias, clausulasGustavo Cortez
 
Triggers
TriggersTriggers
Triggersbdatos
 
Comandos dll en sql server
Comandos dll en sql serverComandos dll en sql server
Comandos dll en sql serverVicente Alberca
 
Taller de MySQL (DDL)
Taller de MySQL (DDL)Taller de MySQL (DDL)
Taller de MySQL (DDL)mgpc
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Sergio Sanchez
 
Sql comandos
Sql comandosSql comandos
Sql comandosJose
 
Comandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-lizComandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-lizBolivar Castillo
 
Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Salvador Ramos
 
05 Más comandos ddl
05 Más comandos ddl05 Más comandos ddl
05 Más comandos ddltoniserna
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datosLuis Bando
 
LENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADOLENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADOMinerva136
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysqlpolar
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)José Toro
 

La actualidad más candente (20)

Comandos, sentencias, clausulas
Comandos, sentencias, clausulasComandos, sentencias, clausulas
Comandos, sentencias, clausulas
 
Triggers
TriggersTriggers
Triggers
 
Comandos dll en sql server
Comandos dll en sql serverComandos dll en sql server
Comandos dll en sql server
 
Taller de MySQL (DDL)
Taller de MySQL (DDL)Taller de MySQL (DDL)
Taller de MySQL (DDL)
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
 
Sql comandos
Sql comandosSql comandos
Sql comandos
 
Comandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-lizComandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-liz
 
Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)
 
Consultas básicas en sql server
Consultas básicas en sql serverConsultas básicas en sql server
Consultas básicas en sql server
 
05 Más comandos ddl
05 Más comandos ddl05 Más comandos ddl
05 Más comandos ddl
 
SQL para IEDA
SQL para IEDASQL para IEDA
SQL para IEDA
 
Vistas en SQL
Vistas en SQLVistas en SQL
Vistas en SQL
 
Vistas
VistasVistas
Vistas
 
Cursores
CursoresCursores
Cursores
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datos
 
LENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADOLENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADO
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysql
 
Introducción a sql
Introducción a  sqlIntroducción a  sql
Introducción a sql
 
Vistas MySql
Vistas MySqlVistas MySql
Vistas MySql
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 

Destacado

Sentecias sql
Sentecias sqlSentecias sql
Sentecias sqlmyle22
 
ผังงาน
ผังงานผังงาน
ผังงานbenz127
 
07 restricciones en atributos
07 restricciones en atributos07 restricciones en atributos
07 restricciones en atributostoniserna
 
Tablas, Codigos De Base De Datos
Tablas, Codigos De Base De DatosTablas, Codigos De Base De Datos
Tablas, Codigos De Base De Datosguesta050b04
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sqlJulian Benavidez
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosMayra Romero
 

Destacado (8)

Sentecias sql
Sentecias sqlSentecias sql
Sentecias sql
 
Sql3
Sql3Sql3
Sql3
 
ผังงาน
ผังงานผังงาน
ผังงาน
 
07 restricciones en atributos
07 restricciones en atributos07 restricciones en atributos
07 restricciones en atributos
 
Diapositivas sql.
Diapositivas sql.Diapositivas sql.
Diapositivas sql.
 
Tablas, Codigos De Base De Datos
Tablas, Codigos De Base De DatosTablas, Codigos De Base De Datos
Tablas, Codigos De Base De Datos
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sql
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 

Similar a Sql2

Commit y rollback
Commit y rollbackCommit y rollback
Commit y rollbacklinis129
 
Trabajo grupal - Base de Datos
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de DatosMIROSLAVY
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)felpe33
 
Administración de base de datos oracle - sesion 11
Administración de base de datos oracle  -  sesion 11Administración de base de datos oracle  -  sesion 11
Administración de base de datos oracle - sesion 11Sefira111
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionSergio Perez
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosJosé Antonio Sandoval Acosta
 
Administración de Oracle - Tema 4 - Interacción con la Base de Datos
Administración de Oracle - Tema 4 - Interacción con la Base de DatosAdministración de Oracle - Tema 4 - Interacción con la Base de Datos
Administración de Oracle - Tema 4 - Interacción con la Base de DatosHector Martinez
 
SQL Server rápido y furioso
SQL Server rápido y furiosoSQL Server rápido y furioso
SQL Server rápido y furiosoSpanishPASSVC
 
TEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdfTEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdfalukardconde1
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query languageInés Rosero
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query languageDoris Aguagallo
 
6 150113092523-conversion-gate01
6 150113092523-conversion-gate016 150113092523-conversion-gate01
6 150113092523-conversion-gate01Dyego de Alvaro
 

Similar a Sql2 (20)

Commit y rollback
Commit y rollbackCommit y rollback
Commit y rollback
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Trabajo grupal - Base de Datos
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de Datos
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
 
Taller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DMLTaller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DML
 
S ti ci_v1_201302
S ti ci_v1_201302S ti ci_v1_201302
S ti ci_v1_201302
 
Administración de base de datos oracle - sesion 11
Administración de base de datos oracle  -  sesion 11Administración de base de datos oracle  -  sesion 11
Administración de base de datos oracle - sesion 11
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De Definicion
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
Administración de Oracle - Tema 4 - Interacción con la Base de Datos
Administración de Oracle - Tema 4 - Interacción con la Base de DatosAdministración de Oracle - Tema 4 - Interacción con la Base de Datos
Administración de Oracle - Tema 4 - Interacción con la Base de Datos
 
Presentación1
Presentación1Presentación1
Presentación1
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Sq lite
Sq liteSq lite
Sq lite
 
SQL Server rápido y furioso
SQL Server rápido y furiosoSQL Server rápido y furioso
SQL Server rápido y furioso
 
103305862 t-sql
103305862 t-sql103305862 t-sql
103305862 t-sql
 
t-sql
t-sqlt-sql
t-sql
 
TEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdfTEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdf
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query language
 
6. sql structured query language
6. sql   structured query language6. sql   structured query language
6. sql structured query language
 
6 150113092523-conversion-gate01
6 150113092523-conversion-gate016 150113092523-conversion-gate01
6 150113092523-conversion-gate01
 

Más de vanessaicm (11)

Sql4
Sql4Sql4
Sql4
 
Sql1
Sql1Sql1
Sql1
 
Sql1 2
Sql1 2Sql1 2
Sql1 2
 
7 ar
7 ar7 ar
7 ar
 
6 n2
6 n26 n2
6 n2
 
5 n
5 n5 n
5 n
 
4 ml
4 ml4 ml
4 ml
 
3 mcr
3 mcr3 mcr
3 mcr
 
2 mc
2 mc2 mc
2 mc
 
8 ar2
8 ar28 ar2
8 ar2
 
1 intro
1 intro1 intro
1 intro
 

Sql2

  • 2. CREATE TABLE • CREATE TABLE nombre_de_tabla ( { nombre_de_columna tipo_de_dato [ DEFAULT expr_default] [ restriccion_de_column [, ... ] ] | restriccion_de_tabla} [, ... ] ) • Tipos de Datos incluyen: char (n) – cadena de caracteres de tamaño fijo varchar2(n) – cadena de caracteres de tamaño variable (ahorra espacio, Guarda 'SMITH' no 'SMITH ‘) integer, numeric, float, double precision date, time, timestamp, … serial – ID unico para indexar y referencia
  • 3. Create Table (con/restricciones de tabla) • CREATE TABLE table_name ( { column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ] | table_constraint } [, ... ] ) Restricciones de Tabla: [ CONSTRAINT nombe_restriccion] { UNIQUE ( nombre_de_columna [, ... ] ) | PRIMARY KEY (nombre_de_columna [, ... ] ) | CHECK ( expresion ) | FOREIGN KEY (nombre_de_columna [, ... ] ) REFERENCES tablaref[ ( refcolumn [, ... ] ) ] [ ON DELETE accion ] [ ON UPDATE accion ] } Aqui, las expresiones, llaves, etc pueden incluir múltiples columnas
  • 4. Create Table (Ejemplos) CREATE TABLE films ( codigo CHAR(5) PRIMARY KEY, titulo VARCHAR2(40), did DECIMAL(3), fecha_prod DATE, genero VARCHAR(10), CONSTRAINT production UNIQUE(fecha_prod), FOREIGN KEY (did) REFERENCES distribuidores(did) ); CREATE TABLE distribuidores( did DECIMAL(3) PRIMARY KEY, nombre VARCHAR2(40), CONSTRAINT cons1 CHECK (did > 100 AND nombre <> ' ') );
  • 5. sid snombre rating edad 22 Dustin 7 45.0 31 Lubber 8 55.5 95 Bob 3 63.5 bid bnombre color 101 Interlake azul 102 Interlake rojo 103 Clipper verde 104 Marine rojo sid bid dia 22 101 10/10/96 95 103 11/12/96 Reservacion Marineros Botes Para estas tablas:
  • 6. Esquemas de Ejemplo CREATE TABLE Marineros ( sid INTEGER PRIMARY KEY, snombre CHAR(20), rating INTEGER, edad REAL); CREATE TABLE Botes ( bid INTEGER PRIMARY KEY, bnombre CHAR (20), color CHAR(10)); CREATE TABLE Reservacion ( sid INTEGER, bid INTEGER, dia DATE, PRIMARY KEY (sid, bid, dia), FOREIGN KEY (sid) REFERENCES Marineros, FOREIGN KEY (bid) REFERENCES Botes);
  • 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.