DBMS 中的主键

  • Post category:database

主键(Primary Key)是关系型数据库中的重要概念之一,它用来唯一标识一条数据记录,是确保每条记录都能被唯一标识的关键字段。以下是DBMS中主键的完整攻略及实例说明。

主键的定义

主键是用于唯一识别数据库中的每一行数据的一列或一组列,一个表只能有一个主键,主键列具有如下特点:

  • 主键列中的值必须唯一,一个表中不能有重复的值。
  • 主键列中的值不能为NULL或空值。
  • 主键列类型可以为数字、字符或日期时间类型。

主键的作用

主键在数据库表中有着非常重要的作用:

  • 唯一性约束:主键保证了在数据表中每个记录的唯一性。通过主键可以确定并访问具体的某一个记录。
  • 聚焦查询:主键可以被用于加速查询,在许多情况下,使用主键作为查询条件执行查询,速度将快于使用其他列作为查询条件执行相同查询。
  • 外键参照:主键被外键参照,促进了数据库表之间的关联性和数据完整性。

主键的建立

在DBMS中,要建立主键,可以使用以下两种方法:

  • 使用关键字PRIMARY KEY声明主键:
CREATE TABLE pet (
    name VARCHAR(20),
    owner VARCHAR(20),
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE,
    PRIMARY KEY (name, birth)
);

这里的namebirth是组成主键的两个字段,表示了宠物的名字和宠物的出生日期。

  • 使用关键字CONSTRAINT声明主键:
CREATE TABLE pet (
    name VARCHAR(20),
    owner VARCHAR(20),
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE,
    CONSTRAINT pet_pk PRIMARY KEY (name, birth)
);

这里的pet_pk是主键名称,由于主键名唯一,所以可以在建表的时候指定主键的名称。

主键的实例说明

假如我们要创建一个学生表,包含学生的姓名、年龄、学号、班级和成绩等信息,其中学号是唯一的标识符,那么我们就可以在建表时定义学号为主键:

CREATE TABLE student (
    stu_id INT PRIMARY KEY,
    name VARCHAR(20),
    age INT,
    class VARCHAR(10),
    score DOUBLE
);

这里的stu_id就是我们定义的主键。

在建立了一个主键后,我们可以进行如下操作:

  • 插入记录:
INSERT INTO student(stu_id, name, age, class, score) VALUES (10001, 'Tom', 18, 'Class1', 90);

这里的10001就是我们定义的主键,如果已经存在,则会插入失败,提示主键冲突。

  • 修改记录:
UPDATE student SET score = 80 WHERE stu_id = 10001;

这里的stu_id也是我们定义的主键,可以用来定位并修改数据表中的一条记录。

  • 删除记录:
DELETE FROM student WHERE stu_id = 10001;

同样地,也可以使用主键来删除数据表中的一条记录。

总结

通过以上的讲解和实例,我们可以了解到主键在DBMS中的作用和建立方法,以及在实际应用中的操作。建立合适的主键,可以为数据表的查询和管理带来很大的便利,也是保证数据完整性的重要措施之一。