The best I can gather from the documentation is that "signed" or "unsigned" refers to the plus or minus sign a person would traditionally use to indicate a positive or negative value. So an UNSIGNED numeric value can never be negative.
Therefore, if you have a column that you want to contain a numeric value, but never hold a negative value, I guess you could apply the UNSIGNED modifier to the data type.
the biggest difference is an unsigned number cannot be negative (just as stated above)
but the benefit of usign an unsigned number is that you can have a greater range of positive numbers.
Tinyint: The signed range is -128 to 127. The unsigned range is 0 to 255. Mediumint: The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215. Bigint: The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615.
you get the point from there, a great use of unsigned numbers is for any column that has an auto_increment flag on it, since it will never be negative
If you're in one of those predicaments where cls.__private attributes just aren't enough since they can easily be accessed through inst._cls__private, and you need something a little more secure, here's ...