🧚 잠깐만요! Beekeeper Studio는 빠르고 모던한 오픈 소스 데이터베이스 GUI예요 다운로드
2025년 8월 25일 작성자: Matthew Rathbone

SQL에서 기존 테이블에 컬럼을 추가하는 일은 데이터베이스 스키마가 발전하면서 자주 하게 되는 작업이에요. ALTER TABLE 문을 사용하면 데이터를 잃지 않고 기존 테이블의 구조를 수정할 수 있어요. 이 가이드에서는 ALTER TABLE로 컬럼을 추가하는 방법을 실용적인 예제와 함께 알아봐요.

ALTER TABLE 이해하기

ALTER TABLE 명령은 기존 테이블의 컬럼을 추가, 삭제, 수정할 때 사용해요. 테이블 제약 조건을 변경할 때도 쓸 수 있어요. 이 튜토리얼에서는 새 컬럼을 추가하는 방법에 집중해요.

새 컬럼을 추가할 때는 컬럼 이름, 데이터 타입, 그리고 필요한 제약 조건이나 기본값을 지정해야 해요. 이 작업은 원자적으로 수행되며 기존 데이터에 영향을 주지 않아요.

컬럼 추가의 기본 문법

테이블에 새 컬럼을 추가하는 기본 문법은 다음과 같아요:

ALTER TABLE table_name
ADD column_name column_type [constraint];
  • table_name: 컬럼을 추가할 테이블의 이름이에요.
  • column_name: 새 컬럼의 이름이에요.
  • column_type: 새 컬럼의 데이터 타입이에요(예: VARCHAR, INT, DATE 등).
  • constraint: 선택 사항이에요. NOT NULL, UNIQUE, DEFAULT 값 같은 추가 제약 조건이에요.

예제: 컬럼 추가하기

간단한 employees 테이블로 시작해 볼게요:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    position VARCHAR(50)
);

-- Current data in employees table:
INSERT INTO employees (id, name, position) VALUES (1, 'Alice', 'Engineer');
INSERT INTO employees (id, name, position) VALUES (2, 'Bob', 'Manager');

SELECT * FROM employees;

출력:

+----+-------+----------+
| id | name  | position |
+----+-------+----------+
|  1 | Alice | Engineer |
|  2 | Bob   | Manager  |
+----+-------+----------+

급여 컬럼 새로 추가하기

DECIMAL(10, 2) 데이터 타입으로 salary라는 새 컬럼을 추가해 볼게요. 이 타입은 소수점 이하 2자리를 포함해 최대 10자리 숫자를 저장할 수 있어요:

ALTER TABLE employees
ADD salary DECIMAL(10, 2);

이 명령은 employees 테이블에 새 salary 컬럼을 추가해요. 기존 행은 값을 업데이트하기 전까지 이 컬럼에 NULL 값을 가져요.

테이블 구조 확인하기

사용하는 데이터베이스 시스템에 따라 DESCRIBE 또는 SHOW COLUMNS로 컬럼이 추가되었는지 확인하세요:

DESCRIBE employees;

출력:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | NO   | PRI | NULL    |       |
| name     | varchar(100)| YES  |     | NULL    |       |
| position | varchar(50) | YES  |     | NULL    |       |
| salary   | decimal(10,2)| YES |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

기본값이 있는 컬럼 추가하기

기본값을 지정해 컬럼을 추가할 수도 있어요. 현재 날짜를 기본값으로 하는 hire_date 컬럼을 추가하는 방법은 다음과 같아요:

ALTER TABLE employees
ADD hire_date DATE DEFAULT CURRENT_DATE;

employees 테이블에 새로 삽입되는 행은 값을 지정하지 않으면 hire_date가 자동으로 현재 날짜로 설정돼요.

NOT NULL 제약 조건이 있는 컬럼 추가하기

기존 테이블에 NOT NULL 제약 조건이 있는 컬럼을 추가할 때는 특별히 주의해야 해요. 이미 데이터가 있는 테이블에 기본값 없이 NOT NULL 컬럼을 그냥 추가할 수는 없어요. 기존 행이 제약 조건을 위반하게 되기 때문이에요.

기존 데이터에서 NOT NULL의 문제점

테이블에 기존 행이 있으면 이 명령은 실패해요:

-- This will fail on tables with existing data
ALTER TABLE employees
ADD phone_number VARCHAR(20) NOT NULL;

기존 행의 새 컬럼 값이 NULL이 되어 NOT NULL 제약 조건을 위반하기 때문에 오류가 발생해요.

해결 방법 1: 기본값과 함께 컬럼 추가하기

가장 간단한 해결 방법은 기본값을 지정하는 거예요:

ALTER TABLE employees
ADD phone_number VARCHAR(20) NOT NULL DEFAULT 'Unknown';

