Deber de Bases de Datos
1 - Objetivos y alcances del tutorial de Microsoft Sql Server 2 - Crear una tabla create database Fercho; --Creo la bbd fercho use Fercho; --Indico que voy a usar esa esa bdd
Primer problema: Necesita almacenar los datos de sus amigos en una tabla. Los datos que guardará serán: apellido, nombre, domicilio y teléfono. 1- Elimine la tabla "agenda" si existe: drop table if exists agenda; 2- Intente crear una tabla llamada "/agenda": create table /agenda; //No me deja xq usamos un carácter inválido ("/") 3- Cree una tabla llamada "agenda", debe tener los siguientes campos: apellido, varchar(30); varchar(30); nombre, varchar(20); domicilio, varchar (30) y telefono, varchar(11): create table agenda(apellido agenda(ap ellido varchar(30), nombre varchar(20), domicilio varchar(30), varchar(30 ), telefono varchar(11) ); 4- Intente crearla nuevamente. Aparece mensaje de error. create table agenda; //Error 1064 5- Visualice las tablas existentes show tables; 6- Visualice la estructura de la tabla "agenda" desc agenda; 7- Elimine la tabla. drop table agenda; 8- Intente eliminar la tabla, sin controlar si existe. Debe aparecer un mensaje de error. drop table agenda; agenda; //Error 1051 1051
Segundo problema: Necesita almacenar información referente a los libros de su biblioteca personal. Los datos que guardará serán: título del libro, nombre del autor y nombre de la editorial. 1- Elimine la tabla "libros", si existe: drop table if exists libros; 2- Verifique que la tabla "libros" no existe en la base de datos activa. show tables; 3- Cree una tabla llamada "libros". Debe definirse con los siguientes campos: titulo, varchar(20); autor, varchar(30) varchar(30) y editorial, varchar(15). create table libros (titulo varchar(20), varchar(20), autor varchar(30), editorial varchar (15));
4- Intente crearla nuevamente. Aparece mensaje de error. create table libros; //Error 1113 5- Visualice las tablas existentes. show tables; 6- Visualice la estructura de la tabla "libros". desc libros; 7- Elimine la tabla. drop table libros; 8- Intente eliminar la tabla nuevamente. drop table libros;
3 - Insertar y recuperar registros de una tabla (insert into - select) Primer problema: Trabaje con la tabla "agenda" que almacena información de sus amigos. 1- Elimine la tabla "agenda", "agenda", si existe: drop table if exists agenda; 2- Cree una tabla llamada "agenda". Debe tener los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11): create table agenda(apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11)); 3- Visualice las tablas existentes para verificar la creación de "agenda" show tables; 4- Visualice la estructura de la l a tabla "agenda". desc agenda; 5- Ingrese los siguientes registros: insert into agenda (apellido, nombre, nombre, domicilio, telefono) telefono) values ('Moreno','Alberto','Colon ('Moreno','Alberto','Colon 123','42345 123','4234567'); 67'); insert into agenda (apellido,nombre, (apellido,nombre, domicilio, domicilio, telefono) values ('Torres','Juan','Avellaneda ('Torres','Juan','Avellaneda 135','44587 135','4458787'); 87'); 6- Seleccione todos los registros de la tabla: select *from agenda; 7- Elimine la tabla "agenda": drop table agenda; 8- Intente eliminar la tabla nuevamente (aparece un mensaje de error): drop table agenda; //Error 1051
Segundo problema: Trabaje con la tabla "libros" que almacena los datos de los libros de su propia biblioteca. 1- Elimine la tabla "libros", si existe: drop table if exists libros;
2- Cree una tabla llamada "libros". Debe definirse con los siguientes campos: titulo (cadena de 20), autor (cadena de 30) y editorial (cadena de 15). create table libros(titulo varchar (20), autor varchar (30), editorial varchar (15)); 3- Visualice las tablas existentes. show tables; 4- Visualice la estructura de la tabla "libros". desc libros; 5- Ingrese los siguientes registros: insert into libros (titulo,autor,editorial) values ('El aleph','Borges','Planeta'); insert into libros (titulo,autor,editorial) values ('Martin Fierro','Jose Hernandez','Emece'); insert into libros (titulo,autor,editorial) values ('Aprenda PHP','Mario Molina','Emece'); 6- Muestre todos los registros (select). select *from libros;
4 - Tipos de datos básicos Primer problema: Un videoclub que alquila películas en video almacena la información de sus películas en una tabla llamada "peliculas"; para cada película necesita los siguientes datos: -nombre, cadena de caracteres de 20 de longitud, -actor, cadena de caracteres de 20 de longitud, -duración, valor numérico entero -cantidad de copias: valor entero. 1- Elimine la tabla, si existe: drop table if exists peliculas; 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo: create table peliculas(nombre varchar(20), actor varchar(20), duracion integer, cantidad_copias integer); 3- Vea la estructura de la tabla: desc peliculas; 4- Ingrese los siguientes registros: insert into peliculas (nombre, actor, duracion, cantidad_copias) values ('Mision imposible','Tom Cruise',128,3); insert into peliculas (nombre, actor, duracion, cantidad_copias) values ('Mision imposible 2','Tom Cruise',130,2); insert into peliculas (nombre, actor, duracion, cantidad_copias) values ('Mujer bonita','Julia Roberts',118,3); insert into peliculas (nombre, actor, duracion, cantidad_copias) values ('Elsa y Fred','China Zorrilla',110,2); 5- Muestre todos los registros. select *from peliculas;
Segundo problema: Una empresa almacena los datos de sus empleados en una tabla "empleados" que guarda los siguientes datos: nombre, documento, sexo, domicilio, sueldobasico. 1- Elimine la tabla, si existe:
drop table if exists empleados; 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo: create table empleados( nombre varchar(20),
documento varchar(8),
sexo varchar(1),
domicilio varchar(30),
sueldobasico float ); 3- Vea la estructura de la tabla: desc empleados; 4- Ingrese algunos registros: insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Juan Perez', '22333444', 'm',
'Sarmiento 123', 500); insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Ana Acosta', '24555666', 'f',
'Colon 134', 650); insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Bartolome Barrios', '27888999',
'm', 'Urquiza 479',800); 5- Seleccione todos los registros. select *from empleados;
5 - Recuperar algunos campos (select) Primer problema: Un videoclub que alquila películas en video almacena la información de sus películas en alquiler en una tabla llamada "peliculas". 1- Elimine la tabla, si existe: drop table if exists peliculas; 2- Cree la tabla: create table peliculas( titulo varchar(20), actor varchar(20), duracion integer, cantidad integer ); 3- Vea la estructura de la tabla desc peliculas; 4- Ingrese datos a los siguientes registros: insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',180,3); insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible 2','Tom ruise',190,2); insert into peliculas (titulo, actor, duracion, cantidad) values ('Mujer bonita','Julia Roberts',118,3); insert into peliculas (titulo, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',110,2); 5- Realice un "select" mostrando solamente el título y actor de todas las películas select titulo, actor from peliculas; 6- Muestre el título y duración de todas las peliculas select titulo, duracion from peliculas; 7- Muestre el título y la cantidad de copias select titulo, cantidad from peliculas;
Segundo problema: Una empresa almacena los datos de sus empleados en una tabla llamada "empleados". 1- Elimine la tabla, si existe: drop table if exists empleados; 2- Cree la tabla: create table empleados(
nombre varchar(20),
documento varchar(8),
sexo varchar(1),
domicilio varchar(30),
sueldobasico float ); 3- Vea la estructura de la tabla: desc empleados; 4- Ingrese algunos registros: insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Juan Juarez', '22333444', 'm',
'Sarmiento 123', 500); insert into empleados (nombre, documento, sexo, domicilio, sueldobasico)
values ('Ana Acosta', '27888999', 'f',
'Colon 134', 700); insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Carlos Caseres', '31222333', 'm', 'Urquiza 479', 850); 5- Muestre todos los datos de los empleados select *from empleados; 6- Muestre el nombre, documento y domicilio de los empleados select nombre, documento, domicilio from empleados; 7- Realice un "select" mostrando el documento, sexo y sueldo básico de todos los empleados select documento, sexo, sueldobasico from empleados;
6 - Recuperar algunos registros (where) Primer problema: Trabaje con la tabla "agenda" en la que registra los datos de sus amigos. 1- Elimine "agenda", si existe: drop table if exists agenda; 2- Cree la tabla, con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11). create table agenda ( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11) ); 3- Visualice la estructura de la tabla "agenda". desc agenda; 4- Ingrese los siguientes registros: Acosta, Ana, Colon 123, 4234567;
Bustamante, Betina, Avellaneda 135, 4458787;
Lopez, Hector, Salta 545,
4887788; Lopez, Luis, Urquiza 333, 4545454; Lopez, Marisa, Urquiza 333, 4545454. insert into agenda(apellido,nombre,domicilio,telefono) values ('Acosta', 'Ana', 'Colon 123', '4234567');
insert into agenda(apellido,nombre,domicilio,telefono) values
('Bustamante', 'Betina', 'Avellaneda 135', '4458787');
insert into agenda(apellido,nombre,domicilio,telefono) values ('Lopez', 'Hector', 'Salta 545', '4887788'); insert into agenda(apellido,nombre,domicilio,telefono) values ('Lopez', 'Luis', 'Urquiza 333', '4545454'); insert into agenda(apellido,nombre,domicilio,telefono) values ('Lopez', 'Marisa', 'Urquiza 333', '4545454'); 5- Seleccione todos los registros de la tabla select *from agenda; 6- Seleccione el registro cuyo nombre sea "Marisa" (1 registro) select nombre from agenda where nombre = ‘Marisa’;
7- Seleccione los nombres y domicilios de quienes tengan apellido igual a "Lopez" (3 registros) select nombre, domicilio from agenda where apellido = ´Lopez´; 8- Muestre el nombre de quienes tengan el teléfono "4545454" (2 registros) select nombre from agenda where telefono = ´4545454´;
Segundo problema: Trabaje con la tabla "libros" de una librería que guarda información referente a sus libros disponibles para la venta. 1- Elimine la tabla si existe. drop table if exists libros; 2- Cree la tabla "libros". Debe tener la siguiente estructura: create table libros ( titulo varchar(20), autor varchar(30), editorial varchar(15)); 3- Visualice la estructura de la tabla "libros". desc libros; 4- Ingrese los siguientes registros: El aleph,Borges,Emece; Martin Fierro,Jose Hernandez,Emece; Martin Fierro,Jose Hernandez,Planeta; Aprenda PHP,Mario Molina,Siglo XXI; insert into libros(titulo,autor,editorial) values ('El aleph','Borges','Emece'); insert into libros(titulo,autor,editorial) values ('Martin Fierro','Jose Hernandez','Emece'); insert into libros(titulo,autor,editorial) values ('Martin Fierro','Jose Hernandez','Planeta'); insert into libros(titulo,autor,editorial) values ('Aprenda PHP','Mario Molina','Siglo XXI'); 5- Seleccione los registros cuyo autor sea "Borges" (1 registro) select *from libros where autor = ´Borges´; 6- Seleccione los títulos de los libros cuya editorial sea "Emece" (2 registros) select titulos from libros where editorial =’Emece’; 7- Seleccione los nombres de las editoriales de los libros cuyo titulo sea "Martin Fierro" (2 registros) select editorial from libros where titulo =’Martin Fierro’;
7 - Operadores relacionales Primer problema:
Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con ese nombre. 1- Elimine "articulos", si existe: drop table if exists articulos; 2- Cree la tabla, con la siguiente estructura: create table articulos( codigo integer, nombre varchar(20), descripcion varchar(30), precio float, cantidad integer); 3- Vea la estructura de la tabla desc articulos; 4- Ingrese algunos registros: insert into articulos (codigo, nombre, descripcion, precio,cantidad)
values (1,'impresora','Epson Stylus
C45',400.80,20); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (2,'impresora','Epson Stylus C85',500,30); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (3,'monitor','Samsung 14',800,10); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (4,'teclado','ingles Biswal',100,50); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (5,'teclado','español Biswal',90,50); 5- Seleccione los datos de las impresoras (2 registros) select *from articulos where nombre =’impresora’;
6- Seleccione los artículos cuyo precio sea mayor o igual a 400 (3 registros) select *from articulos where precio >= 400; 7- Seleccione el código y nombre de los artículos cuya cantidad sea menor a 30 (2 registros) select codigo, nombre from articulos where cantidad < 30; 8- Seleccione el nombre y descripción de los artículos que NO cuesten $100 (4 registros) select nombre, descripcion from articulos where precio <> 100;
Segundo problema: Un video club que alquila películas en video almacena la información de sus películas en alquiler en una tabla denominada "peliculas". 1--Elimine la tabla, si existe. drop table if exists peliculas; 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo: create table peliculas( titulo varchar(20), actor varchar(20), duracion integer, cantidad integer ); 3- Ingrese los siguientes registros: insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',120,3); insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible 2','Tom Cruise',180,4); insert into peliculas (titulo, actor, duracion, cantidad) values ('Mujer bonita','Julia R.',90,1); insert into peliculas (titulo, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',80,2); 4- Seleccione las películas cuya duración no supere los 90 minutos (2 registros) select *from peliculas where duracion <= 90;
5- Seleccione el título de todas las películas en las que el actor NO sea "Tom Cruise" (2 registros) select titulo from peliculas where ac tor <> ‘Tom Cruise’; 6- Muestre todos los campos, excepto "duracion", de todas las películas de las que haya más de 2 copias (2 registros) select titulo,actor,cantidad from peliculas where cantidad >2;
8 - Borrar registros (delete) Primer problema: Trabaje con la tabla "agenda" que registra la información referente a sus amigos. 1- Elimine la tabla si existe: drop table if exists agenda; 2- Cree la tabla con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11): create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11) ); 3- Ingrese los siguientes registros (insert into): Alvarez,Alberto,Colon 123,4234567,
Juarez,Juan,Avellaneda 135,4458787,
Lopez,Maria,Urquiza 333,4545454,
Lopez,Jose,Urquiza 333,4545454, Salas,Susana,Gral. Paz 1234,4123456. insert into agenda (apellido,nombre,domicilio,telefono)
values('Alvarez','Alberto','Colon 123','4234567');
insert into agenda (apellido,nombre,domicilio,telefono) values('Juarez','Juan','Avellaneda 135','4458787'); insert into agenda (apellido,nombre,domicilio,telefono)
values('Lopez','Maria','Urquiza 333','4545454');
insert into agenda (apellido,nombre,domicilio,telefono) values('Lopez','Jose','Urquiza 333','4545454'); insert into agenda (apellido,nombre,domicilio,telefono) values('Salas','Susana','Gral. Paz 1234','4123456'); 4- Elimine el registro cuyo nombre sea "Juan" (1 registro afectado) delete from agenda where nombre='Juan'; 5- Elimine los registros cuyo número telefónico sea igual a "4545454" (2 registros afectados): delete from agenda where telefono='4545454'; 6- Muestre la tabla. select * from agenda; 7- Elimine todos los registros (2 registros afectados): delete from agenda; 8- Muestre la tabla. select * from agenda; //ERROR
Segundo problema: Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con ese nombre. 1- Elimine "articulos", si existe: drop table if exists articulos; 2- Cree la tabla, con la siguiente estructura: create table articulos( codigo integer, nombre varchar(20), descripcion varchar(30), precio float, cantidad integer );
3- Vea la estructura de la tabla. desc articulos; 4- Ingrese algunos registros: insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (1,'impresora','Epson Stylus 45',400.80,20); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (2,'impresora','Epson Stylus C85',500,30); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (3,'monitor','Samsung 14',800,10); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (4,'teclado','ingles Biswal',100,50); insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (5,'teclado','español Biswal',90,50); 5- Elimine los artículos cuyo precio sea mayor o igual a 500 (2 registros) delete from articulos where precio>=500; 7- Elimine todas las impresoras (1 registro) delete from articulos where nombre='impresora'; 8- Elimine todos los artículos cuyo código sea diferente a 4 (1 registro) delete from articulos where codigo<>4; 9- Mostrar la tabla después que borra cada registro. select *from articulos;
9 - Actualizar registros (update) Primer problema: Trabaje con la tabla "agenda" que almacena los datos de sus amigos. 1- Elimine la tabla si existe: drop table if exists agenda; 2- Cree la tabla: create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11) ); 3- Ingrese los siguientes registros (1 registro actualizado): insert into agenda (apellido,nombre,domicilio,telefono) values ('Acosta','Alberto','Colon 123','4234567'); insert into agenda (apellido,nombre,domicilio,telefono) values ('Juarez','Juan','Avellaneda 135','4458787'); insert into agenda (apellido,nombre,domicilio,telefono) values ('Lopez','Maria','Urquiza 333','4545454'); insert into agenda (apellido,nombre,domicilio,telefono) values ('Lopez','Jose','Urquiza 333','4545454'); insert into agenda (apellido,nombre,domicilio,telefono) values ('Suarez','Susana','Gral. Paz 1234','4123456'); 4- Modifique el registro cuyo nombre sea "Juan" por "Juan Jose" (1 registro afectado) update agenda set nombre=’Juan Jose’, apellido= ‘Juarez’ where nombre =’Juan’;
5- Actualice los registros cuyo número telefónico sea igual a "4545454" por "4445566" (2 registros afectados) update agenda set telefono=’4545454’ where telefono =’4545454’; 6- Actualice los registros que tengan en el campo "nombre" el valor "Juan" por "Juan Jose" (ningún registro afectado porque ninguno cumple con la condición del "where") update agenda set nombre='Juan Jose' where nombre='Juan';
7 - Luego de cada actualización ejecute un select que muestre todos los registros de la tabla select *from agenda;
Segundo problema: Trabaje con la tabla "libros" de una librería. 1- Elimine la tabla si existe: drop table if exists libros; 2- Créela con los siguientes campos: titulo (cadena de 30 caracteres de longitud), autor (cadena de 20), editorial (cadena de 15) y precio (float): create table libros ( titulo varchar(30), autor varchar(20), editorial varchar(15), precio float ); 3- Ingrese los siguientes registros: insert into libros (titulo, autor, editorial, precio) values ('El aleph','Borges','Emece',25.00); insert into libros (titulo, autor, editorial, precio) values ('Martin Fierro','Jose Hernandez','Planeta',35.50); insert into libros (titulo, autor, editorial, precio) values ('Aprenda PHP','Mario Molina','Emece',45.50); insert into libros (titulo, autor, editorial, precio) values ('Cervantes y el quijote','Borges','Emece',25); insert into libros (titulo, autor, editorial, precio) values ('Matematica estas ahi','Paenza','Siglo XXI',15); 4- Muestre todos los registros (5 registros): select *from libros; 5- Modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (1 registro afectado) update libros set autor='Adrian Paenza' where autor='Paenza'; 6- Nuevamente, modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (ningún registro afectado porque ninguno cumple la condición) update libros set autor='Adrian Paenza' where autor='Paenza'; 7- Actualice el precio del libro de "Mario Molina" a 27 pesos (1 registro afectado): update libros set precio=27 where autor='Mario Molina'; 8- Actualice el valor del campo "editorial" por "Emece S.A.", para todos los registros cuya editorial sea igual a "Emece" (3 registros afectados): update libros set editorial='Emece S.A.' where editorial='Emece'; 9 - Luego de cada actualización ejecute un select que mustre todos los registros de la tabla. select *from libros;
10 - Comentarios
11 - Valores null (is null) Primer problema: Una farmacia guarda información referente a sus medicamentos en una tabla llamada "medicamentos". 1- Elimine la tabla, si existe: drop table if exists medicamentos; 2- Cree la tabla con la siguiente estructura: create table medicamentos( codigo integer not null, nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer not null ); 3- Visualice la estructura de la tabla "medicamentos": desc medicamentos; 4- Ingrese algunos registros con valores "null" para los campos que lo admitan: insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(1,'Sertal gotas',null,null,100); insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(2,'Sertal compuesto',null,8.90,150); insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(3,'Buscapina','Roche',null,200); 5- Vea todos los registros: select *from medicamentos; 6- Ingrese un registro con valor "0" para el precio y cadena vacía para el laboratorio: insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Bayaspirina','',0,150); 7- Ingrese un registro con valor "0" para el código y cantidad y cadena vacía para el nombre: insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(0,'','Bayer',15.60,0); 8- Muestre todos los registros: select *from medicamentos; 9- Intente ingresar un registro con valor nulo para un campo que no lo admite (aparece un mensaje de error): insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(null,'Amoxidal jarabe','Bayer',25,120); 10- Recupere los registros que contengan valor "null" en el campo "laboratorio", luego los que tengan una cadena vacía en el mismo campo. Note que el resultado es diferente. select *from medicamentos where laboratorio is null; select *from medicamentos where laboratorio=''; 11- Recupere los registros que contengan valor "null" en el campo "precio", luego los que tengan el valor 0 en el mismo campo. Note que el resultado es distinto. select *from medicamentos where precio is null; select *from medicamentos where precio=0; 12- Recupere los registros cuyo laboratorio no contenga una cadena vacía, luego los que sean distintos de "null". select *from medicamentos where laboratorio<>''; select *from medicamentos where laboratorio is not null; 13- Recupere los registros cuyo precio sea distinto de 0, luego los que sean distintos de "null":
select *from medicamentos where precio<>0; select *from medicamentos where precio is not null;
Segundo problema: Trabaje con la tabla que almacena los datos sobre películas, llamada "peliculas". 1- Elimine la tabla si existe: drop table if exists peliculas; 2- Créela con la siguiente estructura: create table peliculas( codigo int not null, titulo varchar(40) not null, actor varchar(20), duracion int ); 3- Visualice la estructura de la tabla desc peliculas; 4- Ingrese los siguientes registros: insert into peliculas (codigo,titulo,actor,duracion) values(1,'Mision imposible','Tom Cruise',120); insert into peliculas (codigo,titulo,actor,duracion) values(2,'Harry Potter y la piedra filosofal',null,180); insert into peliculas (codigo,titulo,actor,duracion) values(3,'Harry Potter y la camara secreta','Daniel R.',null); insert into peliculas (codigo,titulo,actor,duracion) values(0,'Mision imposible 2','',150); insert into peliculas (codigo,titulo,actor,duracion) values(4,'','L. Di Caprio',220); insert into peliculas (codigo,titulo,actor,duracion) values(5,'Mujer bonita','R. Gere-J. Roberts',0); 5- Recupere todos los registros para ver cómo SQL Server los almacenó: select *from peliculas; 6- Intente ingresar un registro con valor nulo para campos que no lo admiten (aparece un mensaje de error): insert into peliculas (codigo,titulo,actor,duracion) values(null,'Mujer bonita','R. Gere-J. Roberts',190); 7- Muestre los registros con valor nulo en el campo "actor" y luego los que guardan una cadena vacía (note que la salida es distinta) (1 registro) select * from peliculas where actor is null; 8- Modifique los registros que tengan valor de duración desconocido (nulo) por "120" (1 registro actualizado) update peliculas set duracion=120 where duracion is null; 9- Coloque 'Desconocido' en el campo "actor" en los registros que tengan una cadena vacía en dicho campo (1 registro afectado) update peliculas set actor='Desconocido' where actor=''; 10- Muestre todos los registros. Note que el cambio anterior no afectó a los registros con valor nulo en el campo "actor". select * from peliculas; 11- Elimine los registros cuyo título sea una cadena vacía (1 registro) delete from peliculas where titulo=””;
12 - Clave primaria Primer problema:
Trabaje con la tabla "libros" de una librería. 1- Elimine la tabla si existe: drop table if exists libros; 2- Créela con los siguientes campos, estableciendo como clave primaria el campo "codigo": create table libros( codigo int not null, titulo varchar(40) not null, autor varchar(20), editorial varchar(15), primary key(codigo) ); 3- Ingrese los siguientes registros: insert into libros (codigo,titulo,autor,editorial) values (1,'El aleph','Borges','Emece'); insert into libros (codigo,titulo,autor,editorial) values (2,'Martin Fierro','Jose Hernandez','Planeta'); insert into libros (codigo,titulo,autor,editorial) values (3,'Aprenda PHP','Mario Molina','Nuevo Siglo'); 4- Ingrese un registro con código repetido (aparece un mensaje de error) insert into libros (codigo,titulo,autor,editorial) values (2,'Alicia en el pais de las maravillas','Lewis Carroll','Planeta'); -Ingrese el codigo 2 repetido 5- Intente ingresar el valor "null" en el campo "codigo" insert into libros (codigo,titulo,autor,editorial) values (null,'Alicia en el pais de las maravillas','Lewis Carroll','Planeta'); 6- Intente actualizar el código del libro "Martin Fierro" a "1" (mensaje de error) update libros set codigo=1 where titulo='Martin Fierro';
Segundo problema: Un instituto de enseñanza almacena los datos de sus estudiantes en una tabla llamada "alumnos". 1- Elimine la tabla "alumnos" si existe: drop table if exists alumnos; 2- Cree la tabla con la siguiente estructura intentando establecer 2 campos como clave primaria, el campo "documento" y "legajo" (no lo permite): create table alumnos( legajo varchar(4) not null, documento varchar(8), nombre varchar(30), domicilio varchar(30), primary key(documento), primary key(legajo) ); 3- Cree la tabla estableciendo como clave primaria el campo "documento": create table alumnos( legajo varchar(4) not null, documento varchar(8), nombre varchar(30), domicilio varchar(30), primary key(documento) ); 4- Verifique que el campo "documento" no admite valores nulos: desc alumnos; 5- Ingrese los siguientes registros: insert into alumnos (legajo,documento,nombre,domicilio) values('A233','22345345','Perez Mariana','Colon 234'); insert into alumnos (legajo,documento,nombre,domicilio)
values('A567','23545345','Morales Marcos','Avellaneda
348'); 6- Intente ingresar un alumno con número de documento existente (no lo permite) insert into alumnos (legajo,documento,nombre,domicilio) values('A642','23545345','Gonzalez Analia','Caseros 444');
7- Intente ingresar un alumno con documento nulo (no lo permite) insert into alumnos (legajo,documento,nombre,domicilio) values('A685',null,'Miranda Carmen','Uspallata 999');
13 - Campo con atributo Identity (B) Primer problema: Una farmacia guarda información referente a sus medicamentos en una tabla llamada "medicamentos". 1- Elimine la tabla,si existe: drop table if exists medicamentos; 2- Cree la tabla con un campo "codigo" que genere valores secuenciales automáticamente: create table medicamentos( codigo int identity, nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer ); 3- Visualice la estructura de la tabla "medicamentos": desc medicamentos; 4- Ingrese los siguientes registros: insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100); 5- Verifique que SQL Server generó valores para el campo "código" de modo automático: select *from medicamentos; 6- Intente ingresar un registro con un valor para el campo "codigo" insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Amoxilina 500','Bayer',15.60,100); 7- Intente actualizar un valor de código (aparece un mensaje de error) update medicamentos set codigo=5 where nombre='Bayaspirina'; 8- Elimine el registro con codigo "3" (1 registro eliminado) delete from medicamentos where codigo=3; 9- Ingrese un nuevo registro: insert into medicamentos (nombre, laboratorio,precio,cantidad) values ('Amoxilina 500','Bayer',15.60,100); 10- Seleccione todos los registros para ver qué valor guardó SQL Server en el c ampo código: select *from medicamentos;
Segundo problema: Un videoclub almacena información sobre sus películas en una tabla llamada "peliculas". 1- Elimine la tabla si existe: drop table if exists peliculas; 2- Créela definiendo un campo "codigo" autoincrementable y como clave primaria: create table peliculas( codigo int identity, titulo varchar(40), actor varchar(20), duracion int, primary key(codigo) );
3- Ejecute el procedimiento almacenado para visualizar la estructura de la tabla: desc peliculas; 4- Ingrese los siguientes registros: insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190); insert into peliculas (titulo,actor,duracion) values('Mision imposible 2','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('La vida es bella','zzz',220); 5- Seleccione todos los registros y verifique la carga automática de los códigos: select *from peliculas; 6- Intente actualizar el codigo de una película (aparece un mensaje de error) update peliculas set codigo=7 where codigo=4; 7- Elimine la película "La vida es bella". delete from peliculas where titulo='La vida es bella'; 8- Ingrese un nuevo registro. insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90); 9- Visualice los registros para ver el valor almacenado en codigo (valor 7): select *from peliculas;
14 - Otras características del atributo Identity (B) Primer problema: Una farmacia guarda información referente a sus medicamentos en una tabla llamada "medicamentos". 1- Elimine la tabla,si existe: drop table if exists medicamentos; 2- Cree la tabla con un campo "codigo" que genere valores secuenciales automáticamente comenzando en 10 e incrementándose en 1: create table medicamentos(
codigo integer identity(10,1), nombre varchar(20) not null, laboratorio varchar(20),
precio float, cantidad integer ); 3- Ingrese los siguientes registros: insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200); insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100); 4- Verifique que SQL Server generó valores para el campo "código" de modo automático: select *from medicamentos; 5- Intente ingresar un registro con un valor para el campo "codigo".
insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Amoxilina 500','Bayer',15.60,100); 6- Setee la opción "identity_insert" en "on" set identity_insert medicamentos on; 7- Ingrese un nuevo registro sin valor para el campo "codigo" (no lo permite): insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxilina 500','Bayer',15.60,100); 8- Ingrese un nuevo registro con valor para el campo "codigo" repetido. insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(10,'Amoxilina 500','Bayer',15.60,100); 9- Use la función "ident_seed()" para averiguar el valor de inicio del campo "identity" de la tabla "medicamentos" select ident_seed('medicamentos'); 10- Emplee la función "ident_incr()" para saber cuál es el valor de incremento del campo "identity" de "medicamentos" select ident_incr('medicamentos');
Segundo problema: Un videoclub almacena información sobre sus películas en una tabla llamada "peliculas". 1- Elimine la tabla si existe: drop table if exists peliculas; 2- Créela definiendo un campo "codigo" autoincrementable que comience en 50 y se incremente en 3: create table peliculas( codigo int identity (50,3), titulo varchar(40), actor varchar(20), duracion int ); 3- Ingrese los siguientes registros: insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190); 4- Seleccione todos los registros y verifique la carga automática de los códigos: select *from peliculas; 5- Setee la opción "identity_insert" en "on" set identity_insert peliculas on; 6- Ingrese un registro con valor de código menor a 50. insert into peliculas (codigo,titulo,actor,duracion) values(20,'Mision imposible 2','Tom Cruise',120); 7- Ingrese un registro con valor de código mayor al último generado. insert into peliculas (codigo, titulo,actor,duracion) values(80,'La vida es bella','zzz',220); 8- Averigue el valor de inicio del campo "identity" de la tabla "peliculas". select ident_seed('peliculas'); 9- Averigue el valor de incremento del campo "identity" de "peliculas". select ident_incr('peliculas'); 10- Intente ingresar un registro sin valor para el campo código. insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90);
11- Desactive la opción se inserción para el campo de identidad. set identity_insert peliculas off; 12- Ingrese un nuevo registro y muestre todos los registros para ver cómo SQL Server siguió la secuencia tomando el último valor del campo como referencia. insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90); select *from peliculas;
15 - Truncate table Primer problema: Un instituto de enseñanza almacena los datos de sus estudiantes en una tabla llamada "alumnos". 1- Elimine la tabla "alumnos" si existe: drop table if exists alumnos; 2- Cree la tabla con la siguiente estructura: create table alumnos( legajo int identity, documento varchar(8), nombre varchar(30), domicilio varchar(30) ); 3- Ingrese los siguientes registros y muéstrelos para ver la secuencia de códigos: insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234'); insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348'); insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444'); insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209'); select *from alumnos; 4- Elimine todos los registros con "delete". delete from alumnos; 5- Ingrese los siguientes registros y selecciónelos para ver cómo SQL Server generó los códigos: insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234'); insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348'); insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444'); insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209'); select *from alumnos; 6- Elimine todos los registros con "truncate table". truncate table alumnos; 7- Ingrese los siguientes registros y muestre todos los registros para ver que SQL Server reinició la secuencia del campo "identity": insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234'); insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348'); insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444'); insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209'); select *from alumnos;
Segundo problema: Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con ese nombre. 1- Elimine "articulos", si existe: drop table if exists articulos; 2- Cree la tabla, con la siguiente estructura: create table articulos( codigo integer identity, nombre varchar(20), descripcion varchar(30), precio float ); 3- Ingrese algunos registros: insert into articulos (nombre, descripcion, precio) values ('impresora','Epson Stylus C45',400.80); insert into articulos (nombre, descripcion, precio) values ('impresora','Epson Stylus C85',500); 4- Elimine todos los registros con "truncate table". truncate table articulos; 5- Ingrese algunos registros y muéstrelos para ver que la secuencia de códigos se reinicia: insert into articulos (nombre, descripcion, precio) values ('monitor','Samsung 14',800); insert into articulos (nombre, descripcion, precio) values ('teclado','ingles Biswal',100); insert into articulos (nombre, descripcion, precio) values ('teclado','español Biswal',90); select *from articulos; 6- Elimine todos los registros con "delete". delete from articulos; 7- Ingrese algunos registros y muéstrelos para ver que la secuencia de códigos continua: insert into articulos (nombre, descripcion, precio) values ('monitor','Samsung 14',800); insert into articulos (nombre, descripcion, precio) values ('teclado','ingles Biswal',100); insert into articulos (nombre, descripcion, precio) values ('teclado','español Biswal',90); select *from articulos;
16 - Otros tipos de datos en SQL Server 17 - Tipo de dato (texto) Primer problema: Una concesionaria de autos vende autos usados y almacena los datos de los autos en una tabla llamada "autos". 1- Elimine la tabla "autos" si existe: drop table if exists autos; 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo, estableciendo el campo "patente" como clave primaria: create table autos( patente char(6), marca varchar(20), modelo char(4), precio float, primary key (patente) ); 3- Ingrese los siguientes registros: insert into autos values('ACD123','Fiat 128','1970',15000); insert into autos values('ACG234','Renault 11','1990',40000); insert into autos values('BCD333','Peugeot 505','1990',80000);
insert into autos values('GCD123','Renault Clio','1990',70000); insert into autos values('BCC333','Renault Megane','1998',95000); insert into autos values('BVF543','Fiat 128','1975',20000); 4- Seleccione todos los autos del año 1990: select *from autos where modelo='1990';
Segundo problema: Una empresa almacena los datos de sus clientes en una tabla llamada "clientes". 1- Elimine la tabla "clientes" si existe: drop table if exists clientes; 2- Créela eligiendo el tipo de dato más adecuado para cada campo: create table clientes( documento char(8), apellido varchar(20), nombre varchar(20), domicilio varchar(30), telefono varchar (11) ); 3- Analice la definición de los campos. Se utiliza char(8) para el documento porque siempre constará de 8 caracteres. Para el número telefónico se usar "varchar" y no un tipo numérico porque si bien es un número, con él no se realizarán operaciones matemáticas. 4- Ingrese algunos registros: insert into clientes values('2233344','Perez','Juan','Sarmiento 980','4342345'); insert into clientes (documento,apellido,nombre,domicilio) values('2333344','Perez','Ana','Colon 234'); insert into clientes values('2433344','Garcia','Luis','Avellaneda 1454','4558877'); insert into clientes values('2533344','Juarez','Ana','Urquiza 444','4789900'); 5- Seleccione todos los clientes de apellido "Perez" (2 registros): select *from clientes where apellido='Perez';
18 - Tipo de dato (numérico) Primer problema: Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas". La tabla contiene estos datos: Número de Cuenta
Documento
Nombre
Saldo
______________________________________________________________ 1234
25666777
Pedro Perez
500000.60
2234
27888999
Juan Lopez
-250000
3344
27888999
Juan Lopez
4000.50
3346
32111222
Susana Molina 1000
1- Elimine la tabla "cuentas" si existe: drop table if exist cuentas;
2- Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos descriptos arriba: - Número de cuenta: entero, no nulo, no puede haber valores repetidos, clave primaria; - Documento del propietario de la cuenta: cadena de caracteres de 8 de longitud (siempre 8), no nulo; - Nombre del propietario de la cuenta: cadena de caracteres de 30 de longitud, - Saldo de la cuenta: valores altos con decimales. create table cuentas( numero int not null, documento char(8), nombre varchar(30), saldo decimal, primary key (numero)); 3- Ingrese los siguientes registros: insert into cuentas(numero,documento,nombre,saldo) values('1234','25666777','Pedro Perez',500000.60); insert into cuentas(numero,documento,nombre,saldo) values('2234','27888999','Juan Lopez',-250000); insert into cuentas(numero,documento,nombre,saldo) values('3344','27888999','Juan Lopez',4000.50); insert into cuentas(numero,documento,nombre,saldo) values('3346','32111222','Susana Molina',1000); 4- Seleccione todos los registros cuyo saldo sea mayor a "4000" (2 registros) select *from cuentas where saldo<4000; 5- Muestre el número de cuenta y saldo de todas las cuentas cuyo propietario sea "Juan Lopez" (2 registros) select numero,saldo from cuentas where nombre='Juan Lopez'; 6- Muestre las cuentas con saldo negativo (1 registro) select *from cuentas where saldo<0; 7- Muestre todas las cuentas cuyo número es igual o mayor a "3000" (2 registros): select *from cuentas where numero>=3000;
Segundo problema: Una empresa almacena los datos de sus empleados en una tabla "empleados" que guarda los siguientes datos: nombre, documento, sexo, domicilio, sueldobasico. 1- Elimine la tabla, si existe: drop table if exists empleados; 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo: create table empleados(
nombre varchar(30),
documento char(8),
sexo char(1),
domicilio varchar(30),
insert into empleados (nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos)
values ('Juan Perez',
sueldobasico decimal (7, 2), cantidadhijos tinyint); 3- Ingrese algunos registros:
'22333444', 'm','Sarmiento 123',500,2); insert into empleados (nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos) values ('Ana Acosta', '24555666', 'f','Colon 134',850,0); insert into empleados (nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos) values ('Bartolome Barrios', '27888999', 'm','Urquiza 479',10000.80,4);
4- Ingrese un valor de "sueldobasico" con más decimales que los definidos (redondea los decimales al valor más cercano 800.89): insert into empleados (nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos)
values ('Susana Molina',
'29000555', 'f','Salta 876',800.888,3); 5- Intente ingresar un sueldo que supere los 7 dígitos (no lo permite) insert
into
empleados
(nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos)
values
('Marta
Juarez','32444555','f','Sucre 1086',5000000,2); 6- Muestre todos los empleados cuyo sueldo no supere los 900 pesos (1 registro): select *from empleados where sueldobasico>=900; 7- Seleccione los nombres de los empleados que tengan hijos (3 registros): select *from empleados where cantidadhijos>0;
19 - Tipo de dato (fecha y hora) Primer problema: Una facultad almacena los datos de sus alumnos en una tabla denominada "alumnos". 1- Elimine la tabla, si existe: drop table if exists alumnos; 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo: create table alumnos( apellido varchar(30), nombre varchar(30), documento char(8), domicilio varchar(30), fechaingreso datetime, fechanacimiento datetime ); 3- Setee el formato para entrada de datos de tipo fecha para que acepte valores "día-mes-año": set date_format 'dmy'; //MAL 4- Ingrese un alumno empleando distintos separadores para las fechas: insert into alumnos values ('Gonzalez', 'Ana','22222222', 'Colon 123', '1990-08-10', '1972-02-15'); 5- Ingrese otro alumno empleando solamente un dígito para día y mes y 2 para el año: insert into alumnos values('Juarez','Bernardo','25555555','Sucre 456','03-03-1991','15/02/1972'); 6- Ingrese un alumnos empleando 2 dígitos para el año de la fecha de i ngreso y "null" en "fechanacimiento": insert into alumnos values('Perez','Laura','26666666','Bulnes 345','03-03-91',null); 7- Intente ingresar un alumno con fecha de ingreso correspondiente a "15 de marzo de 1990" pero en orden incorrecto "03-15-90": insert into alumnos values('Lopez','Carlos','27777777','Sarmiento 1254','03-15-1990',null); 8- Muestre todos los alumnos que ingresaron antes del '1-1-91'.1 registro. select *from alumnos where fechaingreso<'1-1-91'; 9- Muestre todos los alumnos que tienen "null" en "fechanacimiento": select *from alumnos where fechanacimiento is null; 10- Intente ingresar una fecha de ingreso omitiendo los separadores: insert into alumnos values('Rosas','Romina','28888888','Avellaneda 487','03151990',null); //ERROR
11- Setee el formato de entrada de fechas para que acepte valores "mes-dia-año". set dateformat 'mdy'; 12- Ingrese el registro del punto 7. insert into alumnos values('Lopez','Carlos','27777777','Sarmiento 1254','03-15-1990',null);
20 - Ingresar algunos campos (insert into) Primer problema: Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas". 1- Elimine la tabla "cuentas" si existe: drop table if exists cuentas; 2- Cree la tabla : create table cuentas( numero int identity, documento char(8) not null, nombre varchar(30), saldo money ); 3- Ingrese un registro con valores para todos sus campos, inclusive el campo identity, omitiendo la lista de campos (error, no se debe ingresar para el campo identity): insert into cuentas values (1,'25666777','Juan Perez',2500.50); 4- Ingrese un registro con valores para todos sus campos omitiendo la lista de campos (excepto el campo "identity"): insert into cuentas values ('25666777','Juan Perez',2500.50); 5- Ingrese un registro omitiendo algún campo que admitan valores nulos. insert into cuentas (documento,saldo) values ('28999777',-5500); 6- Intente ingresar un registro con valor para el campo "numero" (error): insert into cuentas (numero,documento,nombre,saldo) values (5,'28999777','Luis Lopez',34000); 7- Intente ingresar un registro listando 3 campos y colocando 4 valores (error) insert into cuentas (numero,documento,nombre) values (3344,'28999777','Luis Lopez',34000); 8- Intente ingresar un registro sin valor para el campo "documento" (error) insert into cuentas (nombre, saldo) values ('Luis Lopez',34000); 9- Vea los registros ingresados: select *from libros;
21 - Valores por defecto (default) Primer problema: Un comercio que tiene un stand en una feria registra en una tabla llamada "visitantes" algunos datos de las personas que visitan o compran en su stand para luego enviarle publicidad de sus productos. 1- Elimine la tabla "visitantes", si existe: drop table if exists visitantes; 2- Cree la tabla con la siguiente estructura:
create table visitantes(nombre varchar(30), edad tinyint, sexo char(1) default 'f', domicilio varchar(30),
ciudad
varchar(20) default 'Cordoba', telefono varchar(11), mail varchar(30) default 'no tiene', montocompra decimal (6,2)); 4- Vea la información de las columnas "COLUMN_DEF" y "IS_NULLABLE": desc visitantes; 5- Ingrese algunos registros sin especificar valores para algunos campos para ver cómo opera la cláusula "default": insert into visitantes (nombre, domicilio, montocompra) values ('Susana Molina','Colon 123',59.80); insert
into
visitantes
(nombre,
edad,
ciudad,
mail)
values
('Marcos
Torres',
29,
'Carlos
Paz',
'
[email protected]'); select *from visitantes; 6- Use la palabra "default" para ingresar valores en un insert. insert
into
visitantes
values
('Marcelo
Morales',
38,
default,
default,
default,
'4255232',
'
[email protected]', default); 7- Ingrese un registro con "default values". insert into visitantes default values;
Segundo problema: Una pequeña biblioteca de barrio registra los préstamos de sus libros en una tabla llamada "prestamos". En ella almacena la siguiente información: título del libro, documento de identidad del socio a quien se le presta el libro, fecha de préstamo, fecha en que tiene que devolver el libro y si el libro ha sido o no devuelto. 1- Elimine la tabla "prestamos" si existe: drop table if exists prestamos; 2- Cree la tabla: create table prestamos( titulo varchar(40) not null, documento char(8) not null, fechaprestamo datetime not null, fechadevolucion datetime, devuelto char(1) default 'n' ); 3- Ingrese algunos registros omitiendo el valor para los campos que lo admiten: insert into prestamos (titulo,documento,fechaprestamo,fechadevolucion)
values ('Manual de 1 grado', '23456789',
'2006-12-15','2006-12-18'); insert into prestamos (titulo,documento,fechaprestamo) values ('Alicia en el pais de las maravillas','23456789','200612-16'); insert into prestamos (titulo,documento,fechaprestamo,fechadevolucion) values ('El aleph','22543987','2006-12-16', '2006-08-19'); insert into prestamos (titulo,documento,fechaprestamo,devuelto) values ('Manual de geografia 5 grado', '25555666', '2006-12-18','s'); 4- Seleccione todos los registros: select *from prestamos; 5- Ingrese un registro colocando "default" en los campos que lo admiten y vea cómo se almacenó. insert into prestamos values('Manual de historia','32555666','2006-10-25',default,default);
select *from prestamos; 6- Intente ingresar un registro con "default values" y analice el mensaje de error (no se puede) insert into prestamos default values;
22 - Co lu mn as ca lc ul ada s (o pe ra do re s ar itm ét ic os y de co nc at ena ci ón) Primer problema: Un comercio que vende artículos de computación registra los datos de sus artículos en una tabla con ese nombre. 1- Elimine la tabla si existe: drop table if existst articulos; 2- Cree la tabla: create table articulos(
codigo int identity,
nombre varchar(20),
descripcion varchar(30),
precio smallmoney,
cantidad tinyint default 0, primary key (codigo) ); 3- Ingrese algunos registros: insert into articulos (nombre, descripcion, precio,cantidad) values ('impresora','Epson Stylus C45',400.80,20); insert into articulos (nombre, descripcion, precio) values ('impresora','Epson Stylus C85',500); insert into articulos (nombre, descripcion, precio) values ('monitor','Samsung 14',800); insert into articulos (nombre, descripcion, precio,cantidad) values ('teclado','ingles Biswal',100,50); 4- El comercio quiere aumentar los precios de todos sus artículos en un 15%. Ac tualice todos los precios empleando operadores aritméticos. update articulos set precio=precio+(precio*0.15); 5- Vea el resultado: select *from articulos; 6- Muestre todos los artículos, concatenando el nombre y la descripción de cada uno de ellos separados por coma. select nombre+','+descripcion from articulos; 7- Reste a la cantidad de todos los teclados, el valor 5, empleando el operador aritmético menos ("-") update articulos set cantidad=cantidad-5 where nombre='teclado';
23 - Alias Primer problema: Trabaje con la tabla "libros" de una librería. 1- Elimine la tabla si existe: drop table if exists libros; 2- Cree la tabla: create table libros( codigo int identity,
titulo varchar(40) not null,
autor varchar(20) default 'Desconocido',
editorial varchar(20), precio decimal(6,2), cantidad tinyint default 0, primary key (codigo) ); 3- Ingrese algunos registros: insert into libros (titulo,autor,editorial,precio) values('El aleph','Borges','Emece',25);
insert into libros values('Java en 10 minutos','Mario Molina','Siglo XXI',50.40,100); insert into libros (titulo,autor,editorial,precio,cantidad) values('Alicia en el pais de las maravillas','Lewis Carroll', 'Emece',15,50); 4- Muestre todos los campos de los libros y un campo extra, con el encabezado "monto total" en la que calcule el monto total en dinero de cada libro (precio por cantidad) select titulo, autor,editorial,precio,cantidad, precio*cantidad as 'monto total' from libros; 5- Muestre el título, autor y precio de todos los libros de editorial "Emece" y agregue dos columnas extra en las cuales muestre el descuento de cada libro, con el encabezado "descuento" y el precio con un 10% de descuento con el encabezado "precio final". select titulo,autor,precio, precio*0.1 as descuento, precio-(precio*0.1) as 'precio final' from libros where editorial='Emece'; 6- Muestre una columna con el título y el autor concatenados con el encabezado "Título y autor" select titulo+'-'+autor as "Título y autor" from libros;
24 - Funciones 25 - Funciones para el manejo de cadenas 26 - Funciones matemáticas 27 - Funciones para el uso de fechas y horas Primer problema: Una empresa almacena los datos de sus empleados en una tabla denominada "empleados". 1- Elimine la tabla si existe: drop table if exists empleados; 2- Cree la tabla: create table empleados( nombre varchar(30) not null, apellido varchar(20) not null, documento char(8), fechanacimiento datetime, fechaingreso datetime, sueldo decimal(6,2), primary key(documento) ); 3- Ingrese algunos registros: insert into empleados values ('Ana','Acosta','22222222','1970/10/10','1995/05/05',228.50); insert into empleados values ('Carlos','Caseres','25555555','1978/02/06','1998/05/05',309); insert into empleados values ('Francisco','Garcia','26666666','1978/10/15','1998/10/02',250.68); insert into empleados values ('Gabriela','Garcia','30000000','1985/10/25','2000/12/22',300.25); insert into empleados values ('Luis','Lopez','31111111','1987/02/10','2000/08/21',350.98); 4- Muestre nombre y apellido concatenados, con el apellido en letras mayúsculas, el documento precedido por "DNI Nº " y el sueldo precedido por "$ ". select nombre+space(1) + upper(apellido) as nombre, stuff(documento,1,0,'DNI Nº ') as documento, stuff (sueldo, 1, 0, '$ ') as sueldo from empleados;
5- Muestre el documento y el sueldo redondeado hacia arriba y precedido por "$ ". select documento, stuff(ceiling(sueldo),1,0,'$ ') from empleados; 6- Muestre los nombres y apellidos de los empleados que cumplen años en el mes "october" (3 registros) select nombre,apellido from empleados where datename(month,fechanacimiento)='october'; 7- Muestre los nombres y apellidos de los empleados que ingresaron en un determinado año (2 registros). select nombre,apellido from empleados where datepart (year, fechaingreso)=2000;
28 - Ordenar registros (order by) Primer problema: En una página web se guardan los siguientes datos de las visitas: número de visita, nombre, mail, pais, fecha. 1- Elimine la tabla "visitas", si existe: drop table if exists visitas; 2- Créela con la siguiente estructura: create table visitas ( numero int identity, nombre varchar(30) default 'Anonimo', mail varchar(50),
pais varchar
(20), fecha datetime, primary key(numero)); 3- Ingrese algunos registros: insert into visitas (nombre,mail,pais,fecha) values ('Ana Maria Lopez','
[email protected]','Argentina','2006-10-10 10:10'); insert into visitas (nombre,mail,pais,fecha) values ('Gustavo Gonzalez','
[email protected]','Chile','2006-10-10 21:30'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','
[email protected]','Argentina','2006-10-11 15:45'); insert into visitas (nombre,mail,pais,fecha) values ('Fabiola Martinez','
[email protected]','Mexico','2006-10-12 08:15'); insert into visitas (nombre,mail,pais,fecha) values ('Fabiola Martinez','
[email protected]','Mexico','2006-09-12 20:45'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','
[email protected]','Argentina','2006-09-12 16:20'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','
[email protected]','Argentina','2006-09-15 16:25'); 4- Ordene los registros por fecha, en orden descendente. select *from visitas order by fecha desc; 5- Muestre el nombre del usuario, pais y el nombre del mes, ordenado por pais (ascendente) y nombre del mes (descendente) select nombre,pais,datename(month,fecha) from visitas order by pais,datename(month,fecha) desc; 6- Muestre el pais, el mes, el día y la hora y ordene las visitas por nombre del mes, del día y la hora.
select nombre,mail,
datename(month,fecha) mes,
datename(day,fecha) dia,
datename(hour,fecha) hora
from
visitas order by 3,4,5; 7- Muestre los mail, país, ordenado por país, de todos los que visitaron la página en octubre (4 registros) select mail, pais from visitas where datename(month,fecha)='October' order by 2;
29 - Operadores lógicos ( and - or - not) Primer problema: Trabaje con la tabla llamada "medicamentos" de una farmacia. 1- Elimine la tabla, si existe: drop table if exists medicamentos; 2- Cree la tabla con la siguiente estructura: create table medicamentos( codigo int identity, nombre varchar(20), laboratorio varchar(20), precio decimal(5,2), cantidad tinyint, primary key(codigo) ); 3- Ingrese algunos registros: insert into medicamentos values('Sertal','Roche',5.2,100); insert into medicamentos values('Buscapina','Roche',4.10,200); insert into medicamentos values('Amoxidal 500','Bayer',15.60,100); insert into medicamentos values('Paracetamol 500','Bago',1.90,200); insert into medicamentos values('Bayaspirina','Bayer',2.10,150); insert into medicamentos values('Amoxidal jarabe','Bayer',5.10,250); 4- Recupere los códigos y nombres de los medicamentos cuyo laboratorio sea 'Roche' y cuyo precio sea menor a 5 (1 registro cumple con ambas condiciones) select codigo,nombre from medicamentos where laboratorio='Roche' and precio<5; 5- Recupere los medicamentos cuyo laboratorio sea 'Roche' o cuyo precio sea menor a 5 (4 registros): select * from medicamentos where laboratorio='Roche' or precio<5; 6- Muestre todos los medicamentos cuyo laboratorio NO sea "Bayer" y cuya cantidad sea=100 (1 registro) select * from medicamentos where not laboratorio='Bayer' and cantidad=100; 7- Muestre todos los medicamentos cuyo laboratorio sea "Bayer" y cuya cantidad NO sea=100 (2 registros): select * from medicamentos where laboratorio='Bayer' and not cantidad=100; 8- Elimine todos los registros cuyo laboratorio sea igual a "Bayer" y su precio sea mayor a 10 (1 registro eliminado) delete from medicamentos where laboratorio='Bayer' and precio>10; 9- Cambie la cantidad por 200, a todos los medicamentos de "Roche" cuyo precio sea mayor a 5 (1 registro afectado) update medicamentos set cantidad=200 where laboratorio='Roche' and precio>5; 10- Borre los medicamentos cuyo laboratorio sea "Bayer" o cuyo precio sea menor a 3 (3 registros borrados) delete from medicamentos where laboratorio='Bayer' or precio<3;
Segundo problema:
Trabajamos con la tabla "peliculas" de un video club que alquila películas en video. 1- Elimine la tabla, si existe; drop table pelicula if exists peliculas; 2- Créela con la siguiente estructura: create table peliculas( codigo int identity, titulo varchar(40) not null, actor varchar(20), duracion tinyint, primary key (codigo) ); 3- Ingrese algunos registros: insert into peliculas values('Mision imposible','Tom Cruise',120); insert into peliculas values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas values('Harry Potter y la camara secreta','Daniel R.',190); insert into peliculas values('Mision imposible 2','Tom Cruise',120); insert into peliculas values('Mujer bonita','Richard Gere',120); insert into peliculas values('Tootsie','D. Hoffman',90); insert into peliculas values('Un oso rojo','Julio Chavez',100); insert into peliculas values('Elsa y Fred','China Zorrilla',110); 4- Recupere los registros cuyo actor sea "Tom Cruise" or "Richard Gere" (3 registros) select *from peliculas where actor='Tom Cruise' or actor='Richard Gere'; 5- Recupere los registros cuyo actor sea "Tom Cruise" y duración menor a 100 (ninguno cumple ambas condiciones) select *from peliculas where actor='Tom Cruise' and duracion<100; 6- Cambie la duración a 200, de las películas cuyo actor sea "Daniel R." y cuya duración sea 180 (1 registro afectado) update peliculas set duracion=200 where actor='Daniel R.' and duracion=180; 7- Borre todas las películas donde el actor NO sea "Tom Cruise" y cuya duración sea mayor o igual a 100 (2 registros eliminados) delete from peliculas where not actor='Tom Cruise' and duracion<=100;
30 - Otros operadores relacionales (is null) Primer problema: Trabajamos con la tabla "peliculas" de un video club que alquila películas en video. 1- Elimine la tabla, si existe drop table if exists peliculas; 2- Créela con la siguiente estructura: create table peliculas( codigo int identity, titulo varchar(40) not null, actor varchar(20), duracion tinyint, primary key (codigo) ); 3- Ingrese algunos registros: insert into peliculas values('Mision imposible','Tom Cruise',120); insert into peliculas values('Harry Potter y la piedra filosofal','Daniel R.',null); insert into peliculas values('Harry Potter y la camara secreta','Daniel R.',190);
insert into peliculas values('Mision imposible 2','Tom Cruise',120); insert into peliculas values('Mujer bonita',null,120); insert into peliculas values('Tootsie','D. Hoffman',90); insert into peliculas (titulo) values('Un oso rojo'); 4- Recupere las películas cuyo actor sea nulo (2 registros) select *from peliculas where actor is null; 5- Cambie la duración a 0, de las películas que tengan duración igual a "null" (2 registros) update peliculas set duracion=0 where duracion is null; 6- Borre todas las películas donde el actor sea "null" y cuya duración sea 0 (1 registro) delete from peliculas where actor is null and duracion=0;