3장 테이블에 대한 제약

데이터베이스 테이블을 설계할 때 테이블에 제한을 두어야 하며 조건에 맞지 않는 데이터는 테이블에 삽입할 수 없습니다. 이것이 "제약"입니다.

1. 빈 속성

1、NULL

MySQL의 Null은 다음과 같이 표현됩니다. NULL NULLNUL . _ 우리가 C/C++를 배울 때 빈 속성 NULL은 숫자 0을 나타냈습니다. 그러나 MySQL에서 NULL은 어떤 값도 나타내지 않고, NULL은 아무 것도 의미하지 않으며, 0을 나타내지 않으며 공백을 나타내지 않습니다. MySQL에서는 데이터가 비어 있으면 작업에 참여할 수 없기 때문에 가능한 한 데이터가 비어 있지 않도록 하십시오(나중에 설명하겠습니다).

2. 빈 제약 조건

일부 데이터가 비어 있는 것은 논리적으로 불가능합니다. 예를 들어 학교에서 학생의 정보를 계산하려면 해당 학생은 해당 클래스가 있어야 합니다. 즉, 클래스 열의 데이터는 비어 있을 수 없습니다. 따라서 이 데이터 속성에 특정 제약 조건을 설정할 수 있습니다. 즉, 클래스는 비어 있을 수 없습니다. 제약 조건이 있으면 MySQL에서 데이터의 적법성이 크게 향상됩니다.

그렇다면 빈 제약 조건을 어떻게 설정합니까?

테이블을 생성할 때 not null해당 변수 뒤에 추가하기만 하면 됩니다.
구문은 다음과 같습니다.

变量名 数据类型 not null;

여기에 이미지 설명 삽입
예를 들어, 우리는 T 테이블을 생성합니다. 이 테이블에는 두 개의 변수가 있습니다. 하나는 id id 입니다.i d , 하나는이름 이름이름 e . 동시에 우리는not null not\ null을not o t null ll 의 제약  .

테이블이 생성되었으면 T 테이블에 대한 설명을 살펴보자.
아래 그림에서 볼 수 있듯이 id에 해당하는 NULL 빈 속성 열이 NO라는 것을 알았습니다. 즉, 변수는 비어 있을 수 없습니다.
여기에 이미지 설명 삽입

이제 테이블에 데이터를 삽입합니다.

여기에 이미지 설명 삽입
우리는 데이터를 삽입할 때 id 열이 작성되지 않으면 MySQL이 오류를 보고하여 특정 제약 효과를 달성한다는 것을 발견했습니다.

두, 기본값

1, 기본

기본값: 특정 유형의 데이터는 특정 값을 갖는 경우가 많으며 처음에 지정할 수 있으며 실제 데이터가 필요한 경우 사용자가 선택적으로 기본값을 사용할 수 있습니다.

기본값의 효과: 데이터 삽입 시 필드에 값이 지정되지 않고 기본값이 사용됨

2. 문법

数据名 数据类型 default 默认值

여기에 이미지 설명 삽입
우리는 T 테이블을 생성합니다. 이 테이블에는 id, 점수, 이름의 세 가지 변수가 있습니다. 그 중 id는 비워둘 수 없으며 점수는 기본적으로 0점입니다.

이제 이 테이블에 데이터를 삽입합니다.
여기에 이미지 설명 삽입
점수를 삽입하지 않으면 MySQL은 기본적으로 기본값 0을 삽입합니다.

3. 참고 사항(열 설명)

1. 댓글

C/C++에서는 주석을 표현하는 데 \\사용합니다 .테이블을 만들 때 프로그래머가 쉽게 읽을 수 있도록 일부 변수에 주석을 추가해야 합니다. 그런 다음 테이블을 만들 때 주석을 사용하여 주석을 작성할 수 있습니다.

2. 문법

数据名称 数据类型 comment '注释内容'

여기에 이미지 설명 삽입
테이블을 만든 후 테이블에 대한 설명을 볼 수 있습니다.
여기에 이미지 설명 삽입
테이블을 만들 때 추가한 주석이 테이블에 전혀 표시되지 않는 것을 발견했습니다.