이 방법이 작동하는 이유는 다음과 같아요:

  1. 기존의 모든 행에 기본값이 채워진 상태로 컬럼이 추가돼요
  2. NOT NULL 제약 조건이 즉시 충족돼요
  3. 이후 삽입 시에는 값을 지정하거나 기본값을 사용해야 해요

해결 방법 2: 여러 단계로 처리하기

값을 더 세밀하게 제어하려면 여러 단계로 나누어 처리하세요:

-- Step 1: Add the column as nullable
ALTER TABLE employees
ADD phone_number VARCHAR(20);

-- Step 2: Update existing rows with appropriate values
UPDATE employees 
SET phone_number = 'Unknown' 
WHERE phone_number IS NULL;

-- Step 3: Add the NOT NULL constraint
ALTER TABLE employees
ALTER COLUMN phone_number SET NOT NULL;

참고: 3단계의 문법은 데이터베이스 시스템마다 달라요:

  • PostgreSQL: ALTER COLUMN phone_number SET NOT NULL
  • MySQL: MODIFY COLUMN phone_number VARCHAR(20) NOT NULL
  • SQL Server: ALTER COLUMN phone_number VARCHAR(20) NOT NULL

해결 방법 3: 조건부 기본값

기존 데이터에 따라 서로 다른 기본값을 설정할 수 있어요:

-- Add column with temporary default
ALTER TABLE employees
ADD department VARCHAR(50) NOT NULL DEFAULT 'TBD';

-- Update with conditional logic based on position
UPDATE employees 
SET department = CASE 
    WHEN position = 'Engineer' THEN 'Engineering'
    WHEN position = 'Manager' THEN 'Management'
    ELSE 'General'
END;

-- Optionally remove the default if you don't want it for future inserts
ALTER TABLE employees
ALTER COLUMN department DROP DEFAULT;

NOT NULL 컬럼 모범 사례

  1. 미리 계획하기: 처음 테이블을 설계할 때 NOT NULL 제약 조건을 고려하세요
  2. 의미 있는 기본값 사용하기: 비즈니스 로직에 맞는 기본값을 선택하세요
  3. 먼저 테스트하기: ALTER TABLE 작업은 항상 데이터 사본에서 먼저 테스트하세요
  4. 변경 사항 문서화하기: 팀과 소통할 수 있도록 스키마 변경 내역을 기록하세요
  5. 데이터 마이그레이션 고려하기: 새 컬럼을 의미 있는 데이터로 채울 방법을 계획하세요

NOT NULL 제약 조건 확인하기

NOT NULL 컬럼을 추가한 후에는 제약 조건이 적용되었는지 확인하세요:

-- Check table structure
DESCRIBE employees;

-- Verify constraint by attempting to insert NULL (should fail)
INSERT INTO employees (id, name, position, phone_number) 
VALUES (3, 'Carol', 'Analyst', NULL);
-- Error: Column 'phone_number' cannot be null

이제 컬럼 추가 방법을 알았으니, 다른 ALTER TABLE 작업도 알아보세요:

이런 작업들은 애플리케이션 요구 사항이 바뀔 때 데이터베이스 스키마를 유지하고 발전시키는 데 꼭 필요해요.

결론

ALTER TABLE로 컬럼을 추가하면 데이터 손실 없이 스키마를 수정할 수 있어요. 이런 유연성 덕분에 변화하는 애플리케이션 요구 사항에 맞춰 데이터베이스를 조정할 수 있어요. 스키마를 변경하기 전에는 항상 데이터를 백업하고, 기존 애플리케이션 로직과의 호환성을 확인하세요.

더 고급 데이터베이스 작업을 하고 SQL 데이터베이스를 효과적으로 관리하려면 Beekeeper Studio를 사용해 보세요. 데이터베이스 스키마 관리와 SQL 작업을 위한 직관적인 인터페이스를 제공해요.

Beekeeper Studio는 무료 오픈 소스 데이터베이스 GUI예요

지금까지 써 본 SQL 쿼리 & 에디터 도구 중 최고예요. 데이터베이스 관리에 필요한 모든 게 다 있어요. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio는 빠르고 직관적이며 사용하기 쉬워요. 다양한 데이터베이스를 지원하고 Windows, Mac, Linux에서 모두 잘 작동해요.

Beekeeper의 Linux 버전은 100% 모든 기능을 갖추고 있어요. 대충 만든 부분도, 빠진 기능도 없어요.

Beekeeper Studio 사용자 후기

★★★★★
"Beekeeper Studio가 기존 SQL 작업 방식을 완전히 대체했어요. 빠르고 직관적이라 데이터베이스 작업이 다시 즐거워졌어요."
— Alex K., 데이터베이스 개발자
★★★★★
"여러 데이터베이스 GUI를 써 봤지만, Beekeeper는 기능과 단순함 사이의 균형이 완벽해요. 그냥 잘 돌아가요."
— Sarah M., 풀스택 엔지니어

SQL 워크플로를 개선할 준비가 되셨나요?

download 무료 다운로드