You cannot name a PRIMARY KEY. The name PRIMARY KEY is the designation of the arbitrary, or preferred, unique index ([**candidate key**][1]) for accessing the table. A table can have multiple unique keys, but only one PRIMARY KEY.

EXAMPLE: Employee table with three unique keys

- EmployeeID
- Driver's License Number
- Social Security Number

You can pick a name out of a hat, flip a coin, or ask project managers which one of the three indexes should be the PRIMARY KEY.

You can create a unique index without it being the PRIMARY KEY as follows:

    create table a (foo INTEGER, UNIQUE KEY foo_id (foo)); 

Check these other links about PRIMARY KEYs vs Unique Keys

- https://dba.stackexchange.com/questions/1355/why-do-primary-keys-have-names-of-their-own
- https://dba.stackexchange.com/questions/9265/what-is-the-point-of-a-primary-key

As for the other question: the Index Type

When it comes to the Index Type, here are the defaults:

- The [*MEMORY storage engine*][2] and [*NDB (MySQL Cluster)*][3] use HASH as the index_type.
 - You could specify BTREE as the index type
 - It tends to bloat more than HASH indexes

- The index_type for MyISAM and InnoDB is BTREE.
 - [*MyISAM and InnoDB DO NOT SUPPORT HASH INDEXES*][4]
 - [*You have to emulate HASH indexing*][5]

To find out the index type, run this query:

    select index_name,index_type from information_schema.statistics
    where table_schema='test' and table_name='a';

Here is an example:

    mysql> use test
    Database changed
    mysql> create table a (foo INTEGER, PRIMARY KEY foo_id (foo));
    Query OK, 0 rows affected (0.07 sec)
    
    mysql> show create table a\G
    *************************** 1. row ***************************
           Table: a
    Create Table: CREATE TABLE `a` (
      `foo` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`foo`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)
    
    mysql> select index_name,index_type from information_schema.statistics
        -> where table_schema='test' and table_name='a';
    +------------+------------+
    | index_name | index_type |
    +------------+------------+
    | PRIMARY    | BTREE      |
    +------------+------------+
    1 row in set (0.00 sec)
    
    mysql>

  [1]: http://en.wikipedia.org/wiki/Candidate_key
  [2]: http://dev.mysql.com/doc/refman/5.5/en/memory-storage-engine.html
  [3]: http://www.mysql.com/products/cluster/mysql-cluster-datasheet.pdf
  [4]: https://dba.stackexchange.com/questions/2817/why-does-mysql-not-have-hash-indices-on-myisam-or-innodb
  [5]: https://dba.stackexchange.com/a/2818/877