주석을 확인하려면 어디로 가야 합니까?

다음 문을 사용하여 테이블을 만든 문을 볼 수 있습니다.

show create table 表的名称;

여기에 이미지 설명 삽입
이 시점에서 이전에 추가된 주석을 볼 수 있지만 형식이 엉망입니다. 이때 로 ;다시 작성할 수 \G있으며 시스템에서 인쇄 형식을 조정합니다.
아래 그림과 같이:
여기에 이미지 설명 삽입
위의 그림은 우리가 T 테이블을 만들 때 작성한 문장으로, 노트의 내용을 명확하게 볼 수 있습니다.

넷, 제로필

1. 제로필이란?

Zerofill이 무엇인지 설명하기 전에 다음 그림과 같이 언급해야 할 현상이 있습니다. 위 그림은
여기에 이미지 설명 삽입
특정 테이블에 대한 설명입니다. Type열을 살펴보겠습니다. int, 그리고 varchar 뒤에 숫자 20도 있습니다. 이 숫자 20은 분명히 이전에 지정한 문자열의 최대 길이입니다.

그렇다면 int 뒤의 숫자는 무엇을 의미할까요?

사실 이 11이 최대 길이이기도 하다. 그런 다음 제로필은 사용하지 않는 상위 비트를 0으로 채우는 것이지만 값 자체의 크기에는 영향을 미치지 않습니다.

2. 문법

数据名称 数据类型 zerofill

여기에 이미지 설명 삽입

다섯, 기본 키

1. 기본 키

경우에 따라 학생의 학번 또는 개인의 ID와 같은 일부 데이터는 한 번만 표시됩니다. 학번과 주민등록번호는 사람마다 다릅니다. 따라서 기본 키는 한 번만 나타나는 변수를 제한하는 데 사용됩니다.

기본 키의 제약을 받는 변수는 반복되거나 비어 있을 수 없습니다.

테이블은 하나의 기본 키만 가질 수 있습니다.

2. 문법

数据名称 数据类型 primary key

예를 들어 기본 키로 수정된 id 변수만 사용하는 테이블 T를 만듭니다. 그리고 테이블에 데이터를 삽입합니다.
여기에 이미지 설명 삽입
이제 이 테이블에는 이미 데이터 1이 있습니다. 다른 1을 삽입하여 성공적으로 삽입할 수 있는지 확인하겠습니다.
여기에 이미지 설명 삽입
1이 이미 존재하기 때문에 중복을 피하기 위해 데이터 1을 다시 삽입할 수 없으며 시스템에서 저장을 보냈습니다.

3. 기본 키 수정

변수가 기본 키를 추가하는 것을 잊은 경우 테이블이 생성된 후 기본 키를 추가할 수 있습니다. 구문은
다음과 같습니다.

alter table 表的名称 add primary key (变量名);

먼저 기본 키 수정 없이 하나의 변수 T만 있는 테이블 T를 만듭니다.
여기에 이미지 설명 삽입
이제 기본 키를 추가하여 id 변수를 수정합니다.
여기에 이미지 설명 삽입
이제 이 테이블에 대한 설명을 다시 살펴보겠습니다.
여기에 이미지 설명 삽입

기본 키는 이미 키 열에 나타납니다.

기본 키를 추가하는 것 외에도 변수의 기본 키를 삭제할 수도 있습니다.

alter table 表的名称 drop primary key;

여기에 이미지 설명 삽입

4. 복합 기본 키

테이블을 생성할 때 여러 변수를 함께 결합하여 기본 키로 변수 그룹을 형성할 수 있습니다.

구문은 다음과 같습니다.

primary key(变量1,变量2,...)

T 테이블을 생성합니다. 이 테이블에는 두 개의 변수가 있습니다. 하나의 변수는 id이고 다른 하나는 이름입니다. 기본 키를 id + name의 변수 그룹에 추가합니다.
여기에 이미지 설명 삽입
이제 이 테이블에 데이터를 삽입합니다.
아래 그림과 같이
여기에 이미지 설명 삽입
변수 중 하나가 중복되면 삽입할 수 있지만 전체 변수 그룹이 중복되면 삽입에 실패합니다.

