intresting. and some other information about them:
The presence of an AUTO_INCREMENT column implicitly limits the number of rows a table may have. For example, if the column is TINYINT UNSIGNED, the maximum value it may hold is 255, so that also becomes the maximum number of rows the table may hold. Larger integer types allow more rows. More generally, including any PRIMARY KEY or UNIQUE index in a table limits its row count to the maximum number of unique values in the index.
AUTO_INCREMENT is a column attribute that should be used only with integer types. That immediately limits your choices to TINYINT tHRough BIGINT.
An AUTO_INCREMENT column is intended only for generating sequences of positive values, so you should define it as UNSIGNED.
AUTO_INCREMENT columns must be indexed. Furthermore, to prevent duplicates in the column, the index must be unique. This means you must define the column as a PRIMARY KEY or as a UNIQUE index.
AUTO_INCREMENT columns must be NOT NULL.
You define it like this:
mycol integer_type UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (mycol)
Or like this:
mycol integer_type UNSIGNED NOT NULL AUTO_INCREMENT,
UNIQUE (mycol)
It seems that marking a column as AUTO_INCREMENT shoud be follwed by marking it as a primary or uniqe feature to prevent duplicates in record set values, but most of our uses from db may include duplicate values and even we check for example when registering an email address by programming, so i think there are less times that may need primary or uniqe columns rather than indexed columns?