집 >데이터 베이스 >MySQL 튜토리얼 >mysql 다중 필드 고유 제약 조건
MySQL 고유 제약 조건(고유 키)을 사용하려면 열이 고유해야 하고 null이 허용되지만 null 값은 하나만 나타날 수 있습니다. 고유 제약 조건은 하나 이상의 열에 중복 값이 없도록 보장합니다.
테이블 생성 시 고유 제약 조건 설정
열 정의 후 직접 사용 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!