일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 그룹핑
- SQL
- 웹 크롤링
- 김영한 #SOLID #객체지향
- 스프링부트
- 데이터 수집
- 스프링 입문
- 에러포스팅
- 공부내용정리
- GIT
- 생성자 #자바 #기록남기기
- 개발공부
- 커밋
- SafeUpdate
- 파이썬
- Numpy #TIL #넘파이 기초
- 작업 영역
- 머신러닝 #회귀 #규제
- COMMIT
- 개발자가 되기 위해 꼭 알아야 하는 IT용어
- 머신러닝 #학습내용정리
- fastapi
- 기술블로그
- C언어 #문자열변환 #정수형변환
- 컬럼수정
- 단축키정리
- MVC #디자인패턴
- 옵셔널태그
- 클래스 #아이디
- 크롬브라우저
- Today
- Total
데이터 분석가 몽구리
테이블의 컬럼 구조 변경하기 본문
1. 테이블에 컬럼 추가 및 변경하기
student 테이블에 gender 컬럼을 생성하는 방법에 대해 알아볼게요. 테이블에 컬럼을 생성할 때에는 ALTER문을 활용하면됩니다.
ALTER TABLE student ADD gender CHAR(1) NULL;
ALTER TABLE은 테이블을 변경하겠다는 의미이고, ADD는 추가하라는 의미입니다. gender라는 새로운 컬럼을 추가하고 그 컬럼의 타입과 속성이 들어가 있습니다. gender 컬럼은 CHAR(1)타입이고, NULL을 허용하게 됩니다.
gender라는 새로운 컬럼이 추가된 것을 확인할 수 있습니다.
이번에는 컬럼의 이름을 변경해보도록 할게요. student 테이블을 보면 student_number라는 컬럼이 존재합니다. student_number컬럼을 registration_number라는 컬럼으로 변경해보도록 하겠습니다.
ALTER TABLE student
RENAME COLUMN student_number TO registration_number;
ALTER TABLE까지는 컬럼을 추가하는 것과 동일합니다. RENAME COLUMN은 의미 그대로 컬럼의 이름을 다시 지으라는 의미입니다. student_number라는 이름을 registration_number로 수정하라는 의미입니다. 이 SQL문을 실행하고 다시 테이블을 확인하면 registraion_number로 컬럼명이 변경된 것을 확인할 수 있습니다.
2. 컬럼 삭제와 컬럼 데이터 타입 변경
컬럼데이터 삭제
이번에는 컬럼을 삭제하고 데이터 타입을 변경하는 방법에 대해 알아볼게요. 먼저, admission_date 컬럼을 삭제해보도록 할게요.
ALTER TABLE student
DROP COLUMN admission_date;
ALTER TABLE은 마찬가지로 테이블을 변경하겠다는 의미입니다. 그리고 DROP COLUMN을 적었는데 DROP은 원래 떨어뜨리다 라는 뜻을 가지고 있습니다. SQL에서는 주로 무언가를 삭제할 때 사용합니다.
SQL문을 실행하고 다시 테이블을 조회해보면 admission_date컬럼이 삭제된 것을 확인할 수 있습니다.
컬럼 데이터타입 변경
이번에는 major 컬럼의 데이터 타입을 변경해주도록 할게요. major 컬럼은 현재 문자열로 되어있습니다. 문자열로 사용하지 않고, 전공 코드번호로 수정해보도록 할게요.
ALTER TABLE student MODIFY major INT;
MODIFY 는 '수정하다, 변경하다'라는 뜻을 가지고 있습니다. MODIFY 일반적으로 데이터타입 및 속성을 변경할 때 사용합니다. major 라는 컬럼의 데이터 타입을 INT 형으로 변환하는 것이죠. 해당 SQL문을 실행하게 되면 아래와 같은 에러가 발생하게 됩니다. ??!!
그 이유가 무엇일까요?
Error Code: 1366. Incorrect integer value: '컴퓨터공학과' for column 'major' at row 1
Response를 복사해서 확인하게 되면 정수가 아닌 값이 들어가 있는 뜻입니다. 지금 에러가 발생하는 이유는 major값에 원래 들어있던 값이 INT가 아니라 문자열이 들어가 있기 때문입니다. 그러면 에러가 발생하지 않게 만들기 위해서는 원래 있던 값을 정수로 바꿔준 다음에 데이터 타입을 INT로 변경해줘야 합니다.
UPDATE student SET major = 10 WHERE major = '컴퓨터공학과';
UPDATE student SET major = 12 WHERE major = '법학과';
마찬가지로 가지고 있는 값들을 변경해주려고 하는데 에러가 발생했습니다.
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
‘safe update 모드를 사용 중일 때는, KEY column을 사용해서 테이블을 갱신해야 한다.'는 뜻입니다. 'safe update'모드란, 말 그대로 '안전한 갱신성'을 보장하기 위한 모드입니다.
WHERE 절에 PRIMARY KEY가 사용되지 않은 UPDATE문이 실행되지 않도록 막아놓은 것입니다.
이는 UPDATE문을 주의깊게 사용하지 않아 발생하는 문제점을 미연에 방지하기 위함입니다. 그러면, 이 safe update 모드를 꺼보도록 하겠습니다.
Edit -> Preference 를 클릭한 다음, SQL Editor 로 들어간 다음 Safe Update의 체크박스를 해제하고 Ok를 눌러주시면 safe update 모드를 해제할 수 있습니다.
이렇게 설정한 다음 서버를 재접속 한 다음 다시 UPDATE문을 실행해보도록 하겠습니다.
UPDATE student SET major = 10 WHERE major = '컴퓨터공학과';
UPDATE student SET major = 12 WHERE major = '법학과';
이제 UPDATE문이 정상적으로 작동하는 것을 확인할 수 있습니다. major에 있는 값들을 정수로 변환한 뒤 컬럼의 데이터 타입도 변경해줄게요.
ALTER TABLE student MODIFY major INT;
정상적으로 테이블의 데이터 타입을 변경할 수 있습니다.
DESCRIBE student;
DESCRIBE를 통해서 테이블을 확인해도 major 컬럼의 타입이 INT로 변경되어 있는 것을 확인할 수 있습니다.
이상으로 SQL에서 컬럼을 추가, 수정, 데이터 타입 변경하는 방법에 대해 알아봤습니다.
'SQL' 카테고리의 다른 글
SQL 그룹핑에 대해 알아보자 (0) | 2024.06.15 |
---|---|
컬럼에 쓰이는 여러 속성 (0) | 2024.04.21 |
테이블 컬럼 정보확인하기 (DESCRIBE) (0) | 2024.04.21 |
테이블에 row 추가,수정,삭제 (0) | 2024.04.21 |
데이터베이스와 테이블 구축 (0) | 2024.04.21 |