第一,创建表的时候,在你想要变主键的字段后面加primary key就可以了。加了primary

key之后,就会自动生成主键约束。第二,或者你已经创建好表以后,可以直接修改表结构,修改语句为,alter table 数据库表名 add primary key(字段名称),这样也可以。
首先,在创建表的时候,我们可以通过 primary key 指定某列(或某几列)为主键,那么自然而言,mysql 数据库为选定这一列(或多列)为该表的主键列。
其次,当我们没有通过 primary key 为表指定主键时,那么 MySQL 会获取第一个唯一并且不可以为空的列作为主键列。
如果上述两种方法都没有选定主键,则 MySQL 会自动为我们的表创建一个 6 个字节的隐藏列 row_id , 并且把这个列设定为我们这个表的主键列。
MYSQL中索引与主键的区别
索引:索引好比是一本书的目录,可以快速的通过页码找到你需要的那一页。惟一地标识一行。
主键:做为数据库表唯一行标识,作为一个可以被外键有效引用的对象。
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引可以大大提高MySQL的检索速度。
写mySqI复合主键三种情况:
1、创建表时直接定义复合主键,
create table 表名(列名1 数据类型,列名2 数据类型,constraint 主键约束的名字 primary key(列名1,列名2));
2、己有表定义复合主键,
alter table 表名 add constraint 主键约束的名字 primary key(列名1,列名2);
MySQL主键索引和唯一索引都可以用来确保表中的每一行数据具有唯一性,但两者之间有以下几个区别:
主键索引是一种特殊的唯一索引,它不允许为空,并且每个表只能有一个主键索引,用于唯一标识每一行数据。
唯一索引可以为空,但是在一个表中可以创建多个唯一索引,用于确保某个字段或组合字段的唯一性。
主键索引可以被其他表的外键引用,从而建立表与表之间的关联关系。
主键索引默认是聚簇索引,即数据按主键值的顺序存储,而唯一索引默认是非聚簇索引,即数据按照索引的顺序存储。
主键索引可以自动创建,如果表中没有主键,则可以通过创建一个自增ID字段来自动创建主键索引;而唯一索引需要手动创建。
总之,主键索引和唯一索引都是用来保证数据的唯一性,但是主键索引是一种特殊的唯一索引,有着更多的限制和特殊用途。
1.主键是一种约束,唯一索引是一种索引,两者在本质上是不同的;2.一张表只能有一个主键,但可以创建多个唯一索引;3.主键创建后一定包含一个唯一索引,唯一索引并一定是主键;4.主键不能为null,唯一索引可以为null;5.主键可以做为外键,唯一索引不行;
主键列在创建时,已经默认为非空值 + 唯一索引了。
主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。
在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。