Manipulación de Datos. Copyright Oracle Corporation, 1998. All rights reserved.



Documentos relacionados
Interacción con el Servidor Oracle8. Copyright Oracle Corporation, All rights reserved.

Creación de Vistas. Copyright Oracle Corporation, All rights reserved.

Constraints (Restricciones) Copyright Oracle Corporation, All rights reserved.

Escritura Básica de Sentencias SQL. Copyright Oracle Corporation, All rights reserved.

Manipulando Datos. y Transacciones

Subconsultas Multi-Columna. Copyright Oracle Corporation, All rights reserved.

Restricción y Clasificación de los Datos. Copyright Oracle Corporation, All rights reserved.

Creación y Gestión de Tablas. Copyright Oracle Corporation, All rights reserved.

Oracle Database 11g: Conceptos Fundamentales de SQL y PL/SQL Nuevo

Ampliación de Bases de Datos Práctica 1: El lenguaje PL/SQL de Oracle Sesión 1: Introducción al PL/SQL

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP

Informática Básica Práctica Tema 3 Ejercicios de SQL

Lenguaje de manipulación de datos

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

2. Distinguir entre los comandos SQL*Plus y las sentencias SQL. 3. Consultar la estructura de una tabla, por ejemplo emp.

Bases de Datos Ejercicios de SQL

Oracle Database: Conceptos Básicos de SQL y PL/SQL

Unidad. Lenguaje SQL. (Structured Query Language)

Visualización de Datos a partir de Varias Tablas. Copyright Oracle Corporation, All rights reserved.

Ejercicios SQL - Select TutorialesNET Versión Revisión 1 25 de julio de 2015

6.1. Introducción. Guía 5. SQL.

Subconsultas. Copyright Oracle Corporation, All rights reserved.

Tema 4. Manipulación de datos con SQL

