数据库中如何设置mysql主键?
当前位置:以往代写 > 数据库教程 >数据库中如何设置mysql主键?
2019-06-14

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

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

      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');

    关键字:

在线提交作业