데이터베이스 속성 제약 조건 추가 및 변경 연습문제
문제 1
문제 설명
다음은 학생 정보를 저장하는 데이터베이스의 스키마입니다.
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
grade CHAR(1)
);
다음 요구사항에 맞게 데이터베이스의 속성 제약 조건을 추가하거나 변경해보세요.
요구사항
- 학생의 이름은 반드시 입력되어야 합니다.
- 학생의 나이는 10부터 20 사이의 값만 입력 가능합니다.
- 학생의 학년은 A, B, C 중 하나의 값만 입력 가능합니다.
문제 해결 방법
각 요구사항에 따라 데이터베이스의 속성 제약 조건을 추가 또는 변경해야 합니다. 아래는 각 요구사항을 해결하기 위한 SQL문입니다.
- 학생의 이름은 반드시 입력되어야 합니다.
ALTER TABLE students
MODIFY name VARCHAR(50) NOT NULL;
MODIFY
키워드를 사용하여 name
속성의 변경을 수행하고, NOT NULL
제약 조건을 추가합니다.
- 학생의 나이는 10부터 20 사이의 값만 입력 가능합니다.
ALTER TABLE students
ADD CONSTRAINT age_range CHECK (age >= 10 AND age <= 20);
ADD CONSTRAINT
키워드를 사용하여 새로운 제약 조건을 추가합니다. CHECK
제약 조건을 사용하여 age
속성의 범위를 지정합니다.
- 학생의 학년은 A, B, C 중 하나의 값만 입력 가능합니다.
ALTER TABLE students
ADD CONSTRAINT grade_values CHECK (grade in ('A', 'B', 'C'));
새로운 제약 조건을 추가하고, CHECK
제약 조건을 사용하여 grade
속성의 값이 ‘A’, ‘B’, ‘C’ 중 하나인지 확인합니다.
문제 2
문제 설명
다음은 사원 정보를 저장하는 데이터베이스의 스키마입니다.
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
다음 요구사항에 맞게 데이터베이스의 속성 제약 조건을 추가하거나 변경해보세요.
요구사항
- 사원의 이름은 50자를 초과할 수 없습니다.
- 사원의 부서는 ‘영업’, ‘개발’, ‘인사’ 중에서만 선택 가능합니다.
문제 해결 방법
각 요구사항에 따라 데이터베이스의 속성 제약 조건을 추가 또는 변경해야 합니다. 아래는 각 요구사항을 해결하기 위한 SQL문입니다.
- 사원의 이름은 50자를 초과할 수 없습니다.
ALTER TABLE employees
MODIFY name VARCHAR(50);
MODIFY
키워드를 사용하여 name
속성의 크기를 50으로 변경합니다.
- 사원의 부서는 ‘영업’, ‘개발’, ‘인사’ 중에서만 선택 가능합니다.
ALTER TABLE employees
ADD CONSTRAINT department_values CHECK (department in ('영업', '개발', '인사'));
새로운 제약 조건을 추가하고, CHECK
제약 조건을 사용하여 department
속성의 값이 ‘영업’, ‘개발’, ‘인사’ 중 하나인지 확인합니다.
참고 자료
- MySQL 공식 문서: ALTER TABLE 문
- PostgreSQL 공식 문서: ALTER TABLE 문