데이터 정렬 용어

SQL Server 2005의 언어 지원을 최대한 활용하려면 이 항목에 정의된 용어를 잘 이해해야 합니다.

용어

  • 코드 페이지
  • 데이터 정렬
  • 데이터 형식
  • 전역화
  • 로캘
  • 읽는 순서
  • 정렬 순서
  • 유니코드

코드 페이지

코드 페이지는 지정한 스크립트의 각 문자와 연결된 숫자 인덱스 또는 코드 포인트 값을 정렬한 문자 집합입니다. Microsoft Windows 코드 페이지는 일반적으로 문자 집합 또는 charset이라고 합니다. 코드 페이지는 여러 다른 Windows 로캘에 사용되는 문자 집합과 자판 배열을 지원하는 데 사용됩니다.

관련 항목:클라이언트 코드 페이지 설정

맨 위로 이동

데이터 정렬

데이터 정렬은 데이터 집합의 각 문자를 나타내는 비트 패턴을 지정합니다. 또한 데이터 정렬은 데이터를 정렬하고 비교하는 규칙을 결정합니다. SQL Server 2005는 여러 다른 데이터 정렬을 갖는 개체를 단일 데이터베이스에 저장하도록 지원합니다. 즉, SQL Server 데이터베이스의 각 열은 자체의 데이터 정렬을 가질 수 있습니다. 비유니코드 열의 경우 데이터 정렬 설정은 데이터에 대한 코드 페이지, 즉 나타낼 수 있는 문자를 지정합니다. 유니코드 열 사이에서는 데이터를 원활하게 이동할 수 있습니다. 그러나 비유니코드 열 사이에서는 데이터를 원활하게 이동할 수 없으므로 현재의 코드 페이지에 따라 데이터를 변환해야 합니다.

데이터 정렬 설정이 각기 다른 데이터베이스의 컨텍스트에서 Transact-SQL 문을 실행하면 그 결과가 달라질 수 있습니다. 가능한 경우 조직에서 표준화된 데이터 정렬을 사용하는 것이 최상의 방법입니다. 조직 내의 모든 시스템에서 표준 데이터 정렬 설정을 사용하면 모든 문자나 유니코드 식에서 명시적으로 데이터 정렬을 지정할 필요가 없습니다. 데이터 정렬 및 코드 페이지 설정이 다른 개체를 사용해야 할 경우 데이터 정렬 우선 순위 규칙을 고려하도록 쿼리를 코딩해야 합니다. 자세한 내용은 데이터 정렬 우선 순위(Transact-SQL)를 참조하십시오.

데이터 정렬은 언어를 구분하고, 대/소문자를 구분하고, 악센트를 구분하고, 일본어 가나를 구분하고, 전자/반자를 구분합니다.

