BD2-2020 - LABORATORIO 2 - Identity, Case, Insert, Truncate

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES


LABORATORIO NO. 2
CREATE CON CONSTRAINT, INSERT, UPDATE Y DELETE

CONCEPTOS NUEVOS QUE SE ABORDARÁN:

 IDENTITY
 TRUNCATE TABLE

En cada uno de los puntos listados, haga exactamente lo que se le solicita, aun cuando
sienta que algo está mal.

Guarde todos sus scrip, debidamente etiquetado cada problema, en un archivo llamado
LAB2.sql

1- Cree la base de datos LAB_2. Y a proceda a crear dentro de ésta, la tabla llamada
libros que contiene los siguientes atributos:
cod_lib (entero) defina el código como llave primaria
espec (cadena 15)
titulo (cadena de 30 caracteres de longitud y no nulo)
autor (cadena de 20),
editorial (cadena de 15) y
precio (float)

2- Ingrese los siguientes datos a la tabla


cod_lib espec titulo autor editorial precio
100 sistemas Fundamentos de Elmarsi McGraw 45.00
Bases de datos Hill
101 sistemas Sistemas de Bases Connolly Pearson 30
de datos
302 literatura Cervantes y el Borges Elmerce 25
Quijote
204 matemáticas Calculo Diferencial Hernández Pearson 35.25
e Integral
106 literatura Aprenda Sql ya Riordan McGraw 90.99
Hill

3- Modifique el registro cuyo autor sea igual a "Connolly", por "Connolly y Begg" .
Muestre como realizo el cambio y como quedo ahora su tabla.

4. Nuevamente se detecta un error en los datos que requiere modificación. El libro con
código 106 es del área de sistemas y se registró como de literatura. Muestre como realiza
el cambio y como quedan ahora sus datos en la tabla

5. Actualice el precio del libro de "Borges " a 27 dólares. Muestre como hizo el cambio y
muestre los datos

6- Actualice todos los registros que contengan en el campo editorial el valor "McGraw Hill"
por MGH. Muestre como realizo la actualización y la tabla resultante.
En muchas ocasiones nos encontramos con tablas como estas, que no están normalizadas y que
por tanto, están sujetas a tener inconsistencias, una mayor cantidad de errores o datos
redundantes.
En la medida que la tabla descrita va creciendo, puede ocurrir que algunos datos como la
editorial y la especialidad, que son repetitivos pueden ser insertados de manera diferente
(ejemplo: Mcgraw Hill, MCGraw Hill, Mc Graw Hill etc). Causando que el DBMS asuma
que es otra editorial y no brinda información confiable al realizar las consultas. Esto es
producto de una creación de tabla sin un análisis previo.
La buena práctica nos dice que debemos normalizarlo y dividir esta gran tabla para que cada
tabla tenga solo los datos propios de ella.

Si analizamos, vemos que la llave de la tabla cod_libro no determina a la editorial del libro por
tanto, esta debe ser una tabla aparte.

Cod_edi Nombre_edit
t
1 McGraw Hill
2 Pearson
3 Elmerce
De igual forma, el código del libro no determina la especialidad del
libro, por tanto, esta debe ser una nueva tabla.

Cod_espe Nombre_espec
c
1 sistemas
2 literatura
3 matemáticas

Para enmendar el daño, se ha decido cambiar la estructura de la tabla inicial y trabajar con tres
tablas relacionales.

EDITORIAL LIBRO ESPECIALIDAD


1 M M 1

Se deberá crear una tabla para la editorial y otra tabla para las especialidades (ver indicaciones
de creación en los puntos 7 y 8).
7. Primero crearemos la tabla de Editoriales, que contendrá un código de editorial y el
nombre de la editorial. Seguir instrucciones detalladas en párrafo siguiente, para tal fin

Cod_edi Nombre_edit
t
1 Elmerce
2 MGH
3 Pearson

Al definir esta nueva tabla utilizaremos el IDENTITY para generar automáticamente el


