DataBase/MSSQL

[MSSQL] SQL Server 문자열 데이터 타입: `varchar`와 `nvarchar`의 차이점 및 사용 가이드

범데이 2024. 7. 26. 14:06
728x90

SQL Server에서는 문자열 데이터를 저장할 수 있는 다양한 데이터 타입을 제공한다. 이 중에서 `varchar`와 `nvarchar`는 가장 많이 사용되는 타입이다. 

 

이 글에서는 `varchar`와 `nvarchar`의 차이점, 다른 대표적인 문자 타입과의 비교, 길이 선언 방법, 그리고 실제 사용 시 권고사항을 다룬다.

 


 

 

1. `varchar`와 `nvarchar`의 차이점

- `varchar` (Variable Character):

   - 비-Unicode 지원: 주요 영어와 같은 단일 언어의 문자열 데이터를 저장할 때 사용한다.

   - 저장 크기: 각 문자는 1바이트를 사용한다. 예를 들어, `varchar(20)`은 최대 20바이트를 차지한다.

   - 사용 사례: 영어 텍스트, 로그 데이터, 특정 언어에 국한된 데이터

 

 

- `nvarchar` (National Variable Character):

   - Unicode 지원: 다양한 언어와 문자를 지원하는 다국어 데이터를 저장할 떄 유용하다.

   - 저장 크기: 각 문자는 2바이트를 사용한다. 예를 들어, `nvarchar(20)`은 최대 40 바이트를 차지한다.

   - 사용 사례: 다국어 웹사이트의 사용자 이름, 주소 데이터 등 다양한 언어의 텍스트

 

 

2. 다른 대표적인 문자 타입과 비교

- `char`:

   - 고정 길이 비-Unicode 문자열: 항상 지정된 길이의 공간을 차지하며, 짧은 문자열은 공백으로 채워진다.

   - 저장 크기: 각 문자는 1바이트를 사용한다.

   - 사용 사례: 국가 코드, 우편번호 등 길이가 일정한 문자열

 

 

- `nchar`:

   - 고정 길이 Unicode 문자열: `char`와 유사하지만, Unicode를 지원한다.

   - 저장 크기: 각 문자는 2바이트를 사용한다.

   - 사용 사례: 다국어 데이터 중 길이가 일정한 문자열

 

 

- `text` (비권장):

   - 가변 길이 비-Unicode 문자열: 매우 큰 텍스트를 저장할 수 있지만, 더 이상 권장되지 않는다.

   - 최대 크기: 2GB

   - 사용 사례: `varchar(max)`로 대체됨

 

` varchar(max)`:

   - 가변 길이 비-Unicode 문자열: 매우 큰 문자열 데이터를 저장할 수 있다.

   - 최대 크기: 2GB

   - 사용 사례: `text` 타입의 대체로, 큰 텍스트 데이터 저장

 

 

 

3. 길이 선언에 관하여

- `varchar(n)`에서 `n`의 의미:

   - `n`은 저장할 수 있는 최대 문자 수를 의미한다. 예를 들어, `varchar(20)`은 최대 20개의 문자를 저장할 수 있다.

   - 길이를 지정하지 않으면 SQL Server에서 오류가 발생한다. 반드시 길이를 명시해야 한다.

 

 

- 최소 및 최대 길이

   - 최소 길이: 1

   - 최대 길이: 8,000. 더 큰 데이터를 저장해야 한다면 `varchar(max)`를 사용해야 한다.

CREATE TABLE ExampleTable (
    ExampleColumn1 varchar(20),  -- 최대 20자 저장 가능
    ExampleColumn2 varchar(50),  -- 최대 50자 저장 가능
    ExampleColumn3 varchar(max)  -- 최대 2GB 저장 가능
);

 

 

 

 

적절한 데이터 타입과 길이를 선택하는 것은 데이터베이스의 성능과 저장 효율성에 중요한 영향을 미친다.

데이터의 특성과 요구사항에 맞춰 최적의 선택을 하는 것이 중요하다.

 


#References

https://hajoung56.tistory.com/59

https://jeongkyun-it.tistory.com/187

https://developerking.tistory.com/6

https://booiljung.github.io/technical_articles/dbms/sql/sql_datatypes.html

https://m.blog.naver.com/islove8587/220722946533

https://blog.naver.com/diceworld/220162105206

https://joonopark92.tistory.com/118

 

 

반응형