MySQL 主键约束(添加主键约束)

一、主键的概念

主键是数据库表中的一个或多个字段,用于唯一标识表中的每一行数据。主键可以由一个或多个字段组成,但必须保证这个组合的值是唯一的。主键的值不能为NULL。

主键的主要作用是确保表中的每一行数据都有唯一的标识符,可以很方便地实现表的关联查询和数据的修改等操作。

二、主键的性质

主键约束有以下特点:

  • 唯一性:主键的值必须唯一。
  • 非空性:主键的值不能为NULL。
  • 不可更改性:一旦主键被设定,就不能再被修改。
  • 稳定性:主键是表数据不变化的基础。

三、主键的使用方法

1. 创建主键

主键可以在创建表的时候指定,也可以在创建表之后通过 ALTER TABLE 语句添加。

  
    -- 通过字段创建主键
    CREATE TABLE table1 (
      id INT(11) NOT NULL,
      name VARCHAR(20) NOT NULL,
      PRIMARY KEY (id)
    );

    -- 通过 ALTER TABLE 添加主键
    ALTER TABLE table1 ADD PRIMARY KEY (id);
  

2. 查看主键

可以通过 SHOW CREATE TABLE 语句或 DESC 语句来查看表的主键信息。

  
    -- 查看主键
    SHOW CREATE TABLE table1;
    DESC table1;
  

3. 修改主键

在 MySQL 中,一旦主键被创建后就不能再修改。如果需要修改,就需要先删除原来的主键,再重新创建。

  
    -- 删除主键
    ALTER TABLE table1 DROP PRIMARY KEY;

    -- 添加新的主键
    ALTER TABLE table1 ADD PRIMARY KEY (name);
  

4. 删除主键

可以通过 ALTER TABLE 语句删除主键。

  
    -- 删除主键
    ALTER TABLE table1 DROP PRIMARY KEY;
  

四、主键的注意事项

1. 主键的数据类型

主键的数据类型可以是数字类型或字符串类型等。

  
    CREATE TABLE table1 (
      id INT(11) NOT NULL,
      name VARCHAR(20) NOT NULL,
      PRIMARY KEY (id)
    );
  

2. 主键的长度

在选择主键数据类型时,需要考虑主键的长度问题。选择过小的数据类型会导致数据丢失或数据无法插入。

  
    CREATE TABLE table1 (
      id INT(4) NOT NULL,
      name VARCHAR(20) NOT NULL,
      PRIMARY KEY (id)
    );
  

3. 复合主键

MySQL 主键允许使用多个列来组成复合主键。

  
    CREATE TABLE table1 (
      id INT(11) NOT NULL,
      name VARCHAR(20) NOT NULL,
      age INT(11) NOT NULL,
      PRIMARY KEY (id, name)
    );
  

4. 自增主键

MySQL 还可以使用 AUTO_INCREMENT 关键字来表示自增主键,使得主键的值自动生成。

  
    CREATE TABLE table1 (
      id INT(11) NOT NULL AUTO_INCREMENT,
      name VARCHAR(20) NOT NULL,
      PRIMARY KEY (id)
    );
  

5. 主键和索引

MySQL 主键和索引是密切相关的,因为主键默认会创建一个索引。

  
    CREATE TABLE table1 (
      id INT(11) NOT NULL,
      name VARCHAR(20) NOT NULL,
      PRIMARY KEY (id),
      INDEX (name)
    );
  

五、总结

MySQL 主键约束是表中一行数据的唯一标识符,它有唯一性、非空性、不可更改性和稳定性等性质。在使用主键时要注意数据类型、长度、复合主键、自增主键和主键和索引等问题。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注