>  기사  >  데이터 베이스  >  MySQL 복합 기본 키의 정의 및 기능

MySQL 복합 기본 키의 정의 및 기능

PHPz
PHPz원래의
2024-03-15 17:18:041075검색

MySQL 复合主键的定义与作用

MySQL의 복합 기본 키는 테이블의 여러 필드로 구성된 기본 키를 말하며 각 레코드를 고유하게 식별하는 데 사용됩니다. 단일 기본 키와 달리 복합 기본 키는 여러 필드의 값을 결합하여 형성됩니다. 테이블을 생성할 때 여러 필드를 기본 키로 지정하여 복합 기본 키를 정의할 수 있습니다.

복합 기본 키의 정의와 기능을 보여주기 위해 먼저 id, usernameusername을 포함하는 users라는 테이블을 만듭니다. email 이 세 필드 중 id는 자동 증가 기본 키이고 username은 사용자 이름이며 email입니다. code>는 사용자의 이메일 주소입니다. usernameemail 두 필드를 복합 기본 키로 결합하겠습니다. users 的表,其中包含了 idusernameemail 这三个字段,其中 id 是自增主键,username 是用户名称,email 是用户邮箱。我们将通过 usernameemail 这两个字段组合在一起作为复合主键。

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(50) NOT NULL,
    PRIMARY KEY(username, email)
);

上面的代码中,通过在 CREATE TABLE 语句中使用 PRIMARY KEY(username, email) 来定义了复合主键,将 usernameemail 这两个字段组合在一起作为唯一标识。

接下来我们向表中插入一些数据,注意由于复合主键的存在,每条记录的 usernameemail 组合必须是唯一的。

INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com');
INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com');

如果我们再试图插入一条 usernameemail

INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com');
-- 输出错误:Duplicate entry 'alice@example.com' for key 'PRIMARY'

위 코드에서 복합 기본 키는 CREATE TABLE 문에서 PRIMARY KEY(사용자 이름, 이메일)를 사용하고 사용자 이름을 사용하여 정의됩니다. code >와 email은 고유 식별자로 함께 결합됩니다.

다음으로 테이블에 일부 데이터를 삽입합니다. 복합 기본 키가 있으므로 각 레코드의 usernameemail 조합은 고유해야 합니다.

rrreee

usernameemail이 이전 레코드와 동일한 다른 데이터 조각을 삽입하려고 하면 고유 제약 조건 오류가 발생합니다.

rrreee

This 복합 기본 키의 기능 중 하나는 데이터 중복을 방지하기 위해 테이블에 있는 각 레코드의 결합된 필드 값이 고유한지 확인하는 것입니다. 🎜🎜실제 응용 프로그램에서 복합 기본 키는 데이터 테이블 디자인에서 데이터 무결성을 더 정확하게 제어할 수 있습니다. 데이터베이스의 레코드를 여러 필드를 통해 고유하게 식별해야 하는 경우 복합 기본 키가 더 나은 데이터 무결성 보호를 제공할 수 있습니다. 동시에 일부 쿼리 및 테이블 연결 작업에서 복합 기본 키는 쿼리 효율성과 정확성을 향상시키는 데 도움이 되는 특별한 용도도 있습니다. 🎜🎜요약하자면, MySQL의 복합 기본 키는 각 레코드를 고유하게 식별하는 데 사용되는 여러 필드로 구성된 기본 키입니다. 이 예에서는 복합 기본 키를 정의하는 방법과 데이터 무결성 및 쿼리 효율성에서 해당 역할을 보여줍니다. 복합 기본 키를 이해하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 MySQL 복합 기본 키의 정의 및 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.