Temporary Table
create table #temptable {
 id int,
 name nvarchar(50)
};
select * into #temptable from UserTable;
Features
 - Table name begin with '#'
 
 - Table will be automatically dropped when session closed
 
 - Manually drop table will be suggested
 
 - Temporary table will be stored at database 'tempdb'
 
 - Different session/user can create temporary table with same table name
 
 - Index supported
 
Table Variables
declare @temptable table{
 id int,
 name nvarchar(50)
};
Features
 - Table name begin with '@'
 
 - Table do not need drop
 
 - Table data only exist in memory
 
 - Can not create from select statement