sentencia sql hotmail a 100%


create database hotmail;


create table categoria (
idcategoria int primary key,
nomcategoria nvarchar (25)
)
go
create table carpeta (
idcarpeta int primary key,
nomcarpeta nvarchar (25)
)
go

create table mensajes(
nºmensaje int primary key,
emaildeenvio nvarchar (60),
mensajenviado nvarchar (250)
)
go



create table entrada (
identrada int primary key,
nºmensaje int,

constraint fk_entrada_mensaje foreign key (nºmensaje)
references mensajes (nºmensaje)
)
go 

create table menu (
idmenu int primary key,
nommenu nvarchar (25),
idcategoria int
constraint fk_menu_categoria foreign key (idcategoria)
references categoria (idcategoria)
)
go

create table usuario(
email nvarchar (60) primary key,
contraseña nvarchar (20),
nombre nvarchar (50),
apellido nvarchar (60),
idmenu int,
idcarpeta int,
identrada int,

constraint fk_usuario_menu foreign key (idmenu)
references menu (idmenu),
constraint fk_usuario_carpeta foreign key (idcarpeta)
references carpeta (idcarpeta),
constraint fk_usuario_entrada foreign key (identrada)
references entrada(identrada)
)
go

create table conctato (
msnconcta nvarchar (60) primary key,
nombre nvarchar (50),
apellido nvarchar (60)
)
go


create table mesenger (
email nvarchar (60),
msnconcta nvarchar (60),

constraint pk_mesenger primary key  (email,msnconcta),
constraint fk_mesenger_usuario foreign key (email)
references usuario (email),
constraint fk_mesenger_conctato foreign key (msnconcta)
references conctato (msnconcta)
)
go

create table grupo (
nomgrup varchar (30) primary key,
estado bit default(0)
)
go

alter table conctato 
add nomgrup varchar (30)

alter table conctato
add constraint fk_conctato_grupo  foreign key  (nomgrup)
references grupo (nomgrup)
   

create table perfil (
email nvarchar (60),
msnconcta nvarchar (60),

constraint pk_perfil primary key (email,msnconcta),
constraint fk_perfil_usuario foreign key (email)
references usuario (email),
constraint fk_perfil_conctato foreign key (msnconcta)
references conctato (msnconcta)
)


create table opciones (
idopcion int primary key, 
nomopciones varchar (15),
idioma varchar (15),
pais varchar (15),
edad int

)

alter table categoria
add idopcion int

alter table categoria
add constraint fk_categoria_opciones foreign key (idopcion)
references opciones (idopcion)


alter table usuario 
add clavede11nº varchar (11) 

create table recuperar_clave (
email nvarchar (60),
clavede11nº varchar (11),

constraint pk_recuperar_claver primary key (email, clavede11nº),
)

alter table recuperar_clave 
add constraint fk_recuperar_clave_usuario foreign key (email)
references usuario (email)

create view recuperarclave 
as 
(
select email,
      clavede11nº
from recuperar_clave
 )

