`ALTER` 명령어는 SQL에서 테이블의 구조를 변경하는 데 사용됩니다. 이를 통해 테이블에 새로운 칼럼을 추가하거나, 기존 칼럼의 속성을 수정하거나, 테이블의 이름을 변경하는 등의 작업을 수행할 수 있습니다. 다음은 `ALTER` 명령어의 주요 사용 방법과 예시입니다. ### 1. 칼럼 추가 (`ADD COLUMN`) 테이블에 새로운 칼럼을 추가할 때 사용합니다. #### 예시: ```sql ALTER TABLE Employees ADD COLUMN BirthDate DATE; ``` - **설명**: `Employees` 테이블에 `BirthDate`라는 새로운 칼럼을 추가합니다. 이 칼럼의 데이터 타입은 `DATE`입니다. ### 2. 칼럼 삭제 (`DROP COLUMN`) 테이블에서 기존 칼럼을 삭제할 때 사용합니다. #### 예시: ```sql ALTER TABLE Employees DROP COLUMN BirthDate; ``` - **설명**: `Employees` 테이블에서 `BirthDate` 칼럼을 삭제합니다. ### 3. 칼럼 수정 (`MODIFY`) 기존 칼럼의 데이터 타입, 크기, 또는 기타 제약 조건을 변경할 때 사용합니다. #### 예시: ```sql ALTER TABLE Employees MODIFY COLUMN LastName VARCHAR(100) NOT NULL; ``` - **설명**: `Employees` 테이블에서 `LastName` 칼럼의 데이터 타입을 `VARCHAR(100)`으로 변경하고, `NOT NULL` 제약 조건을 추가합니다. ### 4. 칼럼 이름 변경 (`RENAME COLUMN`) 기존 칼럼의 이름을 변경할 때 사용합니다. #### 예시: ```sql ALTER TABLE Employees RENAME COLUMN LastName TO FamilyName; ``` - **설명**: `Employees` 테이블에서 `LastName` 칼럼의 이름을 `FamilyName`으로 변경합니다. ### 5. 테이블 이름 변경 (`RENAME TO`) 테이블 자체의 이름을 변경할 때 사용합니다. #### 예시: ```sql ALTER TABLE Employees RENAME TO Staff; ``` - **설명**: `Employees` 테이블의 이름을 `Staff`로 변경합니다. ### 6. 제약 조건 추가 (`ADD CONSTRAINT`) 테이블에 새로운 제약 조건을 추가할 때 사용합니다. #### 예시: ```sql ALTER TABLE Employees ADD CONSTRAINT PK_EmployeeID PRIMARY KEY (EmployeeID); ``` - **설명**: `Employees` 테이블에 `EmployeeID` 칼럼을 기본 키로 설정하는 제약 조건을 추가합니다. ### 7. 기본값 설정 (`SET DEFAULT`) 칼럼에 기본값을 설정할 때 사용합니다. #### 예시: ```sql ALTER TABLE Employees ALTER COLUMN Department SET DEFAULT 'Sales'; ``` - **설명**: `Employees` 테이블의 `Department` 칼럼에 기본값을 'Sales'로 설정합니다. ### 문제의 문맥에 대한 예시 (`MODIFY`) 문제에서 주어진 조건은 기존 칼럼의 제약 조건을 `NOT NULL`로 변경하는 것이므로, `ALTER TABLE ... MODIFY` 구문을 사용하는 것이 맞습니다. #### 문제에 해당하는 예시: ```sql ALTER TABLE Mytest MODIFY COLUMN 칼럼명 NOT NULL; ``` - **설명**: `Mytest` 테이블에서 `칼럼명`의 제약 조건을 `NOT NULL`로 변경합니다. ### 요약 - `ALTER TABLE` 명령어는 테이블 구조를 변경하는데 다양한 방식으로 사용됩니다. - 새로운 칼럼을 추가하거나(`ADD`), 기존 칼럼을 수정하거나(`MODIFY`), 제약 조건을 추가하는 작업을 수행할 수 있습니다. - 문제에서는 특정 칼럼의 제약 조건을 `NOT NULL`로 변경하는 것이므로, `MODIFY` 구문을 사용하는 것이 올바른 선택입니다. ![[Screenshot 2024-08-17 at 11.03.36 AM.png]]