`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]]