[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
. 이 명령문을 사용하여 열 이름을 변경할 수 없습니다.
희망, 나는 자세히 설명했다.