• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 1. 리터럴 값
    1. 문자열 리터럴
    2. 숫자 리터럴
    3. 날짜 리터럴과 시간 리터럴
    4. 16 진수 리터럴
    5. boolean 리터럴
    6. 비트 필드 리터럴
    7. NULL 값
    2. 스키마 개체 이름
    3. 예약어
    4. 사용자 정의 변수
    5. 식의 구문
    6. 댓글 구문
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

9.1.1 문자열 리터럴

문자열은 작은 따옴표 ( ' ' ') 또는 큰 따옴표 ( " " ")로 둘러싸인 바이트 또는 문자 시퀀스입니다. 예 :

 'a string'
 "another string"

서로 옆에 인용 된 문자열은 하나의 문자열로 연결됩니다. 다음 줄은 동일합니다.

 'a string'
 'a' '' 'string'

ANSI_QUOTES SQL 모드를 사용하는 경우는 큰 따옴표로 묶인 문자열 식별자로 해석되기 때문에 문자열 리터럴 따옴표는 작은 따옴표 만 사용할 수 있습니다.

이진 문자열은 문자 집합 및 데이터 정렬이없는 바이트 문자열입니다. 비 이진 문자열은 문자 세트와 데이터 정렬을 가진 문자열입니다. 이러한 두 문자열 타입은 문자열 단위의 수치에 따라 비교됩니다. 이진 문자열의 경우 단위는 바이트입니다. 비 바이너리 문자열의 경우 단위는 문자이며, 멀티 바이트 문자를 지원하는 문자 세트도 있습니다. 문자 값의 순서는 문자열 데이터 정렬 함수입니다.

문자열 리터럴은 옵션으로 문자 세트 인트로 듀서와 COLLATE 절을 지정할 수 있습니다.

 [_ charset_name ] ' string '[COLLATE collation_name ]

예 :

 SELECT _latin1 ' string ';
 SELECT _latin1 ' string 'COLLATE latin1_danish_ci;

N' literal ' (또는 n' literal ' )를 사용하면 각국 캐릭터 세트의 문자열을 만들 수 있습니다. 다음 명령문은 동일합니다.

 SELECT N'some text ';
 SELECT n'some text ';
 SELECT _utf8'some text ';

이러한 문자열 구문의 형식 자세한 내용은 섹션 10.1.3.5 "문자열 리터럴 문자 집합 및 데이터 정렬" 및 섹션 10.1.3.6 "각국 캐릭터 세트" 를 참조하십시오.

NO_BACKSLASH_ESCAPES SQL 모드가 활성화되어있는 경우를 제외하고 일부 시퀀스가 문자열에서 특별한 의미를 갖습니다. 이 시퀀스는 모두 이스케이프 문자로 알려진 백 슬래시 ( " \ ")로 시작합니다. MySQL은 표 9.1 "특수 문자 이스케이프 시퀀스" 를 나타내는 이스케이프 시퀀스를 인식합니다. 다른 모든 이스케이프 시퀀스는 백 슬래시는 무시됩니다. 즉, 이스케이프 된 문자가 이스케이프되지 않은 것으로 해석됩니다. 예를 들어, " \x "는 단순한" x "입니다. 이러한 순서는 대소 문자를 구분합니다. 예를 들어, ' \b '는 백 스페이스로 해석되지만,' \B '는' B '로 해석됩니다. 이스케이프는 character_set_connection 시스템 변수에 지정된 문자 세트에 따라 실행됩니다. 섹션 10.1.3.5 "문자열 리터럴 문자 집합 및 정렬 순서" 에 설명 된대로 다른 문자 집합을 나타내는 인트로 듀서가 앞에 놓여있는 문자열에 대해서도 같은 것을 말할 수 있습니다.

표 9.1 특수 문자 이스케이프 시퀀스

이스케이프 시퀀스 순서가 나타내는 문자
\0 ASCII NUL ( 0x00 ) 문자.
\' 작은 따옴표 ( ' ' ') 문자.
\" 큰 따옴표 ( " " ") 문자.
\b 백 스페이스 문자.
\n 개행 (줄 바꿈) 문자.
\r 구간.
\t 탭 문자.
\Z ASCII 26 (Ctrl + Z). 표에 따라 기재되어있는 주석을 참조하십시오.
\\ 백 슬래시 ( " \ ") 문자.
\% " % "문자. 표에 따라 기재되어있는 주석을 참조하십시오.
\_ " _ "문자. 표에 따라 기재되어있는 주석을 참조하십시오.

