MySQL 在MySQL中使用PRIMARY KEY生成键值对

MySQL 在MySQL中使用PRIMARY KEY生成键值对

在MySQL中,PRIMARY KEY是用来唯一标识每一条记录的列或列组合。在表中,每个行必须具有唯一的 PRIMARY KEY。在本篇文章中,我们将会学习如何使用PRIMARY KEY(column1,column2)来生成键值对。

阅读更多:MySQL 教程

1. 创建表

在开始使用PRIMARY KEY来生成键值对之前,我们需要先创建一张表。以下是创建一张名为“students”的表格的SQL语句:

CREATE TABLE students (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  first_name VARCHAR(30) NOT NULL,
  last_name VARCHAR(30) NOT NULL,
  email VARCHAR(50),
  reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

上述SQL语句创建了一张名为“students”的表格,并插入了5个列:id、first_name、last_name、email和reg_date。

2. 唯一键

当我们需要确保表格中某些列的值唯一时,我们可以使用PRIMARY KEY来定义字段组合。在上面的“students”表格中,我们可以使用以下SQL语句来创建一个唯一键,该键由first_name和last_name两个列组成。

ALTER TABLE students
ADD CONSTRAINT unique_name UNIQUE(first_name, last_name);

当我们试图插入一个与已有记录的first_name和last_name都相同的记录时,MySQL会返回一个错误。以下是一段插入具有重复值的SQL代码的例子:

INSERT INTO `students` (`first_name`, `last_name`, `email`) VALUES ('John', 'Doe', 'johndoe@example.com');
INSERT INTO `students` (`first_name`, `last_name`, `email`) VALUES ('John', 'Doe', 'johndoe2@example.com');

第二行代码将会返回以下错误信息:

#1062 - Duplicate entry 'John-Doe' for key 'unique_name'

在这个例子中,我们定义了一个由first_name和last_name列组成的唯一键,并插入了两条记录。由于这两条记录都使用了相同的first_name和last_name值,插入第二条记录时会出现错误。这是因为我们定义了一个唯一键,用于确保first_name和last_name列的值不重复。

3. 复合主键

和唯一键不同,主键是一个用来定义单个列的约束,它将该列定义为表格中每个记录的唯一标识符。在MySQL中,我们可以使用PRIMARY KEY来定义主键,并且可以同时使用多个列作为主键。

以下是一个“students”表格的例子,其中id是主键,而first_name和last_name是两个附加列:

CREATE TABLE students (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  first_name VARCHAR(30) NOT NULL,
  last_name VARCHAR(30) NOT NULL,
  email VARCHAR(50),
  reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT pk_students PRIMARY KEY (id, first_name, last_name)
);

我们使用了CREATE TABLE语句来创建这个表格,并增加了一个CONSTRAINT子句,定义了三个列:id、first_name和last_name组成了主键。其中,id列是用于识别每个学生记录的唯一标识符,而first_name和last_name则用于确保每个学生记录都是唯一的。

在上面的代码中,我们使用了复合主键。复合主键是由多个列组成的主键。和使用单个列的主键不同,复合主键使用多个列来确保每个记录的唯一性。当我们定义一个复合主键时,我们使用以下语法:

PRIMARY KEY (column1, column2);

在这个例子中,我们使用了三个列来定义主键,这意味着每个行的唯一性由这三个列的值唯一确定。

4. 如何使用 PRIMARY KEY 生成键值对

在使用PRIMARY KEY生成键值对之前,我们需要确保PRIMARY KEY所包含的列都非空,并且具备唯一性。以下是一个表示成绩单的表格的例子:

CREATE TABLE scores (
  student_id INT(6) UNSIGNED NOT NULL,
  course_id INT(6) UNSIGNED NOT NULL,
  score INT(3) NOT NULL,
  PRIMARY KEY (student_id, course_id)
);

在这个例子中,我们创建了一张名为“scores”的表格,包含三个列——student_id、course_id和score。我们使用(student_id, course_id)来定义主键,表示每个唯一键包含student_id和course_id两个列。

接下来,我们可以插入一些测试数据至这个表格中:

INSERT INTO `scores` (`student_id`, `course_id`, `score`) VALUES (1, 101, 80);
INSERT INTO `scores` (`student_id`, `course_id`, `score`) VALUES (1, 102, 90);
INSERT INTO `scores` (`student_id`, `course_id`, `score`) VALUES (2, 101, 85);

现在,我们来使用SELECT查询语句来查看生成的键值对:

SELECT * FROM `scores`;

输出结果如下:

student_id course_id score
1 101 80
1 102 90
2 101 85

从上面的表格中,我们可以看出每个学生和他所选的课程都被分配了一个唯一的student_id和course_id对。这个student_id和course_id对实际上是由PRIMARY KEY来生成的份键值对。

结论

使用MySQL中的PRIMARY KEY(column1,column2)语法可以轻松创建复合主键,用于唯一标识表格中的记录,并最终实现键值对的自动生成。使用PRIMARY KEY生成键值对是非常有帮助的,因为在每个唯一键组合存在时,只允许一个唯一性对象出现。此外,PRIMARY KEY还可以用于优化查询速度。在使用PRIMARY KEY时,我们应该始终确保我们的PRIMARY KEY包含非空和唯一性的属性,以便最终生成键值对的准确性和有效性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程