데이터베이스를 운영하다 보면 기존 테이블에 새로운 열(column)을 추가해야 하는 경우가 종종 발생합니다. 예를 들어, 'Students'라는 테이블에 이름(Name), 나이(Age), 학번(Roll no) 등의 열이 있다고 가정해 보겠습니다. 여기에 'Address'(주소)라는 새로운 열을 추가하고 싶다면 어떻게 해야 할까요?
이럴 때 사용하는 것이 바로 ALTER 명령어입니다. ALTER 명령은 데이터베이스의 열을 수정하거나 삭제하거나 업데이트할 때 사용되며, ADD 절과 함께 사용하면 테이블에 새로운 열을 추가할 수도 있습니다.
기본 문법
ALTER TABLE table_name ADD new_column_name column_definition [FIRST | AFTER existing_column]
여기서 각 요소의 의미는 다음과 같습니다.
- table_name: 열을 추가할 테이블의 이름
- new_column_name: 새로 추가할 열의 이름
- column_definition: 해당 열의 데이터 타입 정의
FIRST와 AFTER 절은 선택 사항(optional)이며, 새로운 열이 삽입될 위치를 지정할 때 사용합니다.
- FIRST: 새로운 열을 테이블의 첫 번째 위치에 삽입합니다.
- AFTER existing_column: 지정한 기존 열(existing_column) 바로 뒤에 새로운 열을 삽입합니다.
별도의 위치를 지정하지 않으면, 새로운 열은 기본적으로 테이블의 맨 마지막에 추가됩니다.
Python에서 MySQL 테이블에 열을 추가하는 단계
- MySQL 커넥터(mysql.connector)를 임포트합니다.
- connect() 메서드를 사용하여 데이터베이스와 연결을 설정합니다.
- cursor() 메서드로 커서 객체를 생성합니다.
- 적절한 SQL 문장으로 쿼리를 작성합니다.
- execute() 메서드를 사용하여 SQL 쿼리를 실행합니다.
- 작업 완료 후 연결(connection)을 닫습니다.
예제 코드
'Students'라는 테이블이 이미 존재한다고 가정하고, 이 테이블에 VARCHAR(100) 타입의 'Address'라는 새로운 열을 추가해 보겠습니다.
import mysql.connector
db = mysql.connector.connect(
host="your host",
user="your username",
password="your password",
database="database_name"
)
cursor = db.cursor()
query = "ALTER TABLE Students ADD Address VARCHAR(100)"
cursor.execute(query)
db.commit()
print("NEW COLUMN ADDED..")
db.close()위 코드를 실행하면 'Students' 테이블에 'Address'라는 새로운 열이 추가됩니다. 위치를 별도로 지정하지 않았기 때문에 이 열은 기존 열들의 맨 마지막에 삽입됩니다.
실행 결과
NEW COLUMN ADDED..
참고 사항
실무 환경에서는 데이터베이스 연결 정보를 코드에 직접 하드코딩하기보다는 환경 변수나 별도의 설정 파일로 관리하는 것이 안전합니다. 또한, 대용량 테이블에 ALTER 작업을 수행할 경우 테이블 구조 변경에 시간이 오래 걸릴 수 있으므로, 서비스 트래픽이 적은 시간대에 실행하는 것이 좋습니다.