Practica 3

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

BASES DE DATOS

PRACTICA 3
Primera Parte: REGLAS, DEFAULTS, TDUS
Segunda Parte: VISTAS, INDICES Y BATCH
NOMBRES:

CODIGOS:

REGLAS, DEFAULTS, TDU


(Reglas, defauls y TDUs implementar en microsoft SQL Server o SYBASE) Las
sentencias deben ser escritas después de c/u de las preguntas

1. Crear una tabla empleado con los siguiente atributos: cedula, nombre,
primer_apellido, segundo_apellido, edad, ciudad_nto y estado_civil. La
llave primaria es la cedula, y estado civil tiena un default de “soltero”

2. Insertar 5 registros a la tabla. Por lo menos un registro insertado no


debe tener valor en estado civil.

3. Crear una tabla vendedor con los siguientes atributos: id_vendedor,


nombre, apellido, ciudad. La llave primaria es id_vendedor

4. Crear una regla donde un atributo solo acepte valores entre 18 y 60

5. Crear un default con “Bogota”

6. Asignar la regla al campo edad de la tabla empleado

7. Asignar el default al campo ciudad de vendedor y al campo ciudad_nto del


empleado

8. Insertar nuevamente registros a empleado y vendedor

1
9. ¿Qué sucede con los nuevos datos insertados cuando no se le indica la
ciudad? ¿Qué sucede cuando se inserta un registro en empleado con edad de
70?

10.Crear un TDU llamado País con valor por defecto “Colombia”, y crear una
tabla llamada Producto donde uno de los atributos sea Pais_origen. Este
atributo debe tener comop tipo de dato el TDU país.

11.Insertar datos a la tabla producto, con registros sin país de origen y con
país de origen.

VISTAS
(implementar en MySQL y en MSqlServer o Sybase)

1.1 Crear la tabla t, insertar un registro y ver la tabla:


CREATE TABLE t (cantidad INT, precio INT);
INSERT INTO t VALUES(3, 50);
SELECT * FROM t;

1.2. Crear la siguiente vista


CREATE VIEW v AS SELECT cantidad, precio, cantidad*precio AS valor FROM t;
¿Que información esta guardando la vista?

1.3. Consultar la vista. ¿Cual es el resultado?


SELECT * FROM v;

1.4 Insertar 2 registros a la tabla t


INSERT INTO t VALUES(2, 100);
INSERT INTO t VALUES(5, 80);

1.5. Consultar la vista. Cual es el resultado?


SELECT * FROM v;

2
2.1 Crear la tabla T2, insertar un registro y ver la tabla:
CREATE TABLE T2 (cantidad INT, precio INT, valor INT);
INSERT INTO T2 VALUES(5, 50, cantidad *precio);

2
2.2 Crear la siguiente vista
CREATE VIEW v2 AS SELECT cantidad, precio FROM T2;
¿Que información esta guardando la vista?

2.3. Consultar la vista. ¿Cual es el resultado?

2.4 Modificar la vista:


UPDATE v2 SET cantidad = 20 WHERE valor =50;

¿Qué ocurre con los datos de la vista y de la tabla original(que sucede con
valor)? ¿Por qué?

3.
3.1 Modificar la vista v (la creada en el punto1):
UPDATE v SET cantidad = 50 where precio =50;

3.2 ¿Qué ocurre con la vista y la tabla original(que sucede con valor)? ¿Por
qué?

3.3 Borrar la vista v

4.
4.1 Crear la tabla

CREATE TABLE autor(


autor_id integer(2) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
nombre varchar(10) NULL,
apellido varchar(10) NOT NULL,
edad integer(3) NULL
);

4.2 Insertar:

INSERT INTO autor ( nombre, apellido, edad) VALUES ( 'Jose', 'Diaz', 23);
INSERT INTO autor ( nombre, apellido, edad) VALUES ( 'Juan', 'Lopez', 20);
INSERT INTO autor ( nombre, apellido, edad) VALUES ( 'Jose', 'Marin', 27);
INSERT INTO autor ( nombre, apellido, edad) VALUES ( 'Maria', 'Suarez', 30);
INSERT INTO autor ( nombre, apellido, edad) VALUES ( 'Ana', 'Garcia', 15);

¿Qué autor_id tiene Maria Suarez? ¿Por qué?

3
4.3 Crear la vista

CREATE VIEW view_autor1 AS SELECT nombre, apellido FROM autor;

¿Qué hace la vista?

4.4 Crear la vista

CREATE VIEW view_autor2 AS SELECT CONCAT(nombre, CONCAT(' ',apellido)) AS


nombre_completo FROM autor;

¿Qué hace la vista?

Ejecutar SHOW TABLES y describe view_autor1 y view_autor2;

4.5 Insertar:
INSERT INTO view_autor1 (apellido, edad) VALUES ( 'Paez', 35);

