>데이터 베이스 >MySQL 튜토리얼 >mysql 다중 필드 고유 제약 조건

mysql 다중 필드 고유 제약 조건

(*-*)浩
(*-*)浩원래의
2019-05-10 13:09:388738검색

MySQL 고유 제약 조건(고유 키)을 사용하려면 열이 고유해야 하고 null이 허용되지만 null 값은 하나만 나타날 수 있습니다. 고유 제약 조건은 하나 이상의 열에 중복 값이 ​​없도록 보장합니다.

mysql 다중 필드 고유 제약 조건

테이블 생성 시 고유 제약 조건 설정

열 정의 후 직접 사용 UNIQUE 키워드는 고유 제약 조건을 지정합니다.

<字段名> <数据类型> UNIQUE

데이터 테이블 tb_dept2를 생성하고 부서 이름을 고유하게 지정합니다. 입력 SQL 문과 실행 결과는 다음과 같습니다.

mysql> CREATE TABLE tb_dept2
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) UNIQUE,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_dept2;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(40) | YES  | UNI | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.08 sec)

팁: UNIQUE와 PRIMARY KEY의 차이점: 테이블에는 UNIQUE로 선언된 여러 필드가 있을 수 있지만 PRIMARY KEY 선언은 하나만 있을 수 있습니다. PRIMAY KEY로 선언된 열은 null을 가질 수 없습니다. 그러나 UNIQUE로 선언된 필드는 null 값의 존재를 허용합니다.

테이블 수정 시 고유 제약 조건 추가

테이블 수정 시 고유 제약 조건 추가 구문 형식은 다음과 같습니다.

ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
#🎜 🎜#데이터 테이블 tb_dept1을 수정하여 부서명을 고유하게 지정합니다. 입력 SQL 문과 실행 결과는 다음과 같습니다.

mysql> ALTER TABLE tb_dept1
    -> ADD CONSTRAINT unique_name UNIQUE(name);
Query OK, 0 rows affected (0.63 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(22) | NO   | UNI | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
사용자가 댓글을 좋아해야 한다는 요구 사항이 있다고 가정합니다. 데이터베이스 디자인은 사용자 테이블 t_user, 댓글 테이블 t_comment, like 테이블 t_praise라는 세 개의 테이블입니다. user_id와 comment_id는 각각 사용자 테이블의 사용자 ID와 댓글 테이블의 댓글 ID와 연관되어 있으며, 사용자는 동일한 댓글에 한 번만 좋아요를 표시할 수 있다고 규정합니다. 이를 달성하는 한 가지 방법은 통과하는 것입니다. user_id 및 comment_id는 유사한 레코드가 있는지 쿼리합니다. 그렇지 않으면 삽입 작업을 다시 수행하고, 그렇지 않으면 이미 좋아했다는 결과를 반환합니다. 이 방법으로 구현하면 더 나은 구현은 다음과 같습니다. like 테이블의 user_id 및 comment_id를 수정합니다. 즉, 두 열이 동시에 동일할 수 없습니다. 이런 식으로 삽입 작업 중에 이미 like를 클릭한 경우 데이터베이스는 고유 키 제약 조건 위반이 발생하면 데이터베이스 쿼리 작업을 한 번 더 피할 수 있습니다. 특히 다중 열 고유 제약 조건을 설정하는 문은 다음과 같습니다.

UNIQUE KEY <唯一约束名>(<列名>,...,<列名n>)
CREATE TABLE `t_praise` (
  `id` int(12) unsigned NOT NULL AUTO_INCREMENT,
  `comment_id` int(12) NOT NULL,
  `user_id` int(12) NOT NULL,
  KEY `FK_t_praise_comment` (`comment_id`),
  KEY `FK_t_praise_user` (`user_id`),
  UNIQUE KEY `UK_praise` (`comment_id`,`user_id`)
)

위 내용은 mysql 다중 필드 고유 제약 조건의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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