Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

P08 LBD Gca

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

Universidad Nacional Autónoma de México

Ingeniería en Computación

Laboratorio de Bases de Datos

Práctica 08: Lenguaje de manipulación de datos y transacciones.

Fecha de realización: 10 de octubre de 2022.

Fecha de entrega: 19 de octubre de 2022.

Introducción:
Lenguaje de manipulación de datos:

El lenguaje de manipulación de datos (DML) nos permite acceder, crear, modificar o eliminar
los datos de un esquema de base de datos. Las órdenes que se utilizan son: insertar
(INSERT), actualizar (UPDATE), borrar (DELETE) y seleccionar (SELECT) los datos en una
base de datos.

Insertar valores a una tabla: INSERT

Una vez que se han creado las tablas, utilizamos el comando INSERT para agregar
información a las tablas, su sintaxis es la siguiente:

INSERT INTO <nombreTabla> [(campo1 [,campo2, ...])]


VALUES (valor1, valor2,...);

O bien,

INSERT INTO <nombreTabla>


VALUES (valor1, valor2,...);

En esta opción debemos tener cuidado de colocar los valores según el orden
correspondiente en la tabla. Los valores de tipo DATE o CHAR se deben encerrar entre
comillas simples. Los valores insertados deben ser de un tipo compatible con el de las
columnas de la tabla.

1
También se puede realizar un INSERT combinado con un SELECT

INSERT INTO <nombreTabla> [(campo1 [,campo2, ...])]


SELECT <columna1, columna2, ...>
FROM <nombreTabla>

Modificar datos de una tabla: UPDATE

Se emplea para modificar los datos existentes en una tabla, su sintaxis es la siguiente:

UPDATE <nombre_tabla> SET


{<columna> = <expresión> [, ...]
| {(<lista-de columnas>) | *} = (<lista de expresiones>) }
[WHERE <condición>]

Una expresión puede estar formada por una subconsulta SELECT entre paréntesis, cuyo resultado es
un único dato de una sola columna (un único valor simple). La lista de columnas está formada por
aquellas columnas a las cuales se les modificará su valor. Si se omite la cláusula WHERE entonces se
actualizan todos los datos de la tabla.

Eliminar datos de una tabla: DELETE

Permite eliminar datos de una tabla. Su sintaxis es la siguiente:

DELETE [FROM] <nombre tabla> [WHERE <condición>]

Si no se pone condición, se borran todos los datos de la tabla.

Seleccionar datos de una tabla: SELECT

Para recuperar la información guardada en una base de datos utilizamos el comando SELECT. La
sintaxis de la orden SELECT consta básicamente de las cláusulas SELECT y FROM como obligatorias y
la cláusula WHERE como opcional, su sintaxis es la siguiente:

SELECT [ALL | DISTINCT | UNIQUE ]


[<tabla|aliasTabla>.] <columna1> [AS <nombreColumna>]
[, [<tabla|aliasTabla>.]< columna2> [AS <nombreColumna>]...., |*]
FROM [<nombreBasedeDatos>] Tabla [<aliasTabla>]
[WHERE <condición>]

Las columnas ambiguas (iguales) se preceden del nombre de la tabla: <tabla>.<columna> o de un


sobrenombre corto para la tabla <aliasTabla>.<columna>. Se usa para cambiar el nombre de una
columna del conjunto de resultados o para asignarle un nombre a una columna derivada.
El * hace referencia a todas las columnas de la tabla.

Cláusula FROM:

2
Permite indicar las tablas que contienen los datos.

FROM {<nombre de tabla> [alias de tabla] } [,...]

<alias de tabla>: Es un sinónimo activo sólo en el ámbito de la sentencia SELECT.

Cláusula WHERE: Sirve para indicar la condición que deben cumplir las filas resultantes.

WHERE <condición>

Una condición está formada por una o varias expresiones condicionales conectadas por los
operadores lógicos AND, OR y NOT. Una expresión condicional tiene la forma siguiente:

Expresión de comparación

<expresión1> <operador relacional> <expresión2>

