Está en la página 1de 29

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 bdd

Primer problema:
Necesita almacenar los datos de sus amigos en una tabla. Los datos que guardar sern: apellido, nombre, domicilio y telfono. 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 carcter invlido ("/") 3- Cree una tabla llamada "agenda", debe tener los siguientes campos: apellido, varchar(30); nombre, varchar(20); domicilio, varchar (30) y telefono, varchar(11): create table agenda(apellido varchar(30), nombre varchar(20), domicilio 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; //Error 1051

Segundo problema:
Necesita almacenar informacin referente a los libros de su biblioteca personal. Los datos que guardar sern: ttulo 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) y editorial, varchar(15). create table libros (titulo 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 informacin de sus amigos. 1- Elimine la tabla "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 creacin de "agenda" show tables; 4- Visualice la estructura de la tabla "agenda". desc agenda; 5- Ingrese los siguientes registros: insert into agenda (apellido, nombre, domicilio, telefono) values ('Moreno','Alberto','Colon 123','4234567'); insert into agenda (apellido,nombre, domicilio, telefono) values ('Torres','Juan','Avellaneda 135','4458787'); 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 bsicos


Primer problema:
Un videoclub que alquila pelculas en video almacena la informacin de sus pelculas en una tabla llamada "peliculas"; para cada pelcula necesita los siguientes datos: -nombre, cadena de caracteres de 20 de longitud, -actor, cadena de caracteres de 20 de longitud, -duracin, valor numrico 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), sueldobasico float ); 3- Vea la estructura de la tabla: desc empleados; 4- Ingrese algunos registros: insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) 'Sarmiento 123', 500); insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) '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; values ('Ana Acosta', '24555666', 'f', values ('Juan Perez', '22333444', 'm', documento varchar(8), sexo varchar(1), domicilio varchar(30),

5 - Recuperar algunos campos (select)


Primer problema:
Un videoclub que alquila pelculas en video almacena la informacin de sus pelculas 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 ttulo y actor de todas las pelculas select titulo, actor from peliculas; 6- Muestre el ttulo y duracin de todas las peliculas select titulo, duracion from peliculas; 7- Muestre el ttulo 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( sueldobasico float ); 3- Vea la estructura de la tabla: desc empleados; 4- Ingrese algunos registros: insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) 'Sarmiento 123', 500); insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) '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 bsico de todos los empleados select documento, sexo, sueldobasico from empleados; values ('Ana Acosta', '27888999', 'f', values ('Juan Juarez', '22333444', 'm', nombre varchar(20), documento varchar(8), sexo varchar(1), domicilio varchar(30),

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 telfono "4545454" (2 registros) select nombre from agenda where telefono = 4545454;

Segundo problema:
Trabaje con la tabla "libros" de una librera que guarda informacin 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 ttulos 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 artculos de computacin registra los datos de sus artculos 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) 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','espaol Biswal',90,50); 5- Seleccione los datos de las impresoras (2 registros) select *from articulos where nombre =impresora; 6- Seleccione los artculos cuyo precio sea mayor o igual a 400 (3 registros) select *from articulos where precio >= 400; 7- Seleccione el cdigo y nombre de los artculos cuya cantidad sea menor a 30 (2 registros) select codigo, nombre from articulos where cantidad < 30; 8- Seleccione el nombre y descripcin de los artculos que NO cuesten $100 (4 registros) select nombre, descripcion from articulos where precio <> 100; values (1,'impresora','Epson Stylus

Segundo problema:
Un video club que alquila pelculas en video almacena la informacin de sus pelculas 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 pelculas cuya duracin no supere los 90 minutos (2 registros) select *from peliculas where duracion <= 90;

5- Seleccione el ttulo de todas las pelculas en las que el actor NO sea "Tom Cruise" (2 registros) select titulo from peliculas where actor <> Tom Cruise; 6- Muestre todos los campos, excepto "duracion", de todas las pelculas de las que haya ms 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 informacin 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 nmero telefnico 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 artculos de computacin registra los datos de sus artculos 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','espaol Biswal',90,50); 5- Elimine los artculos 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 artculos cuyo cdigo sea diferente a 4 (1 registro) delete from articulos where codigo<>4; 9- Mostrar la tabla despus 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 nmero telefnico 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" (ningn registro afectado porque ninguno cumple con la condicin del "where") update agenda set nombre='Juan Jose' where nombre='Juan';

7 - Luego de cada actualizacin ejecute un select que muestre todos los registros de la tabla select *from agenda;

