CREATE TABLE EMPLOYEE2(
empno INTEGER NOT NULL PRIMARY KEY, // 기본키
name VARCHAR(10),
ob VARCHAR(9))
alter table EMPLOYEE2 add birthdate varchar(12);
alter table EMPLOYEE2 drop birthdate;
alter table EMPLOYEE2 change deptno dept_no int(11);
alter table EMPLOYEE2 rename EMPLOYEE3;
drop table EMPLOYEE2;
mysql> alter table employee2 change job job varchar(5);
ERROR 1265 (01000): Data truncated for column 'job' at row 1
문자열을 저장하는 데이터 타입인 CHAR와 VARCHAR 차이점에 대해 알아보고 어떤 상황에서 CHAR 또는 VARCHAR 를 선택하는 것이 효율적인지 생각해봅시다.
CHAR는 고정 길이, 문자열이 가변적이라면 비효율적이다.
VARCHAR는 가변 길이 (오라클에선 varchar2로, sql server는 varchar로 표기), 할당된 변수값의 바이트만 적용이 된다.
Varchar는 길이를 계산해야 하기 때문에 미세하게 느릴 수 있지만, 속도 차이가 거의 없다. 또한 프로젝트는 언제든 변할 수 있고, 고정 공간을 만드므로 빈 공간에 대한 비용이 더 큰 경우가 있으므로 varchar를 사용하는 것이 더 낫다.
문자열 데이터 타입에는 문자셋을 지정할 수 있습니다. 문자셋에 따라 해당 필드가 차지하는 공간 크기를 한번 계산해보자. (예: VARCHAR(10) CHARACTER SET UTF8; 은 몇 Byte 크기를 차지할까요? ASCII 일때는 또 몇 Byte 크기를 가질까요?
[ euc-kr ] ascii 코드 + 한글 : 영문/숫자/기호는 1바이트. 한글과 한자는 2바이트
[ utf-8 ] : 영문/숫자/기호는 1바이트로, 한글과 한자 등은 3바이트로 표현