CREATE VIEW CarpetasH
AS
(
SELECT idcarpeta, 
       nomcarpeta 
       
FROM carpeta


CREATE VIEW MensajesH
AS
(
SELECT [nºmensaje],
       emaildeenvio,
       mensajenviado       
FROM mensajes


create view  entradasH
as
(
select identrada,
       [nºmensaje]
from entrada
)    

create view categoriasH
as
(
select idcategoria,
       nomcategoria
from categoria
)

create view menuH
as 
(
select idmenu,
       nommenu,
       idcategoria
from menu
)

create view grupoh
as 
(
select nomgrup,
       estado 
from grupo
)

create view conctatoH
as
(
select msnconcta,
       nombre,
       apellido,
       nomgrup
from conctato
)  

create view mesengerH
as
(
select email,
       msnconcta
from mesenger
)

create view usuarioH
as
(
select email,
       contraseña,
       nombre,
       apellido,
       idmenu,
       idcarpeta,
       identrada
from usuario
)


create view perfilH 
as
(
select email,
       msnconcta
from perfil
)

create view crear_usuario 
as
(
select email,
       contraseña,
       nombre,
       apellido
from usuario
)

------------agregar conctacto

create procedure sp_insertConctactos  (@msnconcta nvarchar(60), @nombre  nvarchar (50), @apellido nvarchar (60) )
as
Begin
Begin Tran T1
insert into conctato(msnconcta, nombre, apellido ) 
values (@msnconcta, @nombre, @apellido) 

if @@error <> 0 
commit 
else
Begin 
RAISERROR ('Un error ha ocurrido al insertar el mesenger',10,1,1);
rollback 
end
End

GO


----actualizar mesenger
create procedure sp_updatemesenger  (@msnconcta nvarchar(60), @email nvarchar (60))
as
Begin
Begin Tran T1
Update mesenger set msnconcta=@msnconcta, email= @email
Where msnconcta = @msnconcta

if @@error <> 0 
commit 
else
Begin   
RAISERROR ('Un error ha ocurrido al actualizar el mesneger',10,1);
rollback 
end
End

GO
-------------insertar mensaje
create procedure sp_insertmensajes (@nºmensaje int, @emaildeenvio  nvarchar (60), @mensajenviado nvarchar (250) )
as
Begin
Begin Tran T1
insert into mensajes(nºmensaje, emaildeenvio, mensajenviado ) 
values (@nºmensaje, @emaildeenvio,@mensajenviado) 

if @@error <> 0 
commit 
else
Begin 
RAISERROR ('Un error ha ocurrido al insertar el mensaje',10,1,1);
rollback 
end
End

GO

-----actualizar entradas

create procedure sp_updatentrada  (@identrada int, @nºmensaje int)
as
Begin
Begin Tran T1
Update entrada set identrada =@identrada,nºmensaje=@nºmensaje
Where nºmensaje=@nºmensaje

if @@error <> 0 
commit 
else
Begin   
RAISERROR ('Un error ha ocurrido al actualizar el mesneger',10,1);
rollback 
end
End

GO


-------------------------borrar mensaje
create procedure sp_deletemensaje  (@nºmensaje int)
as
Begin
Begin Tran T1
IF not exists (select * from entrada where nºmensaje = @nºmensaje)
Delete mensajes Where nºmensaje= @nºmensaje
Else
RAISERROR ('No se puede eliminar esta mensaje',10,1)
if @@error <> 0 
commit 
else
Begin
RAISERROR ('Un error ha ocurrido al eliminar el mensaje',10,1);
rollback 
end
End
Go

--------------------actualizar la edad-----------
create function fnactualizaredad (@edad int)
returns int
as
begin
           

return (@edad)
end


-----------------buscar texto---------------

create PROC SearchAllTables(@SearchStr nvarchar(100)) AS

BEGIN

CREATE TABLE #Results (ColumnName text, ColumnValue text)


SET NOCOUNT ON


DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)

SET @TableName = ''

SET @SearchStr2 = QUOTENAME('%' + rtrim(@SearchStr)+'%' ,'''')


WHILE @TableName IS NOT NULL

BEGIN

SET @ColumnName = ''

SET @TableName =

(

SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_TYPE = 'BASE TABLE'

AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName

AND OBJECTPROPERTY(

OBJECT_ID(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)), 'IsMSShipped') = 0

)


WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)

BEGIN

SET @ColumnName =

(

SELECT MIN(QUOTENAME(COLUMN_NAME))

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)

AND TABLE_NAME = PARSENAME(@TableName, 1)

AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'uniqueidentifier','tinyint', 'smallint', 'int')

AND QUOTENAME(COLUMN_NAME) > @ColumnName

)


IF @ColumnName IS NOT NULL

BEGIN

INSERT INTO #Results

EXEC

(

'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)

FROM ' + @TableName + ' (NOLOCK) ' +

' WHERE ' + @ColumnName + ' LIKE ' + 'rtrim(' + @SearchStr2 + ')'

)

END

END

END


SELECT ColumnName, ColumnValue FROM #Results print @searchstr2

END


---insertado carpeta 

insert into  carpeta (idcarpeta,nomcarpeta)
values (1,'entrada')
insert into  carpeta (idcarpeta,nomcarpeta)
values (2,'borradores')
insert into  carpeta (idcarpeta,nomcarpeta)
values (3,'eliminados')

---insertar opciones

insert into opciones (idopcion,nomopciones,idioma,pais,edad)
values (1,'actualizar','español','peru',5)

insert into opciones (idopcion,nomopciones,idioma,pais,edad)
values (2,'eliminar','español','colombia',6)

insert into opciones (idopcion,nomopciones,idioma,pais,edad)
values (3,'analizar','español','peru',7)


---insertado categorias

insert into categoria (idcategoria,nomcategoria,idopcion)
values (101,'nuevo',1)
insert into categoria (idcategoria,nomcategoria,idopcion)
values (102,'eliminar',2)
insert into categoria (idcategoria,nomcategoria,idopcion)
values (103,'correo no deseado',3)
insert into categoria (idcategoria,nomcategoria,idopcion)
values (104,'limpiar',2)
insert into categoria (idcategoria,nomcategoria,idopcion)
values (105,'marcar',1)
insert into categoria (idcategoria,nomcategoria,idopcion)
values (106,'mover a',3)


-----insertar grupo
insert into grupo (nomgrup,estado)
values ('conectado',1)


insert into grupo (nomgrup,estado)
values ('desconectado',2)

----insertar conctato 
insert into conctato (msnconcta,nombre,apellido)
values ('elmejor@thecompany.com','jhimi','pezo mori')

insert into conctato (msnconcta,nombre,apellido)
values ('elmejor1@thecompany.com','jhimi','pezo mori')

insert into conctato (msnconcta,nombre,apellido)
values ('elmejor2@thecompany.com','jhimi','pezo mori')

insert into conctato (msnconcta,nombre,apellido)
values ('elmejor23@thecompany.com','jhimi','pezo mori')

----insertar mensajes

insert into mensajes ([nºmensaje],emaildeenvio,mensajenviado)
values (1,'elcazador@hotmail.com','como estas')


insert into mensajes ([nºmensaje],emaildeenvio,mensajenviado)
values (2,'elcazador_45@gmail.com','base de dato lo mejor')


insert into mensajes ([nºmensaje],emaildeenvio,mensajenviado)
values (3,'yugioh_elcazador@cr.com','como estas ing')

---------insertar entrada-----

insert into entrada (identrada,[nºmensaje])
values (1,1)

insert into entrada (identrada,[nºmensaje])
values (2,2)

insert into entrada (identrada,[nºmensaje])
values (3,3)

--------insertar menu 

insert into menu (idmenu,nommenu)
values (1,'bandeja de entradas')

insert into menu (idmenu,nommenu)
values (2,'correo no deseados')

insert into menu (idmenu,nommenu)
values (3,'imagenes ')


-------------------insertar usuario 

insert into usuario (email,contraseña,nombre,apellido,idmenu,idcarpeta,identrada,[clavede11nº])
values ('jhimi_zx@hotmail.com','sakurazxadvent','jhimi','pezo',1,1,1,'15482679312') 

insert into usuario (email,contraseña,nombre,apellido,idmenu,idcarpeta,identrada,[clavede11nº])
values ('jhimi_zeo@hotmail.com','sakurazxadvent','jhimi','pezo',1,1,1,'15482679312') 

insert into usuario (email,contraseña,nombre,apellido,idmenu,idcarpeta,identrada,[clavede11nº])
values ('jhimizeo@hotmail.com','sakurazxadventa','jhimis','pezo mori',1,1,1,'15482679312') 

------insertar mesenger

insert into mesenger (email,msnconcta)
values ('jhimi_zx@hotmail.com','elmejor1@thecompany.com')


insert into mesenger (email,msnconcta)
values ('jhimi_zeo@hotmail.com','elmejor1@thecompany.com')


--------insertar perfil


insert into perfil (email,msnconcta)
values ('jhimi_zx@hotmail.com','elmejor1@thecompany.com')


insert into perfil (email,msnconcta)
values ('jhimi_zeo@hotmail.com','elmejor1@thecompany.com')


--------trigger perfil

create trigger trg_actualizaemail on [dbo].[perfil]
for insert 
as
 
update perfil set  msnconcta = inserted.msnconcta
from perfil inner join inserted on
perfil.msnconcta =inserted.msnconcta

update conctato set  msnconcta = inserted.msnconcta
from conctato inner join inserted on
conctato.msnconcta =inserted.msnconcta

--------------------trigger mesenger


create trigger trg_actualizaconctato on [dbo].[mesenger]
for insert 
as
 
update mesenger set  msnconcta = inserted.msnconcta
from mesenger inner join inserted on
mesenger.msnconcta =inserted.msnconcta

update conctato set  msnconcta = inserted.msnconcta
from conctato inner join inserted on
conctato.msnconcta =inserted.msnconcta

------------trigger usuario---


create trigger trg_actualizusuario on [dbo].[usuario]
for insert 
as
 
update usuario set  idmenu = inserted.idmenu
from usuario inner join inserted on
usuario.idmenu =inserted.idmenu

update menu set  idmenu = inserted.idmenu
from menu inner join inserted on
menu.idmenu =inserted.idmenu

-----------actualizar usuario carpeta


create trigger trg_actualizusuario1 on [dbo].[carpeta]
for insert 
as
 
update carpeta set  idcarpeta = inserted.idcarpeta
from carpeta inner join inserted on
carpeta.idcarpeta =inserted.idcarpeta

update usuario set  idcarpeta = inserted.idcarpeta
from usuario inner join inserted on
usuario.idcarpeta =inserted.idcarpeta

----trigger entrada 
create trigger trg_actualizusuario2 on [dbo].[entrada]
for insert 
as
 
update entrada set  identrada = inserted.identrada
from entrada inner join inserted on
entrada.identrada =inserted.identrada

update usuario set  identrada = inserted.identrada
from usuario inner join inserted on
usuario.identrada =inserted.identrada

------------- trigger conctacto 


create trigger trg_actualizarconctato on [dbo].[conctato]
for insert 
as
 
update conctato set  nomgrup = inserted.nomgrup
from conctato inner join inserted on
conctato.nomgrup =inserted.nomgrup

update grupo set  nomgrup = inserted.nomgrup
from grupo inner join inserted on
grupo.nomgrup =inserted.nomgrup

----------trigger de categorias 

create trigger trg_actualizarcategoria on [dbo].[categoria]
for insert 
as
 
update categoria set  idopcion = inserted.idopcion
from categoria inner join inserted on
categoria.idopcion =inserted.idopcion

update opciones set  idopcion = inserted.idopcion
from opciones inner join inserted on
opciones.idopcion =inserted.idopcion