Segundo problema:
Trabaje con la tabla "libros" de una librera. 1- Elimine la tabla si existe: drop table if exists libros; 2- Crela 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" (ningn registro afectado porque ninguno cumple la condicin) 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 actualizacin 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 informacin 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 vaca 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 cdigo y cantidad y cadena vaca 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 vaca 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 vaca, 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 pelculas, llamada "peliculas". 1- Elimine la tabla si existe: drop table if exists peliculas; 2- Crela 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 cmo 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 vaca (note que la salida es distinta) (1 registro) select * from peliculas where actor is null; 8- Modifique los registros que tengan valor de duracin 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 vaca 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 ttulo sea una cadena vaca (1 registro) delete from peliculas where titulo=;

12 - Clave primaria
Primer problema:

Trabaje con la tabla "libros" de una librera. 1- Elimine la tabla si existe: drop table if exists libros; 2- Crela 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 cdigo 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 cdigo del libro "Martin Fierro" a "1" (mensaje de error) update libros set codigo=1 where titulo='Martin Fierro';

Segundo problema:
Un instituto de enseanza 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) 348'); 6- Intente ingresar un alumno con nmero de documento existente (no lo permite) insert into alumnos (legajo,documento,nombre,domicilio) values('A642','23545345','Gonzalez Analia','Caseros 444'); values('A567','23545345','Morales Marcos','Avellaneda

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 informacin 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 automticamente: 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 "cdigo" de modo automtico: 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 cdigo (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 campo cdigo: select *from medicamentos;

Segundo problema:
Un videoclub almacena informacin sobre sus pelculas en una tabla llamada "peliculas". 1- Elimine la tabla si existe: drop table if exists peliculas; 2- Crela 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 automtica de los cdigos: select *from peliculas; 6- Intente actualizar el codigo de una pelcula (aparece un mensaje de error) update peliculas set codigo=7 where codigo=4; 7- Elimine la pelcula "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 caractersticas del atributo Identity (B)


Primer problema:
Una farmacia guarda informacin 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 automticamente comenzando en 10 e incrementndose 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 "cdigo" de modo automtico: 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 opcin "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 funcin "ident_seed()" para averiguar el valor de inicio del campo "identity" de la tabla "medicamentos" select ident_seed('medicamentos'); 10- Emplee la funcin "ident_incr()" para saber cul es el valor de incremento del campo "identity" de "medicamentos" select ident_incr('medicamentos');

Segundo problema:
Un videoclub almacena informacin sobre sus pelculas en una tabla llamada "peliculas". 1- Elimine la tabla si existe: drop table if exists peliculas; 2- Crela 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 automtica de los cdigos: select *from peliculas; 5- Setee la opcin "identity_insert" en "on" set identity_insert peliculas on; 6- Ingrese un registro con valor de cdigo 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 cdigo 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 cdigo. insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90);

11- Desactive la opcin se insercin para el campo de identidad. set identity_insert peliculas off; 12- Ingrese un nuevo registro y muestre todos los registros para ver cmo 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 enseanza 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 mustrelos para ver la secuencia de cdigos: 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 seleccinelos para ver cmo SQL Server gener los cdigos: 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 artculos de computacin registra los datos de sus artculos 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 mustrelos para ver que la secuencia de cdigos 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','espaol Biswal',90); select *from articulos; 6- Elimine todos los registros con "delete". delete from articulos; 7- Ingrese algunos registros y mustrelos para ver que la secuencia de cdigos 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','espaol 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 ao 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- Crela eligiendo el tipo de dato ms 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 definicin de los campos. Se utiliza char(8) para el documento porque siempre constar de 8 caracteres. Para el nmero telefnico se usar "varchar" y no un tipo numrico porque si bien es un nmero, con l no se realizarn operaciones matemticas. 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 (numrico)


Primer problema:
Un banco tiene registrados las cuentas corrientes de sus clientes en una tabla llamada "cuentas". La tabla contiene estos datos: Nmero de Cuenta Documento Nombre Saldo

______________________________________________________________ 1234 2234 3344 3346 25666777 27888999 27888999 32111222 Pedro Perez Juan Lopez Juan Lopez 500000.60 -250000 4000.50

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: - Nmero 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 nmero 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 nmero 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),

sueldobasico decimal (7, 2), cantidadhijos tinyint); 3- Ingrese algunos registros: insert into empleados (nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos) '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); values ('Juan Perez',