¿El INSERT fue hecho? ¿Por qué? Mostrar datos de la vista y tabla autor

4.6 Insertar:
INSERT INTO view_autor1 (nombre, apellido) VALUES ( 'Gloria', 'Perez');

¿El INSERT fue hecho? ¿Por qué? Mostrar datos de la vista y tabla autor

INDICES
(implementar en MySQL y en MSqlServer o Sybase)

1. Hacer una consulta sobre la tabla municipi: Seleccionar todos los campos
cuando poblacio2003 es mayor que 100000 y menor que 500000.

4
Cuanto tiempo gasto la consulta (segundos que aparecen después de mostrar el
resultado)?

2. Crear un indice sobre la columna poblacio2003 de la tabla municipi. El


índice creado puede ser unique? ¿Por que? Si puede ser UNIQUE crear el indice
de este tipo, si no usar tipo (dejar valor predeterminado) (escribir sentencia
SQL) (Puede usar el comando HELP CREATE INDEX para ver la sintaxis)

3. Hacer la misma consulta del punto 1 ¿Cuanto tiempo gasto? ¿El tiempo es menor
o mayor que el tiempo dado en el punto 1? ¿Por que es menor o mayor?

5.
5.1
CREATE TABLE empleado (emple_id INT NOT NULL PRIMARY KEY,
nombre VARCHAR(10),
edad INT,
sexo CHAR(1),
INDEX ind_nombre (nombre)
);
¿Que hace la sentencia anterior?

Mirar la descripción de la tabal:


describe empleado;
¿Qué información tiene el campo nombre? ¿Por qué?

5.2
ALTER TABLE empleado
DROP INDEX ind_nombre;

¿Que hace la sentencia anterior?

Mirar la descripción de la tabal:


describe empleado;
¿Qué información tiene el campo nombre? ¿Por qué?

5
5.3 Adicionar un índice en la columna apellido de la tabla autor usando ALTER
TABLE (escribir sentencia SQL y descripción de la tabla)

5.4 Borrar el indice creado en 5.3 usando ALTER TABLE (escribir sentencia SQL y
descripción de la tabla)

5.5 Adicionar un índice en la columna apellido de la tabla autor usando CREATE


INDEX de tipo UNIQUE (escribir sentencia SQL y descripción de la tabla)

5.6 Borrar el índice usado en 5.5 (escribir sentencia SQL y descripción de la


tabla)

6. CREATE TABLE lookup


(id INT, INDEX USING BTREE (id));

¿Que hace la sentencia anterior?

5.7 Adicionar un índice en la columna apellido de la tabla autor usando CREATE


INDEX de tipo UNIQUE y usando la estructura BTREE (escribir sentencia SQL y
descripción de la tabla)

BATCH
(implementar en MySQL y en MSqlServer o Sybase)

1. Crear una tabla libro con los siguientes atributos:
id_libro  char (6)
titulo  varchar (30)
precio  double
tipo varchar(10)

6
2. Insertar datos. Un libro debe tener id = BU2075

3.   Ejecutar las siguientes sentencias en batch. Si las sentencias fallan dar 
la razon  porla que ocurre la falla.

declare @myvariable int

select @myvariable = titulo
from libro
where id_libro = "BU2075"
select @myvariable

4. Ejecutar la siguientes sentencias en batch

   delete from titles where tipo = "popular"
   select @@rowcount

Cual fue el resultado del select? Por que?

5.  Borrar una tabla inexistente, ¿cual es el numero y tipo de error que se 
genera?

6.  Ejecutar un borrado de una tabla con una condición que nunca se cumple. 
¿Cual es el número y tipo de error que se genera?

7. Implementar las sentencias en batch :  Borrar de la tabla libros los libros 
de tipo “cocina”.  Generar un mensaje que indique si filas no fueron borradas, 
si se borro solo una fila, o si se borraron múltiples filas.

8. Implementar las sentencias en batch: Incrementar el precio de los libros en 
2.000 hasta que el promedio del  precio del los libros sea mayor que 50.000

9. Mientras que el promedio de los libros es mayor que 30.000 reducir los 
precios de los libros por la mitad. Sin embargo, si el máximo precio cae por 
debajo de  80.000 el ciclo es terminado.

10.  Si existen libros con el  precio mayor que 60.000 reducir el precio en 10% 
sino mostrar un mensaje que indique que el precio de todos los libros estaba 
por debajo de 60.000

11 Implementar, corregir si hay errores (de sintaxis o declaración de 
variables), y explicar que hace el siguiente batch:

while @price < $20.00
begin
select @price = @price + $1.00
if (select count(price) from titles
where price = @price) >= 5
continue
else
update titles
set price = price * $1.10
where price = @price
end

7
8

También podría gustarte