数据库中如何设置mysql主键?

    作者:课课家教育更新于: 2016-03-07 17:12:27

          MySQL中很重要的是要设置好主键,主键不能重复,而且主键的重要性在于可以区分外键,在一个数据表中主键只能是唯一的,那么如何设置主键呢?

      主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且必须定义为“PRIMARYKEY”,主键不能重复,一个表只能有一个主键。

    数据库中如何设置mysql主键?_主键MySql_数据库_MySql主键设置_课课家

      1、声明主键的方法:

      您可以在创建表的时候就为表加上主键,如:

      CREATETABLEtbl_name([字段描述省略...],PRIMARYKEY(index_col_name));

      也可以更新表结构时为表加上主键,如:

      ALTERTABLEtbl_nameADDPRIMARYKEY(index_col_name,…);

      /*

      创建一个qq表,将qq_id设为主键,且没有对其进行NOTNULl约束

      */

      createtableqq(

      qq_idint(10),

      nick_namevarchar(255)notnull,

      primarykey(qq_id))

      /*

      插入一条数据,将qq号设为10000(咱也幻想一下),昵称设为"simaopig"

      */

      INSERTINTOqq(qq_id,nick_name)

      VALUES(

      '10000','simaopig');

      2、示例

      主键被认为是NOTNULL和UNIQUE约束最好的结合。如果这些列没有被明确地定义为NOTNULL,MySQL会隐含地定义这些列。

      3、主键也是索引:

      刚才已经说了,主键其实也是索引,甚至在MySQL的术语里面“键”就等于“索引”,所以“外键”一定要先设为“索引”。所以主键也应该和索引一样,既可以作用于单独的字段,又可以作用于多个字段。

      举个简的例子吧,我住3单元,501室,我叫小小子,那么只有3单元501室才能在本小区表里面唯一确定我家。因为2单元,501室住着的可能也是个小小子,所以只有两个字段才能唯一确定我,也就是说可以二者组合作为主键。组合的主键,每个列都会隐含定义NOTNULL约束,且其二者加在一起被定义了UNIQUE惟一约束。

      /*

      创建防火墙表,将host和port组合设为主键,注意我没有将port设NOTNULL约束

      */

      createtablefirewall(

      hostvarchar(11)notnull,

      portsmallint(4),

      Accessenum('deny','allow')notnull,

      primarykey(host,port))

      /*

      插入一条新的记录,没有啥问题

      1row(s)inserted.

      */

      INSERTINTOfirewall(

      host,

      port,

      access)

      VALUES(

      '202.65.3.87','21','deny');

课课家教育

未登录

1