主键(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)
);
这里的name
和birth
是组成主键的两个字段,表示了宠物的名字和宠物的出生日期。
- 使用关键字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中的作用和建立方法,以及在实际应用中的操作。建立合适的主键,可以为数据表的查询和管理带来很大的便利,也是保证数据完整性的重要措施之一。