valor del código de la editorial. El mismo se coloca al momento de la creación de la
tabla, en el renglón donde definimos el campo de la siguiente manera:

CREATE TABLE …
(codigo_editorial int Identity
Constraint nombre_constraint primary key (codigo_editorial) ,
……

 El identity hace que se genere un numero secuencial automáticamente,


 No debe introducirse, por lo que no debemos captarlo NUNCA.
 El valor generado con identity se genera cada vez que introducimos un nuevo
registro a esta tabla, no se incluye como campo en el insert, el insert sólo debe
contemplar los otros campos.
 Este valor no es editable, es decir no podemos cambiarlo. Permite su visualización
o borrado, más no el reintegro de la clave identity borrada.
 El dato debe ser declarado como entero.

Sintaxis
IDENTITY (inicio , incremento)

En el CREATE TABLE especificado previamente, como no se especificó el inicio ni el


incremento, el código iniciara en 1 y se incrementara de uno en uno. Es decir el primer
campo insertado será 1, el siguiente 2 y así sucesivamente…

IDENTITY (100, 2)
El primer código que se inserta será el 100 y luego 102, 104 y así sucesivamente.

NOTA: Algunos manejadores como MySQL usan auto increment en lugar de identity,
pero realizan la misma función

Una vez creada la tabla, procederemos a incluir el nombre de la editorial, pero lo haremos a
partir de la tabla de libros que ya tenemos, de tal forma que los datos sean tomados
directamente de la tabla existente “libro”. Esta nueva tabla tiene una correspondencia unívoca, a
cada código de editorial le corresponderá un valor único de nombre de editorial. Debemos
cerciorarnos de que no aparezcan repetidos.

Realice la inserción a través de una consulta (select) a la tabla libros. Muestre la instrucción
y la tabla resultante.
8 - Ahora proceda a crear la tabla de especialidades. Esta tabla tendrá un código de especialidad
(generado automáticamente con IDENTITY) y el nombre de la especialidad.

Cod_espe Nombre_espec
c
1 literatura
2 matemáticas
3 sistemas

Defina el código de especialidad como la llave primaria y defina este dato como entero.

Ahora haga que esta tabla tome los valores de las especialidades de la tabla libros.
(sabemos que pueden hacerlo uno a uno ya que son pocos datos, pero deseamos que se haga a
partir de la existente, suponiendo que lugar de 3 filas se tuvieran 10000).

Muestre:
 Las instrucciones realizadas para crear la tabla,
 Las instrucciones realizadas para insertar los datos y finalmente,
 Liste los datos contenidos en la tabla especialidades.

9 - Ahora debemos incorporar a la tabla libro los códigos que permiten hacer la conexión a las
tablas especialidad y editorial respectivamente. (estas columnas serán FK en esta tabla ya que
servirán de enlaces para conocer los nombres de las editoriales y la especialidad. La restricción
de FK será colocada posteriormente. En este momento sólo adicionaremos las columnas y los
datos que conectan Libro con las otras dos nuevas tablas )
Puede adicionar ambas columnas en un solo Alter, colocando comas entre las columnas

Para realizar este enlace, apóyese en el update con case, de tal


forma que los cambios sean generales y no uno a uno.

Muestre las instrucciones y el resultado obtenido de cada uno


de los dos enlaces realizados.
10. Luego de hacer el enlace respectivo, debe borrar de la tabla libros las columnas con el
nombre de la editorial y el nombre de especialidad .( NOTA: Si lo hace antes, no tendrá forma de poder
hacer la conexión).

Puede hacer el borrado de las dos columnas, con un solo alter, separando con comas las
columnas a borrar.

Muestre las instrucciones realizadas y la salida obtenida después de hacer los cambios
solicitados.

11. Realice los enlaces de integridad referencial (unión de tablas PK con FK) a través de un sólo
alter que separe con comas (,) los dos constraint adicionados.

Muestre las instrucciones y genere el diagrama de base de datos que permita visualizar los
enlaces realizados.

TRUNCATE TABLE vs Delete

Tanto el Truncate como Delete nos permiten borrar todos los datos de una tabla, sin embargo el Truncate
es un comando DDL en tanto Delete DML. Esto indica que el Delete borra los datos mas no las estructuras
definidas en tanto que el truncate produce un borrado total.

En el ejemplo en cuestión, al ser definido un campo con identity, si borramos el último registro insertado
(por ejemplo 5), el SQL mantiene el último valor introducido por el identity (5) y la siguiente inserción será
(6) es decir el siguiente de donde había quedado (sin importar que el previo fue borrado).
Lo mismo ocurre si hago un delete a toda la tabla. El identity mantendrá el último valor que fue insertado
antes del borrado y continuará con el siguiente.
El truncate por su parte si inicializará los valores, pero sólo puede aplicarse si deseamos borrar todos los
datos de la tabla, ya que no permite el uso del where.

Formato: TRUNCATE TABLE nombre_tabla

12- Proceda a borrar todos los datos de la tabla de editoriales con el DELETE. Muestre los
comandos que fueron necesarios para tal fin y con un select muestre la tabla vacía.

13- Proceda a insertar los datos Elmerse, MGH y Pearson como nuevas editoriales. (recuerde
que la tabla tiene definida un identity para el código, por lo que no debemos captarlo). Liste los
valores insertados. Que observa con el dato generado por el identity?

14. Proceda a borrar todos los datos de la tabla de editoriales con el TRUNCATE TABLE.
Muestre los comandos que fueron necesarios para tal fin y la tabla vacía.
15. - Proceda a insertar los datos Elmerse, MGH y Pearson como nuevas editoriales. (recuerde
que la tabla tiene definida un identity para el código, por lo que no debemos captarlo). Liste los
valores insertados. Que observa con el dato generado por el identity?

16. Que instrucción necesita para borrar la estructura de la tabla. Borre las tres tablas. Muestre
instrucción necesaria y capture el explorador de objetos, mostrando que no existen ya las tabla.

17- Borre la base de datos. Muestre instrucción y explorador de objetos.

18. Recuerde salvar su scrip y mantener todas las instrucciones realizadas

Después de tanto trabajar….


Sólo nos queda lo que aprendimos y el scrip guardado.
RESULTADOS
1 Creación de BD Lab_2
Creación de Tabla Libro
2 Insertar datos a Libro
Muestre los datos de
Libro
3 Modifique el registro
"Connolly”.
Muestre los datos
resultados
4 Modificar registro. código
106 es del área de
sistemas
5 Actualice el precio del
libro de "Borges " a 27
dólares
6 Actualice todos los
campos con editorial
"McGraw Hill" por MGH
7 Crear tabla de Editoriales
Inserción de datos en
tabla Editoriales
Liste datos de tabla
editoriales
8 Crear tabla de
Especialidades
Insertar valores de las
especialidades de la tabla
libros
Liste contenido de la tabla
especialidades
9 Actualización de la tabla
libro (adición de
columnas)
Adición de datos de
enlace a las nuevas
columnas
10 Borrar de libro, los
nombres de
especialidades y
editoriales
11 Enlaces de integridad
referencial.
Diagrama de la Base de
datos
12 Borrar todos los datos
con DELETE. Muestre
los comandos que fueron
necesarios para tal fin y
con un select muestre la
tabla vacía.
13 Inserte los datos
Elmerse, MGH y
Pearson Liste los valores
insertados. Que observa
con el dato generado por
el identity
14 Borre todos los datos de
la tabla de editoriales con
el TRUNCATE TABLE.
Muestre los comandos
que fueron necesarios
para tal fin y la tabla
vacía.
15 Inserte Elmerse, MGH y
Pearson como nuevas
editoriales. Liste los
valores insertados. Que
observa con el dato
generado por el identity?
16 Instrucción necesaria para
borrar la estructura de la
tabla
Explorador de objetos
17 Instrucción necesaria para
borrar la base de datos.
Explorador de objetos

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy