[mysql] MySQL의 기존 열에 null이 아닌 제약 조건을 추가하는 방법

다음 열 이름을 가진 “Person”이라는 테이블 이름이 있습니다.

P_Id(int),
LastName(varchar),
FirstName (varchar).

NOT NULL제약 을주는 것을 잊었습니다 P_Id.

이제 다음 쿼리를 사용하여 NOT NULL이라는 기존 열에 제약 조건을 추가했습니다 P_Id.

1. ALTER TABLE  Person MODIFY  (P_Id NOT  NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT  NULL NOT NULL (P_Id);

구문 오류가 발생합니다 ….



답변

ALTER TABLE... MODIFY...쿼리를 사용 NOT NULL하여 기존 열 정의에 추가 하십시오. 예를 들면 다음과 같습니다.

ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;

주의 사항 : 쿼리를 사용할 때 전체 열 정의를 다시 지정해야 MODIFY합니다. 열에 예를 들어 DEFAULT값 또는 열 주석이 MODIFY있는 경우 데이터 유형 및과 함께 명령문 에서이를 지정해야 합니다 NOT NULL. 그렇지 않으면 손실됩니다. 이러한 실수를 방지하는 가장 안전한 방법은 SHOW CREATE TABLE YourTable쿼리 출력에서 열 정의를 복사 하고 NOT NULL제약 조건 을 포함하도록 수정 한 다음 쿼리에 붙여 넣는 것 ALTER TABLE... MODIFY...입니다.


답변

이것을 시도하면 변경과 수정의 차이점을 알 수 있습니다.

ALTER TABLE table_name CHANGE curr_column_name new_column_name new_column_datatype [constraints]

ALTER TABLE table_name MODIFY column_name new_column_datatype [constraints]
  • 을 사용하여 특정 열의 이름과 데이터 유형을 변경할 수 있습니다 CHANGE.
  • 을 사용하여 특정 열 데이터 유형을 수정할 수 있습니다 MODIFY. 이 명령문을 사용하여 열 이름을 변경할 수 없습니다.

희망, 나는 자세히 설명했다.


답변