SQL Server 2005 데이터 정렬은 다음과 같은 그룹으로 분류할 수 있습니다.

  • Windows 데이터 정렬
    Windows 데이터 정렬은 관련 Windows 로캘을 기반으로 문자 데이터 저장 규칙을 정의합니다. Windows 데이터 정렬의 경우 유니코드 데이터를 비교할 때와 동일한 알고리즘을 사용하여 비유니코드 데이터도 비교합니다. 기본 Windows 데이터 정렬 규칙은 사전 정렬이 적용될 때 사용되는 알파벳이나 언어를 지정하고 유니코드가 아닌 문자 데이터를 저장하는 데 사용되는 코드 페이지도 지정합니다. 유니코드 정렬과 비유니코드 정렬은 모두 특정 버전의 Windows에서 수행되는 문자열 비교와 호환됩니다. 따라서 SQL Server 내의 데이터 형식 간에 일관성이 유지되며 개발자들은 SQL Server에서 사용되는 것과 동일한 규칙을 사용하여, 즉 Microsoft Win32 API의 CompareStringW 함수를 호출하여 응용 프로그램에서 문자열을 정렬할 수 있습니다. 자세한 내용은 설치 프로그램에서 데이터 정렬 설정을 참조하십시오.
  • 이진 데이터 정렬
    이진 데이터 정렬은 로캘 및 데이터 형식으로 정의된 코딩 값 시퀀스에 따라 데이터를 정렬합니다. SQL Server의 이진 데이터 정렬은 사용할 언어 로캘과 ANSI 코드 페이지를 정의하며 이진 정렬 순서를 적용합니다. 이진 데이터 정렬은 비교적 간단하므로 응용 프로그램 성능 향상에 도움이 됩니다. 비유니코드 데이터 형식의 경우 데이터 비교는 ANSI 코드 페이지에 정의된 코드 포인트를 기반으로 수행됩니다. 유니코드 데이터 형식의 경우 데이터 비교는 유니코드 코드 포인트를 기반으로 수행됩니다. 유니코드 데이터 형식에서의 이진 데이터 정렬의 경우 데이터 정렬 시 로캘은 고려되지 않습니다. 예를 들어 Latin_1_General_BIN과 Japanese_BIN은 유니코드 데이터에서 사용할 때 동일한 정렬 결과를 생성합니다.

    SQL Server의 이전 이진 데이터 정렬은 유니코드 데이터에 대해 불완전한 코드 포인트 간 비교를 수행했습니다. 즉, 이전 버전의 SQL Server에서 이진 데이터 정렬은 첫 번째 문자를 WCHAR로 비교하고 그 다음에는 바이트 단위로 비교했습니다. 이전 버전과의 호환성을 위해 기존의 이진 데이터 정렬 의미 체계는 변경되지 않습니다.

    이 SQL Server 릴리스의 이진 데이터 정렬에서는 순수 코드 포인트 비교 데이터 정렬 집합을 새롭게 제공합니다. 새 이진 데이터 정렬로 마이그레이션할 경우 진정한 코드 포인트 비교 기능을 활용할 수 있으며 새 응용 프로그램 개발 시 이 새로운 이진 데이터 정렬을 사용해야 합니다. 새 BIN2 접미사는 새 코드 포인트 데이터 정렬 의미 체계를 구현하는 데이터 정렬 이름을 식별합니다. 또한 새로운 이진 정렬을 위해 BIN2에 해당하는 새 비교 플래그가 추가됩니다. 자세한 내용은 이진 데이터 정렬 사용을 참조하십시오.

  • SQL Server 데이터 정렬
    SQL Server 데이터 정렬은 이전 버전의 SQL Server와 정렬 순서가 호환됩니다. SQL Server 데이터 정렬은 SQL Server에서 정의한 charvarchar 데이터 형식과 같은 비유니코드 데이터에 대해 레거시 SQL Server 정렬 순서를 기반으로 합니다. 비유니코드 데이터에 대한 사전 정렬 규칙은 Windows 운영 체제에서 제공하는 정렬 루틴과 호환되지 않지만 유니코드 데이터의 정렬은 특정 버전의 Windows 정렬 규칙과 호환됩니다. SQL Server 데이터 정렬은 비유니코드 데이터와 유니코드 데이터에 대해 다른 비교 규칙을 사용하므로 기본 데이터 형식에 따라 동일한 데이터에 대한 비교 결과가 달라질 수 있습니다. 자세한 내용은 SQL 데이터 정렬 사용을 참조하십시오.

    [!참고] SQL Server 인스턴스를 업그레이드할 때 기존 SQL Server 인스턴스와의 호환성을 위해 SQL Server 데이터 정렬을 지정할 수 있습니다. SQL Server 인스턴스의 기본 데이터 정렬은 설치 중에 정의되므로 데이터 정렬 설정을 지정할 때는 주의해야 합니다.

    • 응용 프로그램 코드가 이전의 SQL Server 데이터 정렬 동작에 어느 정도 의존하는 경우
    • SQL Server 6.5 또는 SQL Server 7.0의 기존 설치와 함께 SQL Server 2005 복제를 사용할 경우
    • 여러 언어를 반영하는 문자 데이터를 저장해야 하는 경우

