• 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(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 1. 데이터 정의 문
    2. 데이터 조작 문
    3. MySQL 트랜잭션과 잠금 문
    4. 복제 문
    5. Prepared Statements위한 SQL 구문
    6. MySQL 복합문 구문
    7. 데이터베이스 관리 문
    1. 계정 관리 문
    2. 테이블 유지 보수 문
    3. 플러그인 및 사용자 정의 함수 문
    4. SET 구문
    5. SHOW 구문
    6. 기타 관리 문
    8. MySQL 유틸리티 문
  • 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 새로운 기능

13.7.4 SET 구문

SET variable_assignment [, variable_assignment] ...

variable_assignment:
      user_var_name = expr
    | [GLOBAL | SESSION] system_var_name = expr
    | [@@global. | @@session. | @@]system_var_name = expr 

SET 문은 서버 또는 클라이언트의 작업에 영향을 미치는 각종 변수에 값을 할당합니다.

이 섹션에서는 변수에 값을 할당하기위한 SET 의 사용에 대해 설명합니다. SET 문을 사용하면 다음과 같은 유형의 변수에 값을 할당 할 수 있습니다.

  • 시스템 변수. 섹션 5.1 "서버 시스템 변수" 를 참조하십시오. 시스템 변수는 또한 섹션 5.1.5 "시스템 변수 사용" 에 설명 된대로 서버를 시작할 때도 설정할 수 있습니다.

    사용자 정의 변수. 섹션 9.4 "사용자 정의 변수" 를 참조하십시오.

  • 저장 프로 시저 또는 저장 함수의 매개 변수 및 저장 프로그램의 로컬 변수. 섹션 13.6.4 "저장 프로그램 내의 변수" 를 참조하십시오.

다른 컨텍스트에서는 SET 구문의 여러 변형이 사용됩니다.

  • SET CHARACTER SET 과 SET NAMES 는 서버에 연결하는 데 관련된 문자 집합 및 데이터 정렬 변수에 값을 할당합니다. SET ONE_SHOT 복제에 사용됩니다. 이러한 변형은이 섹션의 나머지 부분에서 설명되어 있습니다.

  • SET PASSWORD 계정의 암호를 지정합니다. 섹션 13.7.1.7 "SET PASSWORD 구문" 을 참조하십시오.

  • SET TRANSACTION ISOLATION LEVEL 은 트랜잭션 처리의 격리 수준을 설정합니다. 섹션 13.3.6 "SET TRANSACTION 구문" 을 참조하십시오.

다음의 설명 변수를 설정하는 데 사용할 수있는 각종 SET 구문을 보여줍니다. 이러한 예는 = 할당 연산자를 사용하고 있습니다 만,이 목적은 := 할당 연산자도 사용할 수 있습니다.

사용자 변수는 @ var_name 으로 설명되어 다음과 같이 설정할 수 있습니다.

 SET @ var_name = expr ;

많은 시스템 변수는 동적이며 SET 문을 사용하여 서버가 실행중인 동안 변경할 수 있습니다. 목록 내용은 섹션 5.1.5.2 "동적 시스템 변수" 를 참조하십시오. SET 를 이용하여 시스템 변수를 변경하려면 선택적으로 수식어 앞에하는 var_name 으로 시스템 변수를 참조하십시오.

  • 변수가 전역 변수임을 명시 적으로 지시하기 위하여는 그 이름 앞에 GLOBAL 또는 @@global. 을 지정합니다. 전역 변수를 설정하려면 SUPER 권한이 필요합니다.

  • 변수가 세션 변수임을 명시 적으로 지시하는 그 이름 앞에 SESSION , @@session. 또는 @@ 를 넣습니다. 세션 변수를 제대로 설정하는 데 특별한 권한이 필요하지 않습니다. 그러나 예외가 있습니다 ( sql_log_bin 등). 클라이언트는 자신의 세션 변수를 변경할 수 있지만 다른 어떤 클라이언트 세션 변수도 변경할 수 없습니다.

  • LOCAL 과 @@local. 은 SESSION 과 @@session. 동의어입니다.

  • 수식이 아무것도 없으면, SET 은 세션 변수를 변경합니다.

SET 문은 쉼표로 구분 된 여러 변수 할당을 포함 할 수 있습니다. 예를 들어, 문은 사용자 정의 변수와 시스템 변수에 값을 할당 할 수 있습니다. 여러 시스템 변수를 설정하면 문에서 가장 최근의 GLOBAL 또는 SESSION 수식이 지정된 한정자가없는 후속 변수에 사용됩니다.

예 :

 SET sort_buffer_size = 10000;
 SET @@ local.sort_buffer_size = 10000;
 SET GLOBAL sort_buffer_size = 1000000, SESSION sort_buffer_size = 1000000;
 SET @@ sort_buffer_size = 1000000;
 SET @@ global.sort_buffer_size = 1000000 @@ local.sort_buffer_size = 1000000;

시스템 변수 @@ var_name 구문은 다른 일부 데이터베이스 시스템과의 호환성을 지원하고 있습니다.

세션 시스템 변수를 변경하면 세션이 끝날 때까지 또는 변수를 다른 값으로 변경하기 전까지는 그 값이 적용됩니다. 다른 클라이언트는 변경을 볼 수 없습니다.

글로벌 시스템 변수를 변경하면 그 값은 서버가 재시작 할 때까지 기억되어 새로운 연결에 사용됩니다. (글로벌 시스템 변수를 영구적으로 설정하려면 옵션 파일에 설정해야합니다.) 글로벌 변수에 액세스하는 모든 클라이언트가 변경을 확인할 수 있습니다. 그러나 변경은 변경 후 연결하는 클라이언트의 해당 세션 변수에만 영향을 미칩니다. 글로벌 변수의 변경은 현재 연결된 클라이언트의 세션 변수에 영향을주지 않습니다 ( SET GLOBAL 명령문을 발행하는 클라이언트 세션 변수에 영향을주지 않습니다).

오용을 방지하기 위해 SET SESSION 과에서만 사용할 수있는 변수와 함께 SET GLOBAL 를 사용하거나 전역 변수를 설정할 때 GLOBAL (또는 @@global. )를 지정하지 않으며 경우에 MySQL에서 오류가 발생합니다.

SESSION 변수를 GLOBAL 값으로 설정하거나 GLOBAL 값을 컴파일시 MySQL의 기본값으로 설정하거나하려면 DEFAULT 키워드를 사용합니다. 예를 들어, 다음 두 명령문은 max_join_size 의 세션 값을 글로벌 값으로 설정하는데있어서 동일합니다.

 SET max_join_size = DEFAULT;
 SET @@ session.max_join_size = @@ global.max_join_size;

모든 시스템 변수를 DEFAULT 로 설정되는 것은 아닙니다. 그런 경우 DEFAULT 를 사용하면 오류가 발생합니다.

사용자 정의 변수 저장 프로 시저 또는 저장 함수의 매개 변수 또는 저장 프로그램의 로컬 변수에 값 DEFAULT 를 지정할 수는 허용되지 않습니다. 사용자 정의 변수의 경우, 이것은 구문 오류입니다. 또한 MySQL 5.6.6의 시점에서는 매개 변수 또는 로컬 변수의 경우도 마찬가지입니다.

중 하나 @@ 한정자를 사용하여 특정 글로벌 시스템 변수 또는 세션 시스템 변수의 값을 식으로 볼 수 있습니다. 예를 들어, 다음과 같이 SELECT 문에서 값을 얻을 수 있습니다.

 SELECT @@ global.sql_mode @@ session.sql_mode @@ sql_mode;

@@ var_name 과 같은 식으로 시스템 변수를 참조 할 때 (즉, @@global. 또는 @@session. 을 지정하지 않으면), MySQL은 세션 값이 존재하면 그것을 돌려주고, 그렇지 않으면 글로벌 값을 돌려줍니다. (이것은 항상 세션 값을 참조하는 SET @@ var_name = value 와는 다릅니다.)

참고

SHOW VARIABLES 에 의해 표시되는 일부 변수는 SELECT @@ var_name 구문에서 사용할 수없는 경우가 있고, '알수 없는 시스템 변수 입니다' 로 표시됩니다. 그 경우의 해결 방법으로 SHOW VARIABLES LIKE ' var_name ' 를 사용할 수 있습니다.

값 승수를 지정하는 접미사는 서버를 시작할 때 변수를 설정할 때 사용할 수 있지만 런타임에 SET 값을 설정하는 데 사용할 수 없습니다. 한편, SET 을 사용하면 수식을 사용하여 변수의 값을 할당 할 수 있지만, 서버를 시작할 때 변수를 설정할 때 사용할 수 없습니다. 예를 들어, 서버를 시작할 때 다음의 첫 번째 줄은 유효하지만 두 번째 줄은 무효입니다.

 shell> mysql --max_allowed_packet=16M
 shell> mysql --max_allowed_packet=16*1024*1024

반대로, 실행시 다음 두 번째 줄은 유효하지만 첫 번째 줄은 무효입니다.

 mysql> SET GLOBAL max_allowed_packet=16M;
 mysql> SET GLOBAL max_allowed_packet=16*1024*1024;

시스템 변수의 이름과 값을 표시하려면 SHOW VARIABLES 문을 사용합니다. ( 섹션 13.7.5.40 "SHOW VARIABLES 구문" 을 참조하십시오.)

다음 목록은 비표준 문법을 가진 SET 옵션 (즉, name = value 구문에서 설정되지 않은 옵션)를 보여줍니다.

  • CHARACTER SET { charset_name | DEFAULT}

    이것은 매핑이 지정되어있는 모든 문자열을 클라이언트 사이에 맵합니다. MySQL 소스 배포판의 sql/convert.cc 을 편집하여 새로운 매핑을 추가 할 수 있습니다. SET CHARACTER SET 은 3 개의 세션 시스템 변수를 설정합니다. character_set_client 와 character_set_results 은 지정된 문자 세트로 설정되어 character_set_connection 는 character_set_database 값으로 설정됩니다. 섹션 10.1.4 "연결 문자 집합 및 정렬 순서" 를 참조하십시오.

    기본 매핑 값 DEFAULT 를 사용하여 복원 할 수 있습니다. 이 기본값은 서버 구성에 따라 다릅니다.

    ucs2 , utf16 및 utf32 클라이언트 문자 집합으로 사용할 수 없습니다. 즉, 이들은 SET CHARACTER SET 에서는 작동하지 않습니다.

  • NAMES {' charset_name ' [COLLATE ' collation_name '] | DEFAULT}

    SET NAMES 는 3 개의 세션 시스템 변수 character_set_client , character_set_connection 및 character_set_results 를 지정된 문자 세트로 설정합니다. character_set_connection 을 charset_name 으로 설정하면 collation_connection 도 charset_name 의 기본 데이터 정렬로 설정됩니다. 옵션 COLLATE 절을 사용하면 데이터 정렬을 명시 적으로 지정할 수 있습니다. 섹션 10.1.4 "연결 문자 집합 및 정렬 순서" 를 참조하십시오.

    기본 매핑은 DEFAULT 값을 사용하여 복원 할 수 있습니다. 이 기본값은 서버 구성에 따라 다릅니다.

    ucs2 , utf16 및 utf32 클라이언트 문자 집합으로 사용할 수 없습니다. 즉, 이들은 SET NAMES 에서는 작동하지 않습니다.

  • ONE_SHOT

    ONE_SHOT 은 내부에서만 사용됩니다. 이것은 MySQL 5.0에서 비추천이며, MySQL 5.6.1에서 삭제되었습니다.


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