mysql에서는 "CREATE TABLE" 문에서 "<필드 이름> <데이터 유형> PRIMARY KEY [기본값]" 문을 사용하고 "<필드 이름> < ; Data Type> NOT NULL" 문을 사용하여 null이 아닌 제약 조건을 설정합니다.
mysql 기본 키 제약 조건
기본 키(PRIMARY KEY)의 전체 이름은 MySQL에서 가장 자주 사용되는 제약 조건인 "기본 키 제약 조건"입니다. 일반적인 상황에서는 DBMS가 테이블에서 레코드를 더 빨리 찾을 수 있도록 테이블에 기본 키가 설정됩니다.
기본 키를 사용할 때 다음 사항에 유의해야 합니다.
각 테이블은 하나의 기본 키만 정의할 수 있습니다.
기본 키 값은 테이블의 각 행을 고유하게 식별해야 하며 NULL일 수 없습니다. 즉, 테이블에 동일한 기본 키 값을 가진 두 개의 데이터 행이 있을 수 없습니다. 이것이 유일성의 원리이다.
필드 이름은 공동 기본 키 필드 테이블에 한 번만 나타날 수 있습니다.
공동 기본 키에는 불필요한 중복 필드를 포함할 수 없습니다. 공동 기본 키의 필드가 삭제된 경우 나머지 필드로 구성된 기본 키가 여전히 고유성 원칙을 만족하면 공동 기본 키가 올바르지 않습니다. 이것이 최소화의 원칙이다.
테이블 생성 시 기본 키 제약 조건 설정
데이터 테이블 생성 시 기본 키 제약 조건 설정 테이블의 한 필드에 기본 키를 설정하거나 테이블의 여러 필드에 공동 기본 키를 설정할 수 있습니다. 그러나 어떤 방법을 사용하든 테이블에는 기본 키가 하나만 있을 수 있습니다. 다음은 단일 필드 기본 키와 다중 필드 결합 기본 키를 설정하는 방법을 설명합니다.
1) 단일 필드 기본 키 설정
CREATE TABLE 문에서 PRIMARY KEY 키워드를 통해 기본 키를 지정합니다.
필드 정의 시 기본 키를 지정합니다. 구문 형식은 다음과 같습니다.
<字段名> <数据类型> PRIMARY KEY [默认值]
예제 1
test_db 데이터베이스에 tb_emp3 데이터 테이블을 생성합니다. 기본 키는 id입니다. .
mysql> CREATE TABLE tb_emp3 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp3; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
또는 모든 필드를 정의한 후 기본 키를 지정합니다. 구문 형식은 다음과 같습니다.
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
예제 2
test_db 데이터베이스에 tb_emp4 데이터 테이블을 생성하고 기본 키는 id입니다. 다음과 같습니다.
mysql> CREATE TABLE tb_emp4 -> ( -> id INT(11), -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(id) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp4; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
2) 테이블 생성 시 공동 기본 키를 설정하세요
공동 기본 키는 이 기본 키가 테이블의 여러 필드로 구성된다는 의미입니다.
예를 들어 학생 과목 선택 데이터 테이블을 설정할 때 학번을 기본 키로 사용해야 할까요, 아니면 과목 번호를 기본 키로 사용해야 할까요? 학번을 기본키로 사용하는 경우, 학생은 한 과목만 선택할 수 있습니다. 과목 번호를 기본 키로 사용하는 경우 한 명의 학생만 과목을 선택할 수 있습니다. 분명히 이 두 가지 상황은 모두 비현실적입니다.
실제로 학생 과목 선택 일정을 설계할 때 학생은 동일한 과목을 한 번만 선택할 수 있다는 제한이 있습니다. 따라서 학번과 학번을 함께 묶어서 하나의 기본키, 즉 공동기본키로 만들 수 있다.
기본 키는 여러 필드로 구성됩니다. 구문 형식은 다음과 같습니다.
PRIMARY KEY [字段1,字段2,…,字段n]
참고: 기본 키가 여러 필드로 구성된 경우 기본 키 제약 조건은 필드 이름 바로 뒤에 선언할 수 없습니다.
예제 3
데이터 테이블 tb_emp5를 생성합니다. 테이블에 기본 키 id가 없다고 가정하면 name과 deptId를 기본 키로 결합할 수 있습니다. 다음과 같이.
mysql> CREATE TABLE tb_emp5 -> ( -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(id,deptId) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp5; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(25) | NO | PRI | NULL | | | deptId | int(11) | NO | PRI | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.14 sec)
테이블 수정 시 기본 키 제약 조건 추가
기본 키 제약 조건은 테이블을 생성하는 동안 생성할 수 있을 뿐만 아니라 테이블을 수정할 때 추가할 수도 있습니다. 다만, 기본키 제약조건으로 설정된 필드에는 null 값이 허용되지 않는다는 점에 유의해야 한다.
데이터 테이블 수정 시 기본 키 제약 조건을 추가하는 구문 형식은 다음과 같습니다.
ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);
tb_emp2 데이터 테이블의 테이블 구조를 확인하는 SQL 문 및 실행 결과는 다음과 같습니다.
mysql> DESC tb_emp2; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | | NULL | | | name | varchar(30) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
예제4
데이터 테이블 tb_emp2를 수정하고 필드 id를 기본 키로 설정한 SQL 문과 실행 결과는 다음과 같습니다.
mysql> ALTER TABLE tb_emp2 -> ADD PRIMARY KEY(id); Query OK, 0 rows affected (0.94 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_emp2; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(30) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.12 sec)
일반적으로 테이블 수정 시 테이블 내 필드의 기본 키 제약 조건을 설정하려면 기본 키 제약 조건으로 설정된 필드의 값이 중복될 수 없고, 널. 그렇지 않으면 기본 키 제약 조건을 설정할 수 없습니다.
mysql null이 아닌 제약 조건
MySQL의 null이 아닌 제약 조건(NOT NULL)은 필드 값이 null이 될 수 없음을 의미합니다. Null이 아닌 제약 조건을 사용하는 필드의 경우 사용자가 데이터를 추가할 때 값을 지정하지 않으면 데이터베이스 시스템에서 오류를 보고합니다. 이는 CREATE TABLE 또는 ALTER TABLE 문을 사용하여 수행할 수 있습니다. 테이블의 열 정의 뒤에 한정자로 NOT NULL 키워드를 추가하여 열 값이 비어 있지 않도록 제한합니다.
예를 들어 사용자 정보 테이블에 사용자 이름이 추가되지 않으면 사용자 정보가 유효하지 않게 됩니다. 이 경우 사용자 이름 필드에 null이 아닌 제약 조건을 설정할 수 있습니다.
테이블 생성 시 null이 아닌 제약 조건 설정
테이블을 생성할 때 NOT NULL 키워드를 사용하여 null이 아닌 제약 조건을 설정할 수 있습니다. 구체적인 구문 형식은 다음과 같습니다.
<字段名> <数据类型> NOT NULL
예제 1
데이터 생성 테이블 tb_dept4에서 부서 이름을 지정하면 비어 있을 수 없으며, SQL 문 및 실행 결과는 다음과 같습니다.
mysql> CREATE TABLE tb_dept4 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(22) NOT NULL, -> location VARCHAR(50) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_dept3; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(22) | NO | | NULL | | | location | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.06 sec)
在修改表时添加非空约束
如果在创建表时忘记了为字段设置非空约束,也可以通过修改表进行非空约束的添加。
修改表时设置非空约束的语法格式如下:
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <字段名> <数据类型> NOT NULL;
例 2
修改数据表 tb_dept4,指定部门位置不能为空,SQL 语句和运行结果如下所示。
mysql> ALTER TABLE tb_dept4 -> CHANGE COLUMN location -> location VARCHAR(50) NOT NULL; Query OK, 0 rows affected (0.15 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_dept4; +----------+-------------+------+-----+----------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+----------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(22) | NO | | NULL | | | location | varchar(50) | NO | | NULL | | +----------+-------------+------+-----+----------+-------+ 3 rows in set (0.00 sec)
推荐教程:mysql视频教程
위 내용은 mysql 기본 키가 null이 아닌 제약 조건을 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!