MySQL UNIQUE和PRIMARY KEY介绍

MySQL UNIQUE和PRIMARY KEY介绍

在本文中,我们将介绍MySQL中的UNIQUE和PRIMARY KEY的概念、用法和区别,并提供这些键的一些示例。

阅读更多:MySQL 教程

UNIQUE键

UNIQUE键是指数据库表中的一列或一组列,用于确保该列或组合列的值是唯一的。当尝试在该列或组合列中插入重复值时,数据库将阻止该行的插入。在创建一个UNIQUE键时,必须指定该键所涉及的列。

以下是创建一个UNIQUE键的示例:

CREATE TABLE students (
  id INT PRIMARY KEY NOT NULL,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) UNIQUE
);
Mysql

在此示例中,email列被定义为UNIQUE。这将确保每个邮箱地址只能在该列中出现一次。

PRIMARY KEY键

PRIMARY KEY键是指在数据库表中一个唯一的、非空列或一组列,用于标识该表中的每一行。一个表中必须有一个PRIMARY KEY键。当尝试插入重复值时,数据库将拒绝插入。除此之外,PRIMARY KEY键还可用作其他表中的引用。常见例子是使用一个User ID作为PRIMARY KEY键,然后在其他表中以User ID为引用。

以下是一个创建一个PRIMARY KEY键的示例:

CREATE TABLE students (
  id INT PRIMARY KEY NOT NULL,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255)
);
Mysql

在此示例中,id列被定义为PRIMARY KEY。这将确保数据库中的每一行都具有单独的ID值。

UNIQUE键和PRIMARY KEY键的区别

UNIQUE键和PRIMARY KEY键都具有一个共同点,它们都确保了列或组合列的值是唯一的。但是,这两种键之间还有许多区别。

  • 一个表可有多个UNIQUE键,但只能有一个PRIMARY KEY键。
  • 一个UNIQUE键的值可以为空,但PRIMARY KEY键的值必须非空。
  • PRIMARY KEY键是用于标识每个表中的每个行的唯一标识符,在其他表中也可作为引用。

以下是创建一个同时使用UNIQUE和PRIMARY KEY键的示例:

CREATE TABLE students (
  id INT PRIMARY KEY NOT NULL,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) UNIQUE
);
Mysql

在这个示例中,id列被定义为主键,并且email列需要在表中是唯一的。

使用UNIQUE键和PRIMARY KEY键的示例

以下是一些使用UNIQUE键和PRIMARY KEY键的示例。

示例1:在表中使用UNIQUE键

假设有一个名为email_subscriptions的表,其中包含有订阅者的email地址。为了确保每个电子邮件地址只能在表中出现一次,下面是如何使用UNIQUE键:

CREATE TABLE email_subscriptions (
  email VARCHAR(255) PRIMARY KEY NOT NULL,
  subscribed_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  subscribed_group VARCHAR(255) NOT NULL,
  UNIQUE(email)
);
Mysql

在此示例中,email列被定义为PRIMARY KEY,并且同时使用UNIQUE键来确保该值是唯一的。

示例2:在表中使用PRIMARY KEY键

假设有一个名为students的表,其中每个学生都有一个唯一的ID。下面是如何使用PRIMARY KEY键:

CREATE TABLE students (
  id INT PRIMARY KEY NOT NULL,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) UNIQUE
);
Mysql

在此示例中,id列作为UNIQUE和PRIMARY键,同时email列由于UNIQUE键保证了每个邮箱地址在该列中出现一次。

示例3:在表中使用FOREIGN KEY键

假设有两个表student和score,每个学生在student表中有一个唯一的ID。在score表中,每个学生成绩都与ID相关联。下面是如何使用FOREIGN KEY来将student表中的ID与score表中相关联的示例:

CREATE TABLE student (
  id INT PRIMARY KEY NOT NULL,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) UNIQUE
);

CREATE TABLE score (
  id INT PRIMARY KEY NOT NULL, 
  student_id INT NOT NULL,
  course VARCHAR(255) NOT NULL,
  score INT NOT NULL,
  FOREIGN KEY (student_id) REFERENCES student(id)
);
Mysql

在此示例中,student表中的id列作为PRIMARY KEY键。在score表中,student_id列用作FOREIGN KEY,它引用student表中的id列。

总结

MySQL中的UNIQUE和PRIMARY KEY键是确保表中数据唯一性的常用方式。UNIQUE键仅确保一列的唯一性,而PRIMARY KEY键用于标识表中每一行的唯一性。这两种键都可以在其他表中作为引用。使用这些键可使数据库更加安全和高效。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册