• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.1 한글메뉴얼) [close]
  • 1. MySQL 5.1 Reference Manual
  • 2. Installing and MySQL 업그레이드하기
  • 3. 사용 설명서 (Tutorial)
  • 4. MySQL 프로그램 사용하기
  • 5. 데이터베이스 관리
  • 6. 리플리케이션
  • 7. 최적화 (Optimization)
  • 8. 클라이언트 및 유틸리티 프로그램
  • 9. 언어 구조 (Language Structure)
  • 1. 리터럴 값 (Literal Values)
    2. 아이덴티파이어 (Identifiers)
    1. 아이덴티파이어 수식어 (Identifier Qualifiers)
    2. 아이덴티파이어 대소 문자 구분 (Identifier Case Sensitivity)
    3. 아이덴티파이어를 파일 이름과 매핑하기
    4. 함수 이름 파싱 (Parsing)과 해석
    3. 사용 지정 단어 (Reserved Words)
    4. 사용자 정의 변수
    5. 코멘트 신텍스
  • 10. 문자 셋 지원
  • 24. API 및 라이브러리
  • 25. Connectors

9.2. 아이덴티파이어 (Identifiers)

 

9.2.1. 아이덴티파이어 수식어 (Identifier Qualifiers)

9.2.2. 아이덴티파이어 대소 문자 구분 (Identifier Case Sensitivity)

9.2.3. 아이덴티파이어를 파일 이름과 매핑하기

9.2.4. 함수 이름 파싱 (Parsing)과 해석

 

데이터 베이스, 테이블, 인덱스, 컬럼 그리고 별칭은 아이덴티파이어이다. 이 섹션에서는 MySQL에서 사용할 수 있는 아이덴티파이어에 대해서 설명하기로 한다.

 

아래의 테이블에서는 각각의 아이덴티파이어 타입이 가질 수 있는 최대 크기를 보여 준다.

 

Identifier

Maximum Length (bytes)

Database

64

Table

64

Column

64

Index

64

Alias

255

 

아이덴티파이어에 나타날 수 있는 문자에는 몇 가지 제약이 존재한다:

  • 어떠한 아이덴티파이어도 ASCII 0 (0x00) 또는 255 값을 사용하는 바이트를 가질 수 없다.
  • 아이덴티파이어 안에서 아이덴티파이어 인용 부호 문자를 사용하는 것은 가능하지만, 가능하면 이 방법을 사용하지 않는 것이 좋다.
  • 데이터 베이스, 테이블, 그리고 컬럼 이름은 스페이스 문자로 끝나지 말아야 한다.
  • MySQL 5.1.6 이전 버전에서는, “/”, “\”, “.”, 또는 디렉토리 이름으로 사용할 수 없는 문자는 데이터 베이스 이름으로 사용할 수 없다.
  • MySQL 5.1.6 이전 버전에서는, “/”, “\”, “.”, 또는 파일 이름으로 사용할 수 없는 문자는 테이블 이름으로 사용할 수 없다.
  • 아이덴티파이어의 길이는 문자가 아닌 바이트 길이로 표시된다. 아이덴티파이어 이름으로 멀티-바이트 문자를 사용한다면, 최대 사용 가능 길이는 사용한 모든 문자의 바이트 수와 관련을 갖게 된다.

MySQL 5.1.6 버전 이후에는, 데이터베이스 이름 및 테이블 이름에 들어 있는 특수 문자가 Section 9.2.3, “아이덴티파이어를 파일 이름과 매핑하기”에서 설명하는 파일 시스템 이름에 대응해서 인코딩된다.

 

새로운 인코딩 방식을 사용하지 않은 구형 버전 MySQL 데이터베이스 또는 테이블의 특수 문자는 #mysql50#가 데이터베이스 이름 또는 테이블 이름 앞에 표시가 된다.

 

아이덴티파이어는 유니 코드 (UTF-8)을 사용해서 저장된다. 이것은 .frm 파일에 저장된 테이블 정의문의 아이덴티파이어 및 mysql 데이터 베이스의 그랜트 테이블에 저장된 아이덴티파이어에 적용된다. MySQL 5.1의 그랜트 테이블 (그리고 다른 테이블)에 있는 스트링 컬럼의 크기는 문자의 수로 주어진다. 이것은 (MySQL 이전 버전과는 달리), 여러분이 이러한 컬럼에 저장되는 값에 대해서 다중-바이트 문자를 사용할 수 있다는 것을 의미하는 것이다.

 

아이덴티파이어는 인용 부호를 사용할 수도 있고 사용하지 않을 수도 있다. 만일 아이덴티파이어가 사용 지정된 단어이거나 또는 특수 문자를 가지고 있다면, 이것을 참조할 때마다 반드시 인용 부호를 사용하도록 한다. (예외 사항: 사용할 수 있는 이름 안에 점 (period)이 붙어 있는 단어는 반드시 아이덴티파이어이기 때문에, 이것이 사용 지정 단어라고 하더라고 인용 부호를 사용할 필요는 없게 된다.) 특수 문자는 알파뉴메릭 (alphanumeric) 문자 셋 이외의 문자들을 의미한다.

 

아이덴티파이어 인용 문자는 백틱 (backtick) (“`”)이다:

 

mysql> SELECT * FROM `select` WHERE `select`.id > 100;

 

ANSI_QUOTES SQL 모든가 활성화 되어 있다면, 이중 인용 부호를 사용해서 아이덴티파이어를 처리하는 것이 가능하다:

 

mysql> CREATE TABLE "test" (col INT);

ERROR 1064: You have an error in your SQL syntax. (...)

mysql> SET sql_mode='ANSI_QUOTES';

mysql> CREATE TABLE "test" (col INT);

Query OK, 0 rows affected (0.00 sec)

 

Note: ANSI_QUOTES 모드는 서버가 이중 인용 부호를 사용한 스트링을 아이덴티파이어로 해석하도록 만들기 때문에, 이 모드가 활성화 되어 있는 경우에는 반드시 스트링 리터럴을 단일 인용 부호로 처리해야만 한다. 이중 인용 부호를 사용해서는 처리할 수가 없다.

 

아이덴티파이어 인용 문자는 아이덴티파이어를 인용 부호화할 경우에 아이덴티파이어 안에 포함 시킬 수가 있다. 만일 아이덴티파이어 안에 포함 시켜야 할 문자가 아이덴티파이어 자체를 인용 부호화 하는데 사용한 것과 같을 경우에는, 이중 인용 부호를 사용하면 된다. 아래의 명령문은 c"d라는 이름의 컬럼을 가지고 있는 a`b 라는 이름의 테이블을 생성한다:

 

mysql> CREATE TABLE `a``b` (`c"d` INT);

 

M 과 N 이 정수인 경우에는 Me 또는 MeN 형태의 이름을 사용하지 말도록 한다. 예를 들면, 아이덴티파이어로 1e 또는 2e2 와 같은 형태는 피해야 하는데, 그 이유는 1e+3 와 같은 수식이 애매해질 수 있기 때문이다. 문장에 따라서, 이러한 이름은 수식 1e + 3 또는 숫자 1e+3로 해석될 수도 있다.

 

MD5()을 사용해서 테이블 이름을 생성할 때에는 주의를 해야 하는데, 그 이유는 이것이 위에서 설명한 것과 유사한 애매한 포맷 또는 올바르지 못한 이름을 만들기 때문이다.

서울시 강남구 영동대로 602 6층  TEL: 02-6061-0006
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved