How to create a table with multiple data type like char short int string in mysql? Now I have two way to do this as below, but I do not know which is better and is there some better way?  

CREATE TABLE `params_value1` (  
  `params_id` int(11) NOT NULL AUTO_INCREMENT,  
  `params_value_int8` tinyint(4) DEFAULT NULL,  
  `params_value_int16` smallint(1) DEFAULT NULL,  
  `params_value_int32` int(11) DEFAULT NULL,  
  `params_value_string` varchar(32) DEFAULT NULL,  
  PRIMARY KEY (`params_id`),  
  UNIQUE KEY `params_id_UNIQUE` (`params_id`)  
) ENGINE=InnoDB DEFAULT CHARSET=latin1;  


OR 

CREATE TABLE `params_value2` (  
  `params_id` int(11) NOT NULL AUTO_INCREMENT,  
  `params_value` varchar(32) NOT NULL,  
  PRIMARY KEY (`params_id`),  
  UNIQUE KEY `params_id_UNIQUE` (`params_id`)  
) ENGINE=InnoDB DEFAULT CHARSET=latin1;  


The follow picture is main tab used:
Entity-Attribute-Value is the nightmare you are embarking on.  See the additional tag I added.  See a similar tag in stackoverflow.com; there is a lot more discussion there.

It is traditional to have another column in the Attribute table:  entity_id, attribute, value.  Your question applies to how to store value; that is only part of the nightmare.

In the cases of integers, simply make it BIGINT; that will hold the various sizes (with a little wasted space), and simplify your code some.