SQL Server 2005는 다음 수준의 SQL Server 2005 인스턴스에서 데이터 정렬을 설정하도록 지원합니다.

  • 서버 수준 데이터 정렬
    SQL Server 인스턴스의 기본 데이터 정렬은 설치 중에 설정됩니다. 또한 인스턴스에 대한 기본 데이터 정렬은 master, model, tempdb, msdbdistribution와 같은 시스템 데이터베이스의 기본 데이터 정렬이 됩니다. 열 또는 데이터베이스 이외의 개체에 데이터 정렬을 할당한 후 개체를 삭제했다가 다시 만드는 경우를 제외하고는 데이터 정렬을 변경할 수 없습니다. SQL Server 인스턴스의 기본 데이터 정렬을 변경하는 대신 새 데이터베이스 또는 데이터베이스 열을 만들 때 데이터 정렬을 지정할 수 있습니다.

    SQL Server 인스턴스에 대한 서버 데이터 정렬을 쿼리하려면 다음 Transact-SQL SERVERPROPERTY 함수를 사용합니다.

    SELECT CONVERT (varchar, SERVERPROPERTY('collation'))
    

    서버에서 사용 가능한 모든 데이터 정렬을 쿼리하려면 다음 fn_helpcollations() 기본 제공 함수를 사용합니다.

    SELECT * from ::fn_helpcollations()
    
  • 데이터베이스 수준 데이터 정렬
    데이터베이스를 만들 때 CREATE DATABASE 문의 COLLATE 절을 사용하여 데이터베이스의 기본 데이터 정렬을 지정할 수 있습니다. 데이터베이스 생성 중에 데이터 정렬을 지정하지 않으면 데이터베이스에 model 데이터베이스의 기본 데이터 정렬이 할당됩니다. model 데이터베이스의 기본 데이터 정렬은 SQL Server 인스턴스의 기본 데이터 정렬과 같습니다.

    사용자 데이터베이스의 데이터 정렬은 다음과 같이 ALTER DATABASE 문을 사용하여 변경할 수 있습니다.

    ALTER DATABASE myDB COLLATE Greek_CS_AI
    

    데이터베이스의 현재 데이터 정렬은 다음과 같은 문을 사용하여 검색할 수 있습니다.

    SELECT CONVERT (varchar, DATABASEPROPERTYEX('database_name','collation'))
    

    [!참고] 데이터베이스 수준 데이터 정렬을 변경해도 사용자, 테이블 또는 열 수준 데이터 정렬은 영향을 받지 않습니다.

  • 열 수준 데이터 정렬
    테이블을 만들 때 CREATE TABLE 문의 COLLATE 절을 사용하여 각 문자열에 대한 데이터 정렬을 지정할 수 있습니다. 테이블 생성 중에 데이터 정렬을 지정하지 않으면 열에 데이터베이스의 기본 데이터 정렬이 할당됩니다.

    열의 데이터 정렬은 다음과 같이 ALTER TABLE 문을 사용하여 변경할 수 있습니다.

    ALTER TABLE myTable ALTER COLUMN mycol NVARCHAR(10) COLLATE Greek_CS_AI
    
  • 식 수준 데이터 정렬
    식 수준 데이터 정렬은 문이 실행될 때 설정되며 결과 집합이 반환되는 방식에 영향을 줍니다. 이 데이터 정렬을 사용하면 결과를 정렬할 수 있으므로 ORDER BY 절은 언어마다 다를 수 있습니다. 다음과 같이 COLLATE 절을 사용하여 식 수준 데이터 정렬을 구현할 수 있습니다.

    SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI
    

맨 위로 이동

데이터 형식

