113 - Tipos de datos text, ntext y image (remplazados por varchar(max), nvarchar(max) y varbinary(max))


Primer problema:
En una página web se guardan los siguientes datos de las visitas: número de visita, nombre, mail, 
pais, fecha.
1- Elimine la tabla "visitas", si existe:
 if object_id('visitas') is not null
  drop table visitas;

2- Créela con la siguiente estructura:
 create table visitas (
  numero int identity,
  nombre varchar(30),
  mail varchar(50),
  pais varchar (20),
  fecha datetime
  constraint DF_visitas_fecha default getdate(),
  comentarios text
  constraint DF_visitas_comentarios default 'Ninguno',
  constraint PK_visitas
  primary key(numero)
);

3- Ingrese algunos registros:
 insert into visitas values ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','2006-10-10 10:10',null);
 insert into visitas values ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','2006-10-10 21:30',default);
 insert into visitas values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico',default,'Excelente página');
 insert into visitas values ('Mariano Perez','PerezM@hotmail.com','Argentina','2006-11-11 14:30','Muy buena y divertida');

4- Recupere todos los registros:
 select * from visitas;

5- Cuente la cantidad de visitas que tienen comentarios.
Retorna 3.

6- Intente agregar una restricción "check" al campo de tipo "text":
 alter table visitas
  add constraint CK_comentarios
  check (comentarios not like '[0-9]%');
No lo permite.

7- Intente alterar el campo de tipo "text" para que no acepte valores nulos:
 alter table visitas
  alter column comentarios text not null;
No lo permite.

8- Elimine la regla llamada "RG_texto" (si existe):
 if object_id('RG_texto') is not null
  drop rule RG_texto;

9- Cree la regla "RG_texto" que no permita que el primer caracter sea un dígito:
 create rule RG_texto
 as @valor not like '[0-9]%';

10- Asóciela al campo "nombre":
 exec sp_bindrule RG_texto, 'visitas.nombre';

11- Intente asociarla al campo "comentarios":
 exec sp_bindrule RG_texto, 'visitas.comentarios';
No lo permite.

12- Quite la restricción "default" del campo "comentarios":
 alter table visitas
  drop DF_visitas_comentarios;

13- Ingrese un registro con valores por defecto y recupere todos los registros:
 insert into visitas default values;
 select * from visitas;

14- Elimine el valor predeterminado llamado "VP_SinComentarios":
 if object_id('VP_Sincomentarios') is not null
  drop default VP_Sincomentarios;

15- Cree un valor por defecto que almacene el valor "Sin comentarios":
 create default VP_Sincomentarios
  as 'Sin comentarios';

16- Asócielo al campo "comentarios":
 exec sp_bindefault VP_Sincomentarios, 'visitas.comentarios';

17- Ingrese un registro con valores por defecto y recupere todos los registros:
 insert into visitas default values;
 select * from visitas;

18- Borre la tabla y creela nuevamente con el campo comentarios con tipo varchar(max)
Ver solución

 if object_id('visitas') is not null
  drop table visitas;

 create table visitas (
  numero int identity,
  nombre varchar(30),
  mail varchar(50),
  pais varchar (20),
  fecha datetime
  constraint DF_visitas_fecha default getdate(),
  comentarios text
  constraint DF_visitas_comentarios default 'Ninguno',
  constraint PK_visitas
  primary key(numero)
);

 insert into visitas values ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','2006-10-10 10:10',null);
 insert into visitas values ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','2006-10-10 21:30',default);
 insert into visitas values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico',default,'Excelente página');
 insert into visitas values ('Mariano Perez','PerezM@hotmail.com','Argentina','2006-11-11 14:30','Muy buena y divertida');

 select *from visitas;

 select count(*)
  from visitas
  where comentarios is not null;

 alter table visitas
  add constraint CK_comentarios
  check (comentarios not like '[0-9]%');

 alter table visitas
  alter column comentarios text not null;

 if object_id('RG_texto') is not null
  drop rule RG_texto;

 create rule RG_texto
 as @valor not like '[0-9]%';

 exec sp_bindrule RG_texto, 'visitas.nombre';

 exec sp_bindrule RG_texto, 'visitas.comentarios';

 alter table visitas
  drop DF_visitas_comentarios;

 insert into visitas default values;
 select *from visitas;

 if object_id('VP_Sincomentarios') is not null
  drop default VP_Sincomentarios;

 create default VP_Sincomentarios
  as 'Sin comentarios';

 exec sp_bindefault VP_Sincomentarios, 'visitas.comentarios';

 insert into visitas default values;
 select * from visitas;

 if object_id('visitas') is not null
  drop table visitas;

 create table visitas (
  numero int identity,
  nombre varchar(30),
  mail varchar(50),
  pais varchar (20),
  fecha datetime
  constraint DF_visitas_fecha default getdate(),
  comentarios varchar(max)
  constraint DF_visitas_comentarios default 'Ninguno',
  constraint PK_visitas
  primary key(numero)
);

 insert into visitas values ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','2006-10-10 10:10',null);
 insert into visitas values ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','2006-10-10 21:30',default);
 insert into visitas values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico',default,'Excelente página');
 insert into visitas values ('Mariano Perez','PerezM@hotmail.com','Argentina','2006-11-11 14:30','Muy buena y divertida');

 select * from visitas;



 

Retornar