Beruflich Dokumente
Kultur Dokumente
Para insertar datos en una relacin, se especfica 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 -nmero de atributos- correcta. Considere el siguiente Diagrama Entidad Relacin y su correspondiente script Oracle. Considere el siguiente Diagrama Entidad Relacin y su correspondiente script Oracle
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), nombre CHAR(15) NOT NULL, ciudad CHAR(10) NOT NULL, CONSTRAINT DOM_Ciudad CHECK (ciudad IN ('Veracruz', 'Xalapa', 'Orizaba', 'Regional')), CONSTRAINT PK_Departamento PRIMARY KEY (idDepartamento) ); CREATE TABLE empleado( idEmpleado NUMBER(3), rfc CHAR(14), nombreEmpleado CHAR(40) NOT NULL, oficio CHAR(11) NOT NULL, cargo CHAR(15) NOT NULL, jefe NUMBER(3), ingreso DATE NOT NULL, salario NUMBER(10,2), comision NUMBER(10,2), idDepartamento NUMBER(3) NOT NULL, CONSTRAINT DOM_Empleado_Salario CHECK ( salario > 0 ), CONSTRAINT PK_Empleado PRIMARY KEY (idEmpleado), CONSTRAINT AK_Empleado UNIQUE (rfc), CONSTRAINT FK_Empleado_Jefe FOREIGN KEY (jefe) REFERENCES Empleado, CONSTRAINT FK_Empleado FOREIGN KEY (idDepartamento) REFERENCES Departamento, CONSTRAINT DOM_Empleado_NombreEmpleado CHECK (nombreEmpleado = NLS_UPPER(nombreEmpleado)) );
Tabla: Departamento idDepartamento Departamento Ciudad 1 2 3 4 5 6 Ventas Ventas Cobranza Cobranza Credito Credito Veracruz Xalapa Veracruz Xalapa Orizaba Veracruz
Credito
Xalapa
El orden en el que se asignen los valores en la clusula VALUES tiene que coincidir con el orden en que se definieron las columnas en la creacin del objeto tabla, dado que los valores se asignan por posicionamiento relativo.
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,'Ventas','Veracruz'); (2,'Ventas','Xalapa'); (3,'Cobranza','Veracruz'); (4,'Cobranza','Xalapa'); (5,'Credito','Orizaba'); (6,'Credito','Veracruz'); (7,'Credito','Xalapa');
Otra forma de usar la sentecia INSERT es: INSERT INTO nombre-tabla (columna1, columna2...) VALUES (valor1, valor2...);
En este caso los valores se asignarn a cada una de las columnas mencionadas por posicionamiento relativo.
Es necesario que por lo menos se asignen valores a todas aquellas columnas que no admiten valores nulos en la tabla (NOT NULL).
Por ejemplo: INSERT INTO empleado (idempleado, rfc, nombreempleado, oficio, cargo, jefe, ingreso, salario, comision, idDepartamento)
VALUES (12, 'ROTL790411FRT', 'ROMERO TERRENOS, LUIS', 'Ingeniero', 'Director', NULL, '01/01/2006', 7000, 0.2, 4);
CREATE GLOBAL TEMPORARY TABLE detalle ( rfc CHAR(14) PRIMARY KEY, nombreEmpleado CHAR(40) NOT NULL, salarioNeto NUMBER(10,2) ) ON COMMIT PRESERVE ROWS; INSERT INTO detalle SELECT rfc, nombreEmpleado, salario + salario*comision FROM empleado WHERE comision > 0;
Solo podemos borrar datos de una nica tabla. Cuando borramos datos de una vista, los estamos borrando tambin de la tabla. Las vistas son solo una forma de ver los datos, no una copia. Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY como tabla maestra, si la tabla dependiente tiene registros relacionados la
sentencia DELETE fallar a no ser que la tabla hija contenga la sentencia ON DELETE CASCADE..
TRUNCATE
Eliminar registros con la sentencia TRUNCATE es ms rpido que con la sentencia DELETE, especialmente cuando la tabla tiene numerosos disparadores, ndices y otras dependencias como por ejemplo integridad referencial. La sentencia TRUNCATE no es transaccional. No se puede deshacer (ROLL BACK) y ocurre un error en casos de bloqueo de tabla. la tabla puede recrearse como una vaca con TRUNCATE TABLE, incluso si los archivos de datos o de ndice se han corrompido En MySQL el manejador de tablas reinicia el valor AUTO_INCREMENT usado. Esto es cierto incluso para MyISAM y InnoDB