이번에는 MSSQL의 varchar와 nvarchar에 대하여 알아보겠습니다.
처음에는 MYSQL을 하다가 MSSQL을 접하였기에 varchar에 대하여
한 글자당 하나의 공간을 차지할 것이라 생각하고 접근하였습니다.
그러나 아래와 같은 상황에 부딫히게 됩니다.
그래서 당황하여 이것저것 시도해보던 찰나에 넣으려는 데이터의 한글 개수를 줄여보았는데 삽입이 성공하였습니다.
삽입이 성공한 이유를 알기 위해 검색하던 중 nvarchar라는 데이터형식이 있고 해당 타입은 모든 문자를 2byte로 인식하여 저장한다는 내용이 있었습니다.
그래서 아래와 같이 nvarchar를 적용한 컬럼을 하나 더 만들어서 테스트를 진행하였습니다.
먼저 varchar에는 '테스트ㄷ' 라는 4글자를, nvarchar에는 '테스트주소임다' 라는 7글자를 삽입 시도하였습니다.
그러나 예상대로 삽입에 실패하였기에 varchar를 적용한 컬럼에 '테스트e'라는 글자로 바꾸어 다시 시도하였습니다.
일반적으로 영문자, 숫자는 1byte를 차지하고 한글 등의 유니코드 문자는 2byte를 차지하기 때문입니다.
위와 같이 적용하였더니 삽입에 성공하였습니다.
적용된 데이터의 name 컬럼에는 총 7byte의 공간을 차지하고 있고, address 컬럼에는 총 14byte의 공간을 차지합니다.
물론 address 컬럼에 'abcdef1' 와 같이 적용하여도 14byte의 공간을 차지합니다.
nvarchar는 모든 문자를 2byte로 저장하기 때문입니다.
따라서 향후 컬럼을 구성할 때에 유니코드가 사용된다면 nvarchar를, 유니코드를 사용하지 않는다면
varchar를 사용하는 것이 공간관리에 효율적일 것입니다.
물론 varchar로 지정해놓고 유니코드 문자를 섞어서 사용해도 되지만 들어갈 문자를
하나하나 다 생각해서 공간을 맞추기에는 너무 비효율적이므로 nvarchar를 사용하는 것이 낫습니다.
이상으로 MSSQL에서의 varchar와 nvarchar에 대하여 알아보았습니다.
MSSQL 데이터베이스를 sql 파일로 추출하는 방법 (0) | 2022.05.19 |
---|---|
MSSQL 다른 PC에 있는 DB 정보 가져오기 (0) | 2022.05.19 |
MSSQL 테이블 상위 행 선택, 편집 개수 변경 방법 (0) | 2021.10.12 |
MSSQL 로컬 DB가 127.0.0.1로 접속 되지 않을 때 해결 법 (0) | 2021.04.06 |
쿼리문 테이블명 빨간 줄 발생 시 해결 방법 (0) | 2020.12.10 |
댓글 영역