4- Ingrese un valor de "sueldobasico" con ms decimales que los definidos (redondea los decimales al valor ms cercano 800.89): insert into empleados (nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos) '29000555', 'f','Salta 876',800.888,3); 5- Intente ingresar un sueldo que supere los 7 dgitos (no lo permite) insert into empleados (nombre,documento,sexo,domicilio,sueldobasico,cantidadhijos) values ('Marta values ('Susana Molina',

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 "da-mes-ao": 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 dgito para da y mes y 2 para el ao: insert into alumnos values('Juarez','Bernardo','25555555','Sucre 456','03-03-1991','15/02/1972'); 6- Ingrese un alumnos empleando 2 dgitos para el ao de la fecha de ingreso 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-ao". 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 algn 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 informacin de las columnas "COLUMN_DEF" y "IS_NULLABLE": desc visitantes; 5- Ingrese algunos registros sin especificar valores para algunos campos para ver cmo opera la clusula "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',

'marcostorres@hotmail.com'); 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',

'marcelomorales@hotmail.com', default); 7- Ingrese un registro con "default values". insert into visitantes default values;

Segundo problema:
Una pequea biblioteca de barrio registra los prstamos de sus libros en una tabla llamada "prestamos". En ella almacena la siguiente informacin: ttulo del libro, documento de identidad del socio a quien se le presta el libro, fecha de prstamo, 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 cmo 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 - Columnas calculadas (operadores aritmticos y de concatenacin) Primer problema:


Un comercio que vende artculos de computacin registra los datos de sus artculos 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 artculos en un 15%. Actualice todos los precios empleando operadores aritmticos. update articulos set precio=precio+(precio*0.15); 5- Vea el resultado: select *from articulos; 6- Muestre todos los artculos, concatenando el nombre y la descripcin 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 aritmtico menos ("-") update articulos set cantidad=cantidad-5 where nombre='teclado';

23 - Alias
Primer problema:
Trabaje con la tabla "libros" de una librera. 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 ttulo, 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 ttulo y el autor concatenados con el encabezado "Ttulo y autor" select titulo+'-'+autor as "Ttulo y autor" from libros;

24 - Funciones 25 - Funciones para el manejo de cadenas 26 - Funciones matemticas 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 maysculas, 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 aos 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 ao (2 registros). select nombre,apellido from empleados where datepart (year, fechaingreso)=2000;

28 - Ordenar registros (order by)


Primer problema:
En una pgina web se guardan los siguientes datos de las visitas: nmero de visita, nombre, mail, pais, fecha. 1- Elimine la tabla "visitas", si existe: drop table if exists visitas; 2- Crela 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','AnaMaria@hotmail.com','Argentina','2006-10-10 10:10'); insert into visitas (nombre,mail,pais,fecha) values ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','2006-10-10 21:30'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-10-11 15:45'); insert into visitas (nombre,mail,pais,fecha) values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-10-12 08:15'); insert into visitas (nombre,mail,pais,fecha) values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-09-12 20:45'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-09-12 16:20'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','JuanJosePerez@hotmail.com','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 da y la hora y ordene las visitas por nombre del mes, del da y la hora.

select nombre,mail, visitas order by 3,4,5;

datename(month,fecha) mes,

datename(day,fecha) dia, datename(hour,fecha) hora

from

7- Muestre los mail, pas, ordenado por pas, de todos los que visitaron la pgina en octubre (4 registros) select mail, pais from visitas where datename(month,fecha)='October' order by 2;

29 - Operadores lgicos ( 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 cdigos 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 pelculas en video. 1- Elimine la tabla, si existe; drop table pelicula if exists peliculas; 2- Crela 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 duracin menor a 100 (ninguno cumple ambas condiciones) select *from peliculas where actor='Tom Cruise' and duracion<100; 6- Cambie la duracin a 200, de las pelculas cuyo actor sea "Daniel R." y cuya duracin sea 180 (1 registro afectado) update peliculas set duracion=200 where actor='Daniel R.' and duracion=180; 7- Borre todas las pelculas donde el actor NO sea "Tom Cruise" y cuya duracin 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 pelculas en video. 1- Elimine la tabla, si existe drop table if exists peliculas; 2- Crela 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 pelculas cuyo actor sea nulo (2 registros) select *from peliculas where actor is null; 5- Cambie la duracin a 0, de las pelculas que tengan duracin igual a "null" (2 registros) update peliculas set duracion=0 where duracion is null; 6- Borre todas las pelculas donde el actor sea "null" y cuya duracin sea 0 (1 registro) delete from peliculas where actor is null and duracion=0;