UNIDAD III LENGUAJE DE MANUPULACION DE DATOS

3.1 Inserción, eliminación y modificación de registros.
INSERT
La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia tiene como sintaxis genérica.

INSERT INTO tabla_o_vista [(lista_de_columnas)] VALUES (lista_de_valores_de_datos)

Para insertar datos en una relación, se específica la tupla que se desea insertar o se formula una consulta cuyo resultado sea el conjunto de tuplas que se desea insertar. Obviamente, los valores de los atributos de las tuplas que se inserten deben pertenecer al dominio de los atributos. De igual modo, las tuplas insertadas deben ser de la aridad -número de atributos- correcta. Considere el siguiente Diagrama Entidad Relación y su correspondiente script Oracle. Considere el siguiente Diagrama Entidad Relación y su correspondiente script Oracle

?

jefe NUMBER(3). 'Xalapa'. rfc CHAR(14). CONSTRAINT DOM_Empleado_Salario CHECK ( salario > 0 ). CONSTRAINT FK_Empleado_Jefe FOREIGN KEY (jefe) REFERENCES Empleado. nombreEmpleado CHAR(40) NOT NULL. ingreso DATE NOT NULL. CONSTRAINT FK_Empleado FOREIGN KEY (idDepartamento) REFERENCES Departamento. CREATE TABLE empleado( idEmpleado NUMBER(3). Considere los siguientes datos Tabla: Departamento idDepartamento Departamento Ciudad 1 2 3 4 5 6 Ventas Ventas Cobranza Cobranza Credito Credito Veracruz Xalapa Veracruz Xalapa Orizaba Veracruz . CONSTRAINT DOM_Empleado_NombreEmpleado CHECK (nombreEmpleado = NLS_UPPER(nombreEmpleado)) ).1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 CREATE TABLE departamento ( idDepartamento NUMBER(3). 'Regional')).2). ciudad CHAR(10) NOT NULL. 'Orizaba'. salario NUMBER(10. CONSTRAINT PK_Departamento PRIMARY KEY (idDepartamento) ).2). CONSTRAINT DOM_Ciudad CHECK (ciudad IN ('Veracruz'. nombre CHAR(15) NOT NULL. CONSTRAINT PK_Empleado PRIMARY KEY (idEmpleado). idDepartamento NUMBER(3) NOT NULL. cargo CHAR(15) NOT NULL. comision NUMBER(10. oficio CHAR(11) NOT NULL. CONSTRAINT AK_Empleado UNIQUE (rfc).

nombreempleado. columna2. (5. Otra forma de usar la sentecia INSERT es: INSERT INTO nombre-tabla (columna1. idDepartamento) .'Xalapa').) VALUES (valor1. comision. Es necesario que por lo menos se asignen valores a todas aquellas columnas que no admiten valores nulos en la tabla (NOT NULL).'Veracruz'). ingreso. El orden en el que se asignen los valores en la cláusula VALUES tiene que coincidir con el orden en que se definieron las columnas en la creación del objeto tabla. (6.'Veracruz').).'Credito'.. (7.'Cobranza'.'Ventas'. rfc. Por ejemplo: INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO departamento departamento departamento departamento departamento departamento departamento VALUES VALUES VALUES VALUES VALUES VALUES VALUES (1. dado que los valores se asignan por posicionamiento relativo. (4. En este caso los valores se asignarán a cada una de las columnas mencionadas por posicionamiento relativo..'Credito'.'Xalapa')..'Veracruz').'Xalapa'). salario.7 Credito Xalapa Un formato posible es: INSERT INTO nombre-tabla VALUES (serie de valores). (2. valor2.'Orizaba').. jefe.'Cobranza'. (3.'Credito'.'Ventas'. Por ejemplo: INSERT INTO empleado (idempleado. cargo. oficio.

'01/01/2006'. NULL. pero no la definición de la tabla del diccionario. 'ROMERO TERRENOS.2. Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY como tabla maestra. 'Director'. Borra los empleados con cargo de chofer Cuando trabajemos con la sentencia DELETE debemos tener en cuenta las siguientes consideraciones:    Solo podemos borrar datos de una única tabla. nombreEmpleado. La consulta DELETE FROM empleados. DELETE (Oracle y MySQL) Borrará todas las filas que cumplan la condición especificada en la cláusula WHERE. Si se desea borrar tuplas de varias relaciones es necesario utilizar una orden DELETE por cada relación. Las vistas son solo una forma de ver los datos. no una copia. que elimina el contenido de la tabla y la definición de la misma. 7000. 'ROTL790411FRT'. Cuando borramos datos de una vista. Si esta cláusula se omite. Esta es una diferencia con la sentencia DROPTABLE.VALUES (12. Borra todas las tuplas de la tabla empleados La consulta DELETE FROM empleados WHERE cargo = 'Chofer'. si la tabla dependiente tiene registros relacionados la . salario + salario*comision FROM empleado WHERE comision > 0. LUIS'. Insertar mediante un SELECT CREATE GLOBAL TEMPORARY TABLE detalle ( rfc CHAR(14) PRIMARY KEY. 4). se borrarán todas las filas de la tabla. salarioNeto NUMBER(10. 'Ingeniero'. Obsérvese que cada comando DELETE sólo opera sobre una relación. DELETE borra todas las filas de una tabla. INSERT INTO detalle SELECT rfc.2) ) ON COMMIT PRESERVE ROWS. La sintaxis es la que sigue: DELETE FROM tabla [WHERE condición]. los estamos borrando también de la tabla. nombreEmpleado CHAR(40) NOT NULL. 0.

 Eliminar registros con la sentencia TRUNCATE es más rápido que con la sentencia DELETE. No se puede deshacer (ROLL BACK) y ocurre un error en casos de bloqueo de tabla.. La sentencia TRUNCATE no es transaccional. Esto es cierto incluso para MyISAM y InnoDB    . la tabla puede recrearse como una vacía con TRUNCATE TABLE. La sintaxis es: TRUNCATE TABLE nombre_tabla. índices y otras dependencias como por ejemplo integridad referencial. especialmente cuando la tabla tiene numerosos disparadores. incluso si los archivos de datos o de índice se han corrompido En MySQL el manejador de tablas reinicia el valor AUTO_INCREMENT usado. TRUNCATE TRUNCATE es una mejor alternativa a DELETE cuando se desea borrar todo el contenido de la tabla.sentencia DELETE fallará a no ser que la tabla hija contenga la sentencia ON DELETE CASCADE.