Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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;
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;
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),
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),
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;
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;
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
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');
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;
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;
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';
______________________________________________________________ 1234 2234 3344 3346 25666777 27888999 27888999 32111222 Pedro Perez Juan Lopez Juan Lopez 500000.60 -250000 4000.50
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;
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);
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;
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;
datename(month,fecha) mes,
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;
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;
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;