departamento NUMBER(3) FK (DEPARTAMENTOS.CODIGO) salario NUMBER(3) NOT NULL fecha_alta DATE NOT NULL jefe NUMBER(5) FK (EMPLEADOS.

Diseño de bases de datos Práctica-1 Definición de datos

Escribiendo sentencias básicas de SQL

Conceptos de Bases de Datos Relacionales Triggers

Bases de Datos Relacionales III

3. El catálogo 26. Laboratorio de Bases de Datos

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

Características del lenguaje SQL

Conceptos Avanzados de Cursores Explícitos. Copyright Oracle Corporation, All rights reserved.

Oracle Fundamentos. Programa de Estudio.

Bases de Datos I Práctica 1 Ejercicios de SQL

Objetos de Bases de Datos

Oracle Database 10g: Conceptos Básicos de SQL y PL/SQL

ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Revista Electrónica Granma Ciencia. Vol.10, No.2, Mayo - Agosto de 2006 ISSN X

Tema 5. Lenguaje de Definición de Datos

A. Introducción. B. Los DATABASES TRIGGERS. PL/SQL en objetos de la base de datos. Oracle 11g - SQL, PL/SQL, SQL*Plus 271

Introducción a SQL. Bloque III (Prácticas) Informática Básica - Curso 2010/2011

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS

BASES DE DATOS 2º CURSO E.U.I. / F.I. Práctica 4: Estudio del SGBD ORACLE8 1 Gestión de transacciones 22 DE MAYO DE 2000

Triggers en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

1. DML. Insertar datos

Recuperar datos de filas y columnas de las tablas con la Ejecutar sentencias de manipulación de datos (DML) para a Buscar datos mediante subconsultas

Oracle Database 12c SQL and PLSQL Fundamentals

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

Oracle Database 10g: Introducción a SQL

Tema: DISPARADORES (TRIGGERS)

Funciones a Nivel de Fila. Copyright Oracle Corporation, All rights reserved.

Diseño de bases de datos

Cursores Explícitos. Copyright Oracle Corporation, All rights reserved.

ÍNDICE INTRODUCCIÓN...13

Sistemas de Bases de Datos II ITS / ITSB EMT CETP

ÍNDICE PRIMERA PARTE... 17

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Oracle Database: Introducción a SQL

Está basado en el álgebra y en el cálculo relacional.

Tema: Respaldo y recuperación/ uso de asistentes

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

20461 Consultas en Microsoft SQL Server 2014

Usando los operadores SET (Conjunto)

Manual de Sentencias Básicas en SQL

Introducción al lenguaje SQL

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

Triggers 24/12/2016. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

APÉNDICE D. INTRODUCCIÓN A SQL

Tutorial de SQL - El comando SELECT

Tema: Respaldo y recuperación

ACTUALIZACIÓN DE DATOS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

REGLAS DE CODD DEL MODELO RELACIONAL

BASES DE DATOS AVANZADAS Transacciones en MYSQL

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

SQL Server Definición de los índices

Manejo de Tablas y Llaves Foráneas

Introducción. Definición. Definición 17/12/2011. Unidad 7 Elaboración de consultas básicas de selección.

Claves, Constraints y References. Ing. Gustavo Delgado

Base de Datos Oracle 10g: Introducción a SQL

Creación de una Base de datos

Terminología Equivalente

A.1. Definiciones de datos en SQL

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Sentencias Ejecutables. Copyright Oracle Corporation, All rights reserved.

SQL Los fundamentos del lenguaje

PROCEDIMIENTOS ALMACENADOS

TRIGGER LEONEL CADOSO ROMERO 1

Declaración de Variables. Copyright Oracle Corporation, All rights reserved.

Práctica 4: Estudio del SGBD Oracle 10 Gestión de Transacciones

Bases de datos 1. Teórico: Modelo Relacional

Modificación de datos

Uso de sentencias para el envió y extracción de datos

MANUAL BÁSICO DEL LENGUAJE SQL

Bases de Datos Ejercicio Número 2 Bogotá, Diciembre 5 de 2013

Diseña y Administra Bases de Datos Guía de Estudio

Datos Agregados por medio de Funciones de Grupo. Copyright Oracle Corporation, All rights reserved.

Transcripción:

9 Manipulación de Datos Copyright Oracle Corporation, 1998. All rights reserved.

Objetivos Al completar esta lección, debería a ser capaz de hacer lo siguiente: Describir cada sentencia DML Insertar filas nuevas en una tabla. Modificar filas de una tabla. Eliminar filas de una tabla. Explicar el control de transacciones y su importancia. 9-2 Copyright Oracle Corporation, 1998. All rights reserved.

El Lenguaje de Manipulación de Datos Una sentencia DML se ejecuta cuando: Añade nuevos registros a una tabla Modifica registros existentes Elimina registros existentes Una transacción consiste en una colección de sentencias DML que forman una unidad lógica de trabajo. 9-3 Copyright Oracle Corporation, 1998. All rights reserved.

Añadir un Nuevo Registro a una Tabla 50 DEVELOPMENT DETROIT Nuevo Registro DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON insertar un nuevo registro en la tabla DEPT... DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 9-4 Copyright Oracle Corporation, 1998. All rights reserved.

La Sentencia INSERT Añadimos nuevos registros a una tabla, por medio de la sentencia INSERT. INSERT INTO VALUES table [(column [, [, column...])] (value [, [, value...]); Mediante esta sintaxis, sólo se inserta un registro al mismo tiempo. 9-5 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Nuevos Registros Insertar una nueva fila conteniendo los valores para cada columna. Opcionalmente, se pueden listar las columnas en la cláusula INSERT. SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (50, 'DEVELOPMENT', 'DETROIT'); 1 row created. Colocar los valores en el orden que las columnas tienen en la tabla por defecto. Encerrar los valores de datos de tipo carácter cter y fecha entre comillas simples. 9-6 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Registros con Valores Nulos Método Implícito: Omitir la columna en la lista. SQL> INSERT INTO dept (deptno, dname ) 2 VALUES (60, 'MIS'); 1 row created. Método Explícito: Especificar la palabra clave NULL o el string vacío o ('') en la lista de VALUES. SQL> INSERT INTO dept 2 VALUES (70, 'FINANCE', NULL); 1 row created. 9-7 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Valores Especiales La función n SYSDATE registra la fecha y hora actual. SQL> INSERT INTO emp (empno, ename, job, 2 mgr, hiredate, sal, comm, 3 deptno) 4 VALUES (7196, 'GREEN', 'SALESMAN', 5 7782, SYSDATE, 2000, NULL, 6 10); 1 row created. 9-8 Copyright Oracle Corporation, 1998. All rights reserved.

Insertando Valores de Fecha Específicos Añadimos un nuevo empleado: SQL> INSERT INTO emp 2 VALUES (2296,'AROMANO','SALESMAN',7782, 3 TO_DATE('FEB 3,97', 'MON DD, YY'), 4 1300, NULL, 10); 1 row created. Verificamos la inserción: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ------- -------- ---- --------- ---- ----- ----- 2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10 9-9 Copyright Oracle Corporation, 1998. All rights reserved.

Inserción de Valores por medio de Variables de Sustitución Creamos un script interactivo usando parámetros de sustitución n de SQL*Plus: SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (&department_id, 3 '&department_name', '&location'); Enter value for department_id: 80 Enter value for department_name: EDUCATION Enter value for location: ATLANTA 1 row created. 9-10 Copyright Oracle Corporation, 1998. All rights reserved.

Creación de un Script con PROMPTS Específicos ACCEPT almacena el valor en una var. PROMPT visualiza el texto especificado. ACCEPT department_id PROMPT 'Please enter the - department number:' ACCEPT department_name PROMPT 'Please enter - the department name:' ACCEPT location PROMPT 'Please enter the - location:' INSERT INTO dept (deptno, dname, loc) VALUES (&department_id, '&department_name', &location); 9-11 Copyright Oracle Corporation, 1998. All rights reserved.

Copiando Registros de Otra Tabla Escribir el comando INSERT con una subconsulta (subquery( subquery). SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECT empno, ename, sal, hiredate 3 FROM emp 4 WHERE job = 'MANAGER'; 3 rows created. No usar la cláusula VALUES. Observar que coincida el número n de columnas en la cláusula INSERT con las de la subconsulta. 9-12 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de Datos en una Tabla EMP EMPNO ENAME JOB... DEPTNO 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20... Modificaci Modificación n de un registro en la Tabla EMP EMP EMPNO ENAME JOB... DEPTNO 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 20 10 7566 JONES MANAGER 20... 9-13 Copyright Oracle Corporation, 1998. All rights reserved.

La Sentencia UPDATE Modificamos registros existentes con la sentencia UPDATE UPDATE table SET column = value [, [, column = value] [WHERE condition]; Puede afectar a más de un registro al mismo tiempo. 9-14 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de Registros en una Tabla Los registros a modificar se especifican por medio de la cláusula WHERE SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782; 1 row updated. Si se omite la cláusula WHERE se modificarían todos los registros de la tabla. SQL> UPDATE employee 2 SET deptno = 20; 14 14 rows updated. 9-15 Copyright Oracle Corporation, 1998. All rights reserved.

Proceso de Modificación con Subconsultas Multi-Columna Modificar el oficio y departamento del empleado 7698, con los valores correspondientes actualmente al empleado 7499: SQL> UPDATE emp 2 SET (job, deptno) = 3 (SELECT job, deptno 4 FROM emp 5 WHERE empno = 7499) 6 WHERE empno = 7698; 1 row updated. 9-16 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de Registros Basados en Otra Tabla Utilice subconsultas en sentencias UPDATE, para modificar registros de una tabla, basados en valores de otra tabla. SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7788) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7788); 2 rows updated. 9-17 Copyright Oracle Corporation, 1998. All rights reserved.

Modificación de Registros: Error de Integridad (Constraints) SQL> UPDATE emp 2 SET deptno = 55 55 3 WHERE deptno = 10; UPDATE emp * ERROR at at line 1: 1: ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found El El Departamento Departamento número 55 55 no no existe existe 9-18 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de Registros de una Tabla DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS... Borramos un registro de la tabla DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS... 9-19 Copyright Oracle Corporation, 1998. All rights reserved.

La Sentencia DELETE Puede eliminar registros existentes de una tabla, por medio de la sentencia DELETE. DELETE [FROM] table [WHERE condition]; 9-20 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de Registros de una Tabla Los registros a eliminar se especifican por medio de la cláusula WHERE SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted. Si omite la cláusula WHERE se borrarán todos los registros de la tabla SQL> DELETE FROM department; 4 rows deleted. 9-21 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de Registros Basados en Otra Tabla Utilice subconsultas en sentencias DELETE, para eliminar registros de una tabla, basados en valores de otra tabla. SQL> DELETE FROM employee 2 WHERE deptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES'); 6 rows deleted. 9-22 Copyright Oracle Corporation, 1998. All rights reserved.

Eliminación de Registros: Error de Integridad (Constraints) SQL> DELETE FROM dept 2 WHERE deptno = 10; DELETE FROM dept * ERROR at at line 1: 1: ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found No No No puede puede puede eliminar eliminar eliminar un un un registro registro registro que que que contiene contiene contiene una una una clave clave clave primaria, primaria, primaria, usada usada usada como como como clave clave clave externa externa externa en en en otra otra otra tabla tabla tabla 9-23 Copyright Oracle Corporation, 1998. All rights reserved.

Transacciones en la Base de Datos Contienen una de las siguientes sentencias: Sentencias DML que deciden un cambio consistente sobre los datos Una sentencia DDL Una sentencia DCL 9-24 Copyright Oracle Corporation, 1998. All rights reserved.

Transacciones en la Base de Datos Comienzan cuando se ejecuta el primer comando SQL. Finalizan con uno de los siguientes eventos: COMMIT o ROLLBACK. Ejecución de un comando DDL o DCL (commit automático). Errores, salida o caída del sistema. 9-25 Copyright Oracle Corporation, 1998. All rights reserved.

Ventajas de COMMIT y ROLLBACK Aseguran la consistencia de los datos. Pueden visualizar los cambios sobre los datos antes de hacerlos permanentes. Agrupan lógicamente l tareas relacionadas entre sí. s 9-26 Copyright Oracle Corporation, 1998. All rights reserved.

Control de Transacciones Transacción INSERT UPDATE INSERT DELETE COMMIT Savepoint A Savepoint B ROLLBACK to Savepoint B ROLLBACK to Savepoint A ROLLBACK 9-27 Copyright Oracle Corporation, 1998. All rights reserved.

Proceso Implícito de Transacciones Un commit automático tico ocurre bajo una de las siguientes circunstancias: Se emite un comando DDL, tal como CREATE. Se emite un comando DCL, tal como GRANT. Una salida normal desde SQL*Plus, sin realizar un COMMIT o ROLLBACK explícitamente. Un rollback automático tico ocurre bajo una terminación n anormal de SQL*Plus o una falla del sistema. 9-28 Copyright Oracle Corporation, 1998. All rights reserved.

Estado de los Datos Antes de COMMIT o ROLLBACK El estado previo de los datos puede ser recuperado porque el afectado es el búfer b de la base de datos. El usuario actual puede revisar los resultados de sus operaciones DML usando la sentencia SELECT. Otros usuarios no pueden ver los resultados de las sentencias DML ejecutadas por el usuario actual. Las filas afectadas son bloqueadas (locked)( locked); otros usuarios no pueden cambiar los datos pertenecientes a esas filas. 9-29 Copyright Oracle Corporation, 1998. All rights reserved.

Estado de los Datos Después del COMMIT Los cambios en los datos son escritos en la base de datos. Los datos anteriores se pierden definitivamente. Todos los usuarios pueden ver los resultados. Se liberan los bloqueos aplicados a las filas afectadas; esas filas están n ahora disponibles para que otros usuarios las usen. Se borran todos los savepoints. 9-30 Copyright Oracle Corporation, 1998. All rights reserved.

Commit de Datos Realizar los cambios: SQL> UPDATE emp 2 SET deptno = 10 10 3 WHERE empno = 7782; 1 row updated. Hacer Commit de los cambios: SQL> COMMIT; Commit complete. 9-31 Copyright Oracle Corporation, 1998. All rights reserved.

Estado de los Datos Después de Hacer ROLLBACK Se descartan todos los cambios pendientes. Los cambios en los datos se deshacen. Se restaura el estado previo de los datos. Se levantan todos los bloqueos sobre las filas afectadas. SQL> DELETE FROM 14 rows deleted. SQL> ROLLBACK; Rollback complete. employee; 9-32 Copyright Oracle Corporation, 1998. All rights reserved.

Hacer ROLLBACK Hasta un Punto de Salvaguarda (Marca) Crear una marca dentro de una transacción usando el comando SAVEPOINT (marca). Hacer un rollback hacia la marca usando el comando ROLLBACK TO SAVEPOINT. SQL> UPDATE... SQL> SAVEPOINT update_done; Savepoint created. SQL> INSERT... SQL> ROLLBACK TO update_done; Rollback complete. 9-33 Copyright Oracle Corporation, 1998. All rights reserved.

Rollback a Nivel de Sentencia Si una única sentencia DML falla durante su ejecución, entonces se hace rollback sobre esa sentencia solamente. Oracle8 implementa una marca de seguridad o savepoint implícito. Todos los otros cambios se mantienen. El usuario debería a terminar explícitamente las transacciones usando una sentencia COMMIT o ROLLBACK. 9-34 Copyright Oracle Corporation, 1998. All rights reserved.

Consistencia en Lectura La consistencia en lectura garantiza una vista consistente de los datos en cualquier circunstancia. Los cambios realizados por otro usuario no crean conflictos con los cambios realizados por otro usuario. Asegura que sobre los mismos datos: Las lecturas no esperan a las escrituras y viceversa. 9-35 Copyright Oracle Corporation, 1998. All rights reserved.

Implementación de la Consistencia en Lectura Usuario A update emp set sal = 2000 where ename = 'SCOTT' Bloques de Datos Segmentos de Rollbck Usuario B select * from emp Imagen Consistente en Lectura Datos cambiados y no cambiados Antes de cambiar los datos antiguos 9-36 Copyright Oracle Corporation, 1998. All rights reserved.

Bloqueos Bloqueos en Oracle8: Previenen la intereacción destructiva entre transacciones concurrentes No requieren acciones por parte del usuario Automáticamente utilizan el nivel más bajo de restricción Se mantienen mientras dura la transacción Tienen básicamente dos modos: Exclusive (exclusivos) Shared (compartidos) 9-37 Copyright Oracle Corporation, 1998. All rights reserved.

Resumen Comando INSERT UPDATE DELETE COMMIT SAVEPOINT ROLLBACK Descripción Agrega una fila nueva a la tabla. Modifica filas de una tabla. Elimina filas de una tabla. Hace permanentes todos los cambios pendientes. Permite hacer un rollback hasta la marca de savepoint. Descarta todos los cambios pendientes de los datos. 9-38 Copyright Oracle Corporation, 1998. All rights reserved.

Visión General de la Práctica Insertar filas en tablas. Actualizar y eliminar filas en tablas. Controlar transacciones. 9-39 Copyright Oracle Corporation, 1998. All rights reserved.