1 / 21

Agenda

Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy. Agenda. Modificando la instancia. DML Sentencias. Agenda. INSERT UPDATE DELETE TRANSACCIONES. DML Sentencias. Agenda. Modificando la instancia. DML

zofia
Download Presentation

Agenda

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Maestría en BioinformáticaBases de Datos y Sistemas de InformaciónSQL: DMLIng. Alfonso Vicente, PMPalfonso.vicente@logos.com.uy

  2. Agenda • Modificando la instancia DML Sentencias

  3. Agenda • INSERT • UPDATE • DELETE • TRANSACCIONES DML Sentencias

  4. Agenda • Modificando la instancia DML Sentencias

  5. DML • Modificando la instancia • Con el Data DefinitionLanguage (DDL) creamos y modificamos el esquema (o estructura) de la base • Con el Data Manipulation Language (DML) modificamos la instancia, esdecir: insertamos, modificamos y eliminamostuplas en lastablas • Veremos los comandos INSERT, UPDATE y DELETE de forma muysimplificada • Puedensurgirerroresporintentarviolarcualquier constraint definida: Tipo de datos, NOT NULL, CHECK, PK, UK o FK

  6. Agenda • INSERT • UPDATE • DELETE • TRANSACCIONES DML Sentencias

  7. Sentencias • INSERT • Permite insertar nuevas tuplas en una tabla existente • INSERT INTO <nombre_tabla> (col1, col2, ..., colN) • VALUES (val1, val2, ..., valN); • Ejemplo: • INSERT INTO elementos (simbolo, nombre) • VALUES ('H', 'Hidrogeno'); • INSERT INTO moleculas (nombre, carga) • VALUES ('Agua', 0); • INSERT INTO elementos_molecula (elemento, molecula, numero) • VALUES ('H', 'Agua', 2);

  8. Sentencias • INSERT • Si se omite el nombre de una columna, se insertará NULL en esa columna • Si no se especifican las columnas, se asume que en la cláusula VALUES vendrán los valores para todas las columnas en el orden en que fueron definidas en la tabla • Se considera una buena práctica especificar siempre las columnas en el INSERT • Habrá valores nuevos donde antes no había: el RDBMS debe verificar la integridad

  9. Sentencias • INSERT • Ejemplos de error • SQL> desc elementos • NameNull? Type • ------------------------ -------- ---------------------------- • SIMBOLO NOT NULL CHAR(2) • NOMBRE NOT NULL VARCHAR2(20) • NUMERO_ATOMICO NUMBER(10,2) • SQL> insertinto elementos values ('He', null, null); • insertinto elementos values ('He', null, null) • * • ERROR at line 1: • ORA-01400: cannotinsert NULLinto ("ALFONSO"."ELEMENTOS"."NOMBRE")

  10. Sentencias INSERT SQL> insertinto elementos values ('He', 'Helio', 'desconozco'); insertinto elementos values ('He', 'Helio', 'desconozco') * ERROR at line 1: ORA-01722: invalidnumber SQL> insertinto elementos values ('H', 'Hidrogeno', 1); insertinto elementos values ('H', 'Hidrogeno', 1) * ERROR at line 1: ORA-00001: uniqueconstraint(ALFONSO.SYS_C0029000) violated SQL> insertintoelementos_moleculavalues ('C', 'Metano', 1); insertintoelementos_moleculavalues ('C', 'Metano', 1) * ERROR at line 1: ORA-02291: integrityconstraint(ALFONSO.FK_MOLECULAS_ELEMENTOS) violated - parentkeynotfound

  11. Sentencias • UPDATE • Permite modificar tuplas existentes en una tabla existente • UPDATE <nombre_tabla> • SET col1 = val1, col2 = val2, ..., colN = valN • WHERE <predicado>; • Ejemplo: • UPDATE elementos • SET nombre = 'Hidrógeno‘ • WHERE nombre = 'Hidrogeno‘;

  12. Sentencias • UPDATE • Todas las tuplas que cumplen el predicado se modifican con los valores del set • El predicado (por ahora) debe versar sobre las columnas de la tabla, y puede contener: • Comparaciones simples: =, <, >, <> • Comparaciones por rango: between • Expresiones regulares: like • Comparación con null: isnull, isnotnull • Expresiones lógicas: AND, OR, NOT

  13. Sentencias • UPDATE • Como en el INSERT, pueden ocurrir errores porque habrá valores nuevos donde antes no había, pero además, valores que existen pueden dejar de existir • Un UPDATE podría modificar el padre de una FK definida con la cláusula “ON UPDATE RESTRICT” • SQL> update elementos set simbolo = 'Z' wheresimbolo = 'H'; • update elementos set simbolo = 'Z' wheresimbolo = 'H' • * • ERROR at line 1: • ORA-02292: integrityconstraint(ALFONSO.FK_MOLECULAS_ELEMENTOS) violated - child record found

  14. Sentencias • DELETE • Permite eliminar tuplas de una tabla existente • DELETE FROM <nombre_tabla> • WHERE <predicado>; • Ejemplo: • DELETE FROM elementos WHERE simbolo = 'H'; • DELETE FROM movimientos WHERE fecha_mov < '15/05/2002'; • Posibilidad de integrityconstraintviolated - child record found en FKs con la cláusula “ON DELETE RESTRICT”

  15. Sentencias • UPDATE y DELETE • Cuidado con los predicados: un predicado mal escrito puede modificar (o eliminar) tuplas que no se pretendían modificar (o eliminar) • El predicado vacío se evalúa TRUE para todas las tuplas ! • UPDATE elementos set simbolo = 'H'; • DELETE FROM elementos; • ¿Qué hacemos si nos equivocamos?

  16. Sentencias • TRANSACCIONES • Los RDBMS implementan transacciones ACID • Atomicity (se hacen en su totalidad o no se hacen) • UPDATE cuentas set saldo = saldo-500 where cuenta = 15263; • UPDATE cuentas set saldo = saldo+500 where cuenta = 9935; • INSERT INTO transferencias (fecha, desde, hacia, monto) • VALUES (SYSDATE, 15263, 9935, 500); • COMMIT; -- Aquí se confirma la transacción

  17. Sentencias • TRANSACCIONES • Los RDBMS implementan transacciones ACID • Consistency (cualquier intento de violar una constraint termina en un error) • Isolation (mientras la transacción no se confirmó mediante COMMIT nadie más ve los datos intermedios y las transacciones no se afectan unas a otras) • Durability (después del COMMIT los cambios perduran)

  18. Sentencias • TRANSACCIONES • ¿Qué sucede si nos equivocamos u obtenemos un error? • SQL> createtable cuentas ( • 2 cuenta integernotnullprimarykey, • 3 saldo number(10, 2) notnull • 4 ); • Tablecreated. • SQL> alter table cuentas addconstraintcheck_saldo_positivo • 2 check ( saldo >= 0); • Tablealtered. • SQL> insertinto cuentas values (15263, 400); • 1 rowcreated. • SQL> commit; • Commit complete.

  19. Sentencias • TRANSACCIONES • ¿Qué sucede si nos equivocamos u obtenemos un error? • SQL> UPDATE cuentas set saldo = saldo-500 where cuenta = 15263; • UPDATE cuentas set saldo = saldo-500 where cuenta = 15263 • * • ERROR at line 1: • ORA-02290: checkconstraint(ALFONSO.CHECK_SALDO_POSITIVO) violated • No podemos continuar la transacción • SQL> rollback; • Rollback complete.

  20. Sentencias • TRANSACCIONES • Algunos RDBMSs tienen un modo autocommit, donde cada sentencia termina con un commit implícito • Todos tienen el modo opuesto, donde hay transacciones • Las transacciones comienzan / terminan: • Al iniciar la sesión • Al ejecutar commit / rollback • Al ejecutar DDLs o algunos comandos (según RDBMS) • Al terminar la sesión

  21. Sentencias • LOCKING • Es la forma general de lograr Isolation, cuando hay competencia por los mismos recursos

More Related