6. 자기 성장

1. 자동 증분

자가 성장, 이름에서 알 수 있듯이 자동 성장. auto_increment로 변수를 수정할 때 변수가 할당되지 않으면 MySQL은 변수의 최대값을 찾아 最大值+1변수에 할당합니다.

auto_increment는 기본 키와 동일하며 각 테이블은 하나의 자동 증가 변수만 가질 수 있습니다. 변수가 자체적으로 증가하려면 인덱스(키 열에 값이 있음)라는 전제가 있습니다. 그렇지 않으면 자동 증분 필드는 정수여야 합니다.

2. 문법

数据名称 数据类型 键的类型 auto_increment

아래 그림과 같이 테이블 T를 생성하고 이 테이블 T에는 두 개의 변수가 있습니다. 하나는 id이고 다른 하나는 이름입니다. 그 중 id 변수는 기본 키로 수정되며 자체 증가 속성도 id에 추가합니다.
여기에 이미지 설명 삽입
이제 테이블에 데이터를 삽입합니다.
여기에 이미지 설명 삽입
먼저 ID가 10인 데이터를 삽입한 다음 ID가 없는 데이터를 삽입합니다. 그러나 결국 mysql은 첫 번째 데이터의 id를 기반으로 두 번째 데이터의 id 값을 추측했습니다.

7. 고유 키

1. 독특한

고유성이 필요한 테이블에는 종종 많은 필드가 있고 데이터는 반복될 수 없지만 테이블에는 하나의 기본 키만 있을 수 있습니다 . 고유 키는 테이블의 여러 필드에 고유성이 필요한 문제를 해결할 수 있습니다.

고유 키의 본질은 기본 키와 유사하며 고유 키는 비워 둘 수 있으며 둘 이상이 비어있을 수 있으며 빈 필드는 고유성을 비교하지 않습니다.

2. 문법

数据名 数据类型 unique

이제 id 변수가 기본 키로 장식되고 name 변수가 고유 키로 장식된 테이블을 만듭니다.
여기에 이미지 설명 삽입

테이블에 대한 설명은 다음과 같으며, 두 가지의 키 값 유형이 키 값 열에 반영되어 있음을 확인했습니다.
여기에 이미지 설명 삽입

8. 외래 키

1. 외래 키

외래 키는 기본 테이블과 슬레이브 테이블 간의 관계를 정의하는 데 사용됩니다. 외래 키 제약 조건은 주로 슬레이브 테이블에서 정의되며 마스터 테이블에는 기본 키 제약 조건 또는 고유 제약 조건이 있어야 합니다 . 외래 키를 정의할 때 외래 키 열 데이터가 기본 테이블의 기본 키 열에 존재하거나 null이어야 합니다.

2. 문법

foreign key (变量名) references 主表(变量名)

예를 들어 아래 그림에 설명된 테이블을 생성하려고 합니다. (오른쪽의 클래스 테이블은 마스터 테이블이고 학생 테이블은 슬레이브 테이블입니다.)
먼저 메인 테이블을 생성하자
먼저 마스터 테이블을 생성합니다. myclass

여기에 이미지 설명 삽입
기본 테이블에 대한 설명은 다음과 같습니다.
여기에 이미지 설명 삽입
이제 슬레이브 테이블을 생성하고 슬레이브 테이블에 외래 키 제약 조건을 추가합니다.
여기에 이미지 설명 삽입
이제 먼저 기본 테이블에 데이터를 삽입하겠습니다.
여기에 이미지 설명 삽입

그런 다음 슬레이브 테이블에 데이터를 삽입합니다.

여기에 이미지 설명 삽입
우리가 삽입한 class_id가 기본 테이블에 존재하지 않는 데이터인 경우 mysql이 오류를 보고한다는 것을 발견했습니다.

추천

출처blog.csdn.net/weixin_72060925/article/details/131806445