데이터 형식은 값 범위, 해당 값에 대해 수행할 수 있는 작업 및 컴퓨터의 메모리에 값이 저장되는 방식을 지정하는 정의입니다. 데이터 형식을 정의하면 SQL Server에서 예측 가능한 방식으로 데이터를 조작할 수 있습니다. 비유니코드 문자 데이터 형식은 char, varchartext입니다. 유니코드 데이터 형식은 유니코드 문자 표현을 사용합니다. nchar, nvarcharntext가 유니코드 데이터 형식에 해당합니다. 응용 프로그램에서는 유니코드 데이터 형식을 사용하는 것이 좋으며 여러 언어를 반영하는 문자 데이터를 저장하는 경우에는 더욱 그렇습니다.

관련 항목:데이터 형식(데이터베이스 엔진), 데이터 형식(Transact-SQL), Integration Services 데이터 형식

맨 위로 이동

전역화

전역화는 여러 가지 구어 및 로캘을 고려하는 기능 및 코드 디자인으로 소프트웨어 응용 프로그램을 개발하는 과정을 말합니다. 전역화된 응용 프로그램 디자인은 데이터 입력, 처리, 표시 및 출력을 위해 여러 로캘 및 유니코드 지원 언어를 사용합니다.

관련 항목:SQL Server의 국가별 고려 사항

맨 위로 이동

로캘

로캘은 구어의 이름 및 식별자, 문어 및 문화적 관습 등과 같이 장소나 문화와 관련된 정보의 모음입니다. SQL Server 2005에서는 Windows XP에서 지원되는 135가지 로캘을 모두 지원합니다. 여기에는 다섯 가지 중국어 로캘(중국어(홍콩 특별 행정구), 중국어(마카오 특별 행정구), 중국어(중국), 중국어(싱가포르), 중국어(대만)), 13가지 영어 로캘(영어(오스트레일리아), 영어(벨리즈), 영어(카리브 해), 영어(캐나다), 영어(아일랜드), 영어(자메이카), 영어(뉴질랜드), 영어(필리핀), 영어(남아프리카 공화국), 영어(트리니다드), 영어(영국), 영어(미국), 영어(짐바브웨)), 여섯 가지 프랑스어 로캘(프랑스어(벨기에), 프랑스어(캐나다), 프랑스어(프랑스), 프랑스어(룩셈부르크), 프랑스어(모나코), 프랑스어(스위스))가 포함됩니다.

다음 표에서는 Windows에서 지원하는 네 가지 일반 로캘 간 차이점을 보여 줍니다.

로캘 영어(미국) 프랑스어(프랑스) 일본어 아랍에미리트

국가/지역

미국

프랑스

일본

아랍에미리트

언어

영어

프랑스어

일본어

아랍어

문어

라틴어

라틴어

가나, 간지

아랍어

읽는 순서

왼쪽에서 오른쪽

왼쪽에서 오른쪽

왼쪽에서 오른쪽

오른쪽에서 왼쪽

Windows 정의 코드 페이지

1252

1252

932

1256

시간 형식

1:00 pm

13:00

13:00

1:00 p

달력

일반 달력

일반 달력

양력(지역화됨)

양력(지역화됨)

기본 용지 크기

U.S. Letter

A4

A4

A4

소수 구분 기호

.

,

.

,

목록 구분 기호

,

;

,

;

1000 단위 구분 기호

,

공백

,

,

맨 위로 이동

읽는 순서

읽는 순서는 입력된 문자의 순서가 아닌 단어 순서에 따른 정렬된 텍스트 시퀀스의 전체 방향입니다. 예를 들어 키보드 언어로 아라비아어를 사용하면 새 문자가 항상 오른쪽에서 왼쪽으로 배치되고 키보드 언어가 라틴어이면 새 문자는 왼쪽에서 오른쪽으로 배치됩니다.

맨 위로 이동

정렬 순서