ASCII 26 문자를 ' \Z "로 인코딩하면 Windows에서 ASCII 26 END-OF-FILE을 나타낸다고하는 문제를 해결할 수 있습니다. mysql db_name < file_name 을 사용하려고하면 파일의 ASCII 26 문제를 일으 킵니다.

" \% "와" \_ "시퀀스는 패턴 매칭 컨텍스트에서 리터럴 인스턴스 ' % '및' _ '를 검색하는 데 사용됩니다 (패턴 매칭 컨텍스트 외부에서 와일드 카드 문자로 해석된다). 섹션 12.5.1 "문자열 비교 함수" 의 LIKE 연산자에 대한 설명을 참조하십시오. 패턴 매칭 컨텍스트 외부에서 ' \% '또는' \_ '를 사용하면' % ',' _ '가 아니라 문자열 " \% "," \_ "로 평가됩니다.

문자열에 따옴표를 포함하는 방법은 여러 가지가 있습니다.

  • ' ' '로 둘러싼 문자열에서' ' '를 사용하려면' '' "라고 설명합니다.

  • " " "로 묶인 문자열에서" " "를 사용하는 경우에는" "" "라고 설명합니다.

  • 인용 부호 문자의 직전에 이스케이프 문자 ( " \ ")를 지정합니다.

  • " " "로 묶인 문자열에서 ' ' '을 사용하는 경우 따옴표를 2 개 계속해 입력하거나 회피하는 등의 특별한 조치가 필요하지 않습니다. 마찬가지로, ' ' '로 둘러싼 문자열에서 " " "를 사용하는 경우에도 특별한 처리가 필요하지 않습니다.

다음의 SELECT 문은 따옴표를 사용했을 경우와 탈출을 사용한 경우에 어떤 효과가 있는지를 보여줍니다.

mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+

mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+

mysql> SELECT 'This\nIs\nFour\nLines';
+--------------------+
| This
Is
Four
Lines |
+--------------------+

mysql> SELECT 'disappearing\ backslash';
+------------------------+
| disappearing backslash |
+------------------------+

문자열 컬럼 ( BLOB 컬럼 등)에 바이너리 데이터를 삽입하는 경우 어떤 문자도 이스케이프 시퀀스로 표현합니다. 백 슬래시 ( " \ ")로 문자열 주위에 따옴표는 이스케이프해야합니다. 특정 클라이언트 환경에서 NUL 이나 Ctrl + Z도 탈출해야합니다. mysql 클라이언트는 NUL 문자가 이스케이프되지 않은 경우이를 포함 인용 된 문자열을 자릅니다. Ctrl + Z는 이스케이프되어 있지 않은 경우, Windows에서 END-OF-FILE을 나타내는 것으로 간주 될 수 있습니다. 이러한 각각의 문자를 나타내는 이스케이프 시퀀스는 표 9.1 "특수 문자 이스케이프 시퀀스" 를 참조하십시오.

응용 프로그램을 작성할 경우 MySQL Server에 전송되는 SQL 문에서 문자열 데이터 값으로 사용되기 전에 이러한 특수 문자를 포함 할 수있는 문자열은 올바르게 이스케이프해야합니다. 여기에는 다음의 두 가지 방법이 있습니다.

  • 특수 문자를 이스케이프 함수를 사용하여 문자열을 처리합니다. C 프로그램은 C API 함수 mysql_real_escape_string() 을 사용하여 문자를 이스케이프 수 있습니다. 섹션 23.8.7.54 "mysql_real_escape_string ()" 를 참조하십시오. 다른 SQL 문을 구성하는 SQL 문에서는 QUOTE() 함수를 사용할 수 있습니다. Perl DBI 인터페이스는 quote 메소드를 사용하여 특수 문자를 적절한 이스케이프 시퀀스로 변환 할 수 있습니다. 섹션 23.10 "MySQL Perl API" 를 참조하십시오. 다른 언어 인터페이스에서도 같은 기능을 이용할 수 있습니다.

  • 특수 문자를 명시 적으로 탈출하는 방법 이외에 많은 MySQL API는 문 문자열에 특수 마커를 삽입하고 문을 발행 할 때 데이터 값을 해당 표시에 바인딩 할 수 플레이스 홀더 기능이 있습니다 . 이 경우 값의 특수 문자 이스케이프는 API에 의해 자동으로 이루어집니다.


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