Verifica si las dos expresiones satisfacen la comparación.

Objetivos:
El alumno comprenderá y confirmará el uso del lenguaje SQL para realizar la administración de los
datos empleando las instrucciones INSERT, UPDATE y DELETE. Comprenderá las principales
características de una transacción, comprobará y configurará los diferentes niveles de aislamiento
empleados por un RDBMS.

Desarrollo:
Código:

drop table jefe ;


drop table ADMINISTRATIVO ;

Creamos las tablas a utilizar para nuestra práctica (jefe y administrativo):

CREATE TABLE JEFE(


ID NUMBER(3),
NOMBRE VARCHAR(20),
PATERNO VARCHAR(20),
MATERNO VARCHAR(20),
EDAD NUMBER(5),
SUELDO NUMBER(8,2)
);

CREATE TABLE ADMINISTRATIVO(


ID NUMBER(3),
NOMBRE VARCHAR(20),

3
PATERNO VARCHAR(20),
MATERNO VARCHAR(20),
EDAD NUMBER(5),
SUELDO NUMBER(8,2)
);

Insertamos valores dentro de ambas tablas:

insert into jefe values(40,'Aguirre','Rivera','Heidi',31,32650);


insert into jefe values(14,'Arellano','Muñoz','Joshua
Balam',45,24729);
insert into jefe values(17,'Avila','Avendaño','Luis
Donovan',38,21629);
insert into jefe values(50,'Ayala','Sandoval','Luis
Antonio',30,24537);
insert into jefe values(12,'Camargo','Huertero','Jesus
Saul',44,23996);
insert into jefe values(39,'Carrillo','Castañeda','Adan
Alejandro',18,27060);
insert into jefe values(41,'Chaires','Galindo','Ivanna',20,13537);
insert into jefe values(31,'Chavez','Olea','Sebastian
Alejandro',25,32003);
insert into jefe values(44,'Torre','Nvarrete','Monica
Carolina',42,30965);
insert into jefe values(1,'Dominguez','Chimal','Yoltzin',37,6207);
insert into jefe values(51,'Garcia','Ambrosio','Aldo',25,9759);
insert into jefe values(48,'Garcia','Axinicuilteco','Karen
Itzel',45,19330);
insert into jefe values(63,'Granados','Gomez','Miguel
Angel',15,24345);
insert into jefe values(93,'Guzman','Merida','Julian
Israel',34,16831);
insert into jefe values(73,'Hernandez','Vera','Gabriel',29,33031);
insert into jefe values(5,'Ibañez','Nuñez','Dante
Alejandro',35,6161);
insert into ADMINISTRATIVO
values(8,'Jeronimo','Francisco','Armando',23,16876);
insert into ADMINISTRATIVO values(85,'Jimenez','Alvarez','Jose
Fernando',30,30480);
insert into ADMINISTRATIVO values(9,'Juarez','Sandoval','Angel
Francisco',35,32801);
insert into ADMINISTRATIVO
values(79,'Leal','Barcenas','Jessica',20,37255);
insert into ADMINISTRATIVO values(81,'Leaños','Gutierrez','Alan
Rodrigo',24,9267);
insert into ADMINISTRATIVO values(3,'Martinez','Lara','Melany
Ailin',15,32361);

4
insert into ADMINISTRATIVO values(7,'Medrano','Muñiz','Eyla
Natalia',22,19932);
insert into ADMINISTRATIVO
values(51,'Garcia','Ambrosio','Aldo',25,9759);
insert into ADMINISTRATIVO
values(48,'Garcia','Axinicuilteco','Karen Itzel',45,19330);
insert into ADMINISTRATIVO values(63,'Granados','Gomez','Miguel
Angel',15,24345);
insert into ADMINISTRATIVO values(94,'Mendoza','Jimenez','Daniel
Emiliano',45,33866);
insert into ADMINISTRATIVO values(74,'Mendoza','Montes','De Oca
Diego',37,34730);
insert into ADMINISTRATIVO values(43,'Olarte','Tomas','Kevin
Saul',33,28946);
insert into ADMINISTRATIVO values(49,'Olvera','Lopez','Jose
Manuel',27,24465);
insert into ADMINISTRATIVO values(65,'Pelcastre','Rangel','Cecilia
Jaqueline',29,14278);
insert into ADMINISTRATIVO
values(57,'Perez','Alvarez','Ulises',17,5731);
insert into ADMINISTRATIVO values(2,'Perez','Marquez','David
Andrawi',32,35627);
insert into ADMINISTRATIVO
values(38,'Perez','Salazar','Marco',20,18718);
insert into ADMINISTRATIVO values(99,'Ponce','Espino','Miguel
Angel',37,31652);
insert into ADMINISTRATIVO
values(77,'Rodriguez','Marcial','Marifer',22,37330);
insert into ADMINISTRATIVO values(62,'Rodriguez','Remigio','Luis
Pablo',30,7223);
insert into ADMINISTRATIVO values(90,'Rogel','Blanquet','Parada
Rainier',21,10999);
insert into ADMINISTRATIVO values(22,'Salazar','Salinas','Ithan
Yaxche',43,9416);
insert into ADMINISTRATIVO values(10,'Salinas','Aquino','Omar
Ivan',20,18338);
insert into ADMINISTRATIVO
values(69,'Sanchez','Romero','Diego',31,5256);
insert into ADMINISTRATIVO values(6,'Sanchez','Villegas','Marco
Jael',28,6166);

select * from jefe ORDER BY ID DESC; --ORDENADO DE MANERA


DESCENDENTE

INSERT INTO JEFE


VALUES(100,'AMAURI','CASTILLO','CAMACHO',25,20000);
INSERT INTO JEFE VALUES(101,'ENZO','VALDES','ZAVALA',NULL,'');--
DOS FORMAS DE PONER NULL

5
INSERT INTO JEFE (ID,NOMBRE,PATERNO,EDAD,SUELDO)--ESTOS SE PUEDEN
ACOMODAR EN CUALQUIER ORDEN
VALUES (102,'LUIS','ZUÑIGA',26,32000);-- ESTOS EN EL ORDEN
ANTERIOR
INSERT INTO JEFE(ID,PATERNO,EDAD,NOMBRE)
VALUES (103,'QUIROZ',21,'SUSANA');

INSERT INTO JEFE VALUES(SELECT * FROM TABLA);-- PARA USAR UNA


TABLA PARA LLENAR OTRA

Sintaxis de UPDATE para actualizar el valor de un campo dentro de nuestras tablas:

UPDATE NOMBRE_TABLA
SET CAMPO = 'VALOR NUEVO'
WHERE CAMPO = 'VALOR DEL REGISTRO A CAMBIAR';

COMMIT;--CTRL + G --GUARDAR, ROLLBACK ES CTRL Z SAVEPOINT

Actualizamos el campo materno de la tabla jefe dándole un valor donde se encuentre el id indicado:

UPDATE JEFE
SET MATERNO = 'SALGADO'-- ACTUALIZACIÓN DE UN CAMPO
WHERE ID = 102;

En este caso se actualiza más de un campo dentro de nuestra tabla:

UPDATE JEFE
SET MATERNO = 'SOTO', SUELDO = 50000-- ACTUALIZA MÁS DE UN CAMPO
WHERE ID = 103;

Actualizamos un campo con más de una condición:

UPDATE JEFE
SET MATERNO = 'FUNADO'
WHERE EDAD > 40 AND SUELDO > 20000;

DELETE FROM NOMBRE_TABLA


WHERE CONDICIONES;-- SINTAXIS

--DROP SIRVE PARA BORRAR OBJETOS(TABLAS, VISTAS , ETC)


--DELETE SIRVE PARA BORRAR CONTENIDOS

DELETE FROM JEFE


WHERE EDAD > 40 AND SUELDO > 50000;-- BORRA CON CONDICION

DELETE FROM JEFE;--BORRA TODO

select id

6
from jefe
minus
select id
from administrativo;

select nombre
from jefe
INTERSECT
select nombre
from administrativo;

Resultados:
- Creamos las dos tablas de jefe y de administrativo:

CREATE TABLE JEFE(


ID NUMBER(3),
NOMBRE VARCHAR(20),
PATERNO VARCHAR(20),
MATERNO VARCHAR(20),
EDAD NUMBER(5),
SUELDO NUMBER(8,2)
);

CREATE TABLE ADMINISTRATIVO(


ID NUMBER(3),
NOMBRE VARCHAR(20),
PATERNO VARCHAR(20),
MATERNO VARCHAR(20),
EDAD NUMBER(5),
SUELDO NUMBER(8,2)
);

- Insertamos los primeros 5 datos:

insert into jefe


values(40,'Aguirre','Rivera','Heidi',31,32650);
insert into jefe values(14,'Arellano','Muñoz','Joshua
Balam',45,24729);
insert into jefe values(17,'Avila','Avendaño','Luis
Donovan',38,21629);
insert into jefe values(50,'Ayala','Sandoval','Luis
Antonio',30,24537);
insert into jefe values(12,'Camargo','Huertero','Jesus
Saul',44,23996);

7
Fig. 1 Inserción de 5 valores.

- Hacemos commit (commit;) y despues insertamos 3 valores más :

insert into jefe values(39,'Carrillo','Castañeda','Adan


Alejandro',18,27060);
insert into jefe
values(41,'Chaires','Galindo','Ivanna',20,13537);
insert into jefe values(31,'Chavez','Olea','Sebastian
Alejandro',25,32003);

8
Fig. 2 Tabla tras insertar los tres valores extra.

- Hacemos rollback (rollback;):

Tras hacer rollback los datos insertados en la tabla jefe vuelven a ser los cinco primeros que
se guardaron antes de hacer el commit.

Fig. 3 Tabla jefe tras hacer rollback.

- Creamos nuestro primer savepoint el cual tendrá nombre de “a”, e insertamos 3 valores más:

9
Fig. 4 Valores de la tabla tras primer savepoint.

- Creamos nuestro segundo savepoint que tendrá el nombre de “b” e insertamos 3 valores
más:

Fig. 5 Tabla con todos los valores insertados hasta después del segundo save point.

- Hacemos rollback al savepoint a:

10
Fig. 6 Elementos en tabla jefe volviendo al primer savepoint.

Cuestionario:
1) DML:

INSERT: Sirve para insertar valores en una tabla existente.

INSERT INTO table_name (list_of_columns)


VALUES (list_of_values);

UPDATE: Para actualizar los estados de una tabla existente es decir, cambiar los valores.

UPDATE table_name
SET column_name = value [, column_name = value]...
[ WHERE condition ];

DELETE: sirve para borrar contenidos de una tabla.

DELETE FROM table_name [ WHERE condition ];

2) TCL:

• COMMIT - Guarda el trabajo realizado.


• SAVEPOINT - Genera un punto de guardado dentro del código al que se puede volver.
• ROLLBACK - Regresa el código a un punto de guardado o al último commit generado.
• SET TRANSACTION - Cambia las opciones de transacción.

11
Conclusiones:
Se pudo comprobar la utilidad de DML en bases de datos pues te permite controlar más los errores
que puedan surgir en ciertos puntos mientras manejas tu base de datos, ya que puedes volver a
puntos anteriores en el codigo antes de que se generase algún error sin que esto repercuta de forma
permanente en tu código.

Referencias:
[1] 2 Day Developer’s Guide. (s. f.). Oracle Help Center.
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/tdddg/dml-and-transactions.h
tml consultado el 10 de noviembre de 2022.

[2] http://www.tierradelazaro.com/wp-content/uploads/2016/12/DDL-DML-DCL-TCL.pdf
consultado el 10 de noviembre de 2022.

Índice:

Introducción: 1

Objetivos: 3

Desarrollo: 3

Resultados: 7

Cuestionario: 11

Conclusiones: 12

Referencias: 12

12

También podría gustarte