정렬 순서는 데이터 값이 정렬되는 방식을 지정하며 데이터 비교 결과에 영향을 미칩니다. 데이터는 데이터 정렬 설정에 따라 정렬되며 인덱스를 사용하여 데이터 정렬을 최적화할 수 있습니다.

관련 항목:Windows 데이터 정렬 스타일, 인덱스

맨 위로 이동

유니코드

유니코드는 언어의 문자를 한 바이트가 아닌 두 바이트로 나타내므로 단일 유니코드 문자 집합으로 전세계 거의 모든 언어를 나타낼 수 있습니다. 유니코드는 비영리 컴퓨터 기업인 Unicode Consortium에 의해 개발되어 유지 관리 및 판매되고 있습니다. 자세한 내용은 유니코드 컨소시엄 웹 사이트를 참조하십시오.

여러 언어를 반영하는 문자 데이터를 저장할 경우에는 비유니코드 데이터 형식(char, varchartext) 대신 항상 유니코드 데이터 형식(nchar, nvarcharntext)을 사용하십시오. 유니코드를 사용하면 코드 페이지 변환이 별로 필요하지 않으므로 성능이 크게 향상되는 것을 느낄 수 있습니다. 비유니코드 컴퓨터에서는 단일 코드 페이지만 사용할 수 있으므로 비유니코드 데이터 형식과 관련된 여러 가지 제한 요인이 발생합니다. 유니코드 데이터 형식 또는 비유니코드 데이터 형식 사용과 관련된 문제점을 완전하게 평가하려면 작업 시나리오를 테스트하여 특정 환경에서 나타나는 성능 차이를 측정해야 합니다. 이를 위해 적어도 사이트 데이터 정렬을 표준화하고 유니코드 서버 및 클라이언트를 배포해야 합니다.

대부분의 경우 사용하는 SQL Server 인스턴스가 다른 서버나 클라이언트와 상호 작용하게 되며 여러 데이터 액세스 표준을 사용할 수 있습니다. SQL Server 클라이언트는 다음의 두 가지 주요 유형 중 하나에 해당됩니다.

  • 유니코드 클라이언트 - OLE DB 및 ODBC(Open Database Connectivity) 버전 3.7 이상 사용
  • 비유니코드 클라이언트 - DB-Library 및 ODBC 버전 3.6 이상 사용

다음 표에서는 유니코드 서버 및 비유니코드 서버의 다양한 조합과 함께 다언어 데이터 사용에 대한 고려 사항을 나타냅니다.

서버 클라이언트 이점 또는 제한 사항

유니코드

유니코드

시스템 전체에서 유니코드 데이터가 사용되므로 이상적인 구성입니다. 이 시나리오는 검색한 데이터가 손상되지 않는 등 최상의 성능을 제공합니다. Microsoft ADO(ActiveX Data Objects), OLE DB 및 ODBC 버전 3.7 이상이 여기에 해당됩니다.

유니코드

비유니코드

이 시나리오에서 데이터 저장은 문제가 되지 않을 수 있지만 데이터를 클라이언트 컴퓨터로 이동할 때 제한이 발생할 수 있습니다. 최소한 비유니코드 클라이언트의 코드 페이지를 사용하여 유니코드 데이터를 변환해야 합니다.

비유니코드

유니코드

다언어 데이터를 사용할 경우 이상적인 구성이 아닙니다. 유니코드 데이터를 비유니코드 서버에 쓸 수 없습니다. 서버의 코드 페이지를 벗어나는 서버로 데이터를 보낼 때 문제가 발생할 수 있습니다.

비유니코드

비유니코드

다언어 데이터를 사용할 때 가장 제한이 많은 시나리오입니다. 단일 코드 페이지만 사용할 수 있습니다. 이상적인 구성은 유니코드 서버와 유니코드 클라이언트 조합입니다.

관련 항목:유니코드 기본 사항

맨 위로 이동

참고 항목

참조

데이터 정렬 옵션 및 국가별 지원

도움말 및 정보

SQL Server 2005 지원 받기