• 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. 함수와 연산자
  • 1. 함수와 연산자 참조
    2. 식 평가 형식 변환
    3. 연산자
    4. 제어 흐름 함수
    5. 문자열 함수
    6. 수치 함수와 연산자
    7. 날짜 및 시간 함수
    8. MySQL에서 사용되는 달력
    9. Full-Text 검색 기능
    10. 캐스트 함수와 연산자
    11. XML 함수
    12. 비트 함수
    13. 암호화 함수와 압축 함수
    14. 정보 함수
    15. 공간 분석 함수
    16. 글로벌 트랜잭션 ID와 함께 사용되는 함수
    17. MySQL Enterprise Encryption 기능
    18. 기타 함수
    19. GROUP BY 절에서 사용되는 함수와 수식
    20. 정밀 계산
  • 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 새로운 기능

12.18 기타 함수

표 12.23 기타 함수

이름 설명
DEFAULT() 테이블 컬럼의 기본값을 반환합니다
GET_LOCK() 명명 된 잠금을 가져옵니다
INET_ATON() IP 주소의 숫자를 반환합니다
INET_NTOA() 수치에서 IP 주소를 돌려줍니다
INET6_ATON() IPv6 주소의 숫자를 반환합니다
INET6_NTOA() 수치에서 IPv6 주소를 돌려줍니다
IS_FREE_LOCK() 명명 된 잠금이 해제되어 있는지 확인합니다
IS_IPV4_COMPAT() 인수가 IPv4 호환 주소의 경우, true를 돌려줍니다
IS_IPV4_MAPPED() 인수가 IPv4 맵 주소의 경우, true를 돌려줍니다
IS_IPV4() 인수가 IPv4 주소의 경우, true를 돌려줍니다
IS_IPV6() 인수가 IPv6 주소의 경우, true를 돌려줍니다
IS_USED_LOCK() 명명 된 잠금이 사용 중인지 여부를 확인합니다. true의 경우는 연결 식별자를 돌려줍니다.
MASTER_POS_WAIT() 슬레이브가 지정된 위치까지 모든 업데이트를 읽고 적용 할 때까지 블록합니다
NAME_CONST() 지정된 이름이 컬럼에 지정됩니다
RAND() 임의의 부동 소수점 값을 반환합니다
RELEASE_LOCK() 명명 된 잠금을 해제합니다
SLEEP() 시간 (초) 사이 잠합니다
UUID_SHORT() 정수의 범용 식별자를 돌려줍니다
UUID() 범용 고유 식별자 (UUID)를 반환합니다
VALUES() INSERT에서 사용되는 값을 정의합니다

  • DEFAULT( col_name )

    테이블 컬럼의 기본값을 반환합니다. 컬럼에 기본값이없는 경우 오류가 발생합니다.

     mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;
    
  • FORMAT( X , D )

    숫자 X 를 '#,###,###.##' 과 같은 형식으로 변환하고 소수점 D 정도 반올림하여 그 결과를 문자열로 반환합니다. 자세한 내용은 섹션 12.5 "문자열 함수" 를 참조하십시오.

  • GET_LOCK( str , timeout )

    timeout 초 타임 아웃을 사용하여 문자열 str 에서 지정된 이름으로 락의 취득을 시도합니다. 음수 timeout 값은 무한의 시간을 나타냅니다.

    락의 취득에 성공하면 1 을 반환하고 시간이 초과 된 경우 (예를 들어, 다른 클라이언트가 이미 그 이름을 잠그고있는 경우)는 0 을 반환하고, 오류 (메모리 부족이나 mysqladmin kill 의한 스레드 정지 등)가 발생한 경우 NULL 을 반환합니다. GET_LOCK() 을 사용하여 잠금을 취득한 경우 RELEASE_LOCK() 을 실행했을 때, 새로운 GET_LOCK() 을 실행했을 때, 또는 연결이 끊어진 경우 (정상 및 비정상을 불문하고)에 해제됩니다 . GET_LOCK() 을 사용하여 얻은 잠금은 트랜잭션과 상호 작용하지 않습니다. 즉, 트랜잭션을 커밋해도 트랜잭션 동안 검색된 잠금이 해제되지 않습니다.

    GET_LOCK() 을 사용하면 응용 프로그램 잠금을 구현하거나 레코드 잠금 시뮬레이션을 수행 할 수 있습니다. 이름은 서버 전체에 잠겨 있습니다. 하나의 세션에서 이름이 잠긴 경우, GET_LOCK() 에 의해 다른 세션에서 동일한 이름을 가진 잠금 요청이 차단됩니다. 그러면 지정된 잠금 이름에 대해 합의했다 클라이언트는 그 이름을 사용하면 공동의 권고 잠금을 실행할 수 있습니다. 그러나 공동 클라이언트 세트에 속하지 않는 클라이언트도 부주의 및 고의적 중에서나 이름을 잠글 수있는 점에 유의하십시오. 따라서 공동 클라이언트가 그 이름을 잠글 수 없도록하십시오. 이 가능성을 줄이는 방법 중 하나는 데이터베이스 또는 응용 프로그램 중심의 잠금 이름을 사용하는 것입니다. 예를 들어, db_name.str 또는 app_name.str 형식의 잠금 이름을 사용합니다.

     mysql> SELECT GET_LOCK('lock1',10);
             -> 1
     mysql> SELECT IS_FREE_LOCK('lock2');
             -> 1
     mysql> SELECT GET_LOCK('lock2',10);
             -> 1
     mysql> SELECT RELEASE_LOCK('lock2');
             -> 1
     mysql> SELECT RELEASE_LOCK('lock1');
             -> NULL
    

    잠금 'lock1' 는 두 번째 GET_LOCK() 호출에 의해 자동으로 취소되기 때문에 두 번째 RELEASE_LOCK() 호출은 NULL 을 반환합니다.

    여러 클라이언트가 잠금을 대기하고있는 경우는 락을 취득하는 순서가 정의되지 않습니다. 응용 프로그램은 잠금 요청을 발행했을 때와 같은 순서로 클라이언트가 락을 취득한다고 가정하지 않습니다.

    이 함수는 명령문 기반의 복제는 안전하게 사용할 수 없습니다. binlog_format 가 STATEMENT 로 설정되어있을 때이 함수를 사용하면 경고가 기록됩니다.

  • INET_ATON( expr )

    IPv4 네트워크 주소의 점으로 구분 된 표현이 문자열로 지정된 경우 주소의 수치를 나타내는 정수를 네트워크 바이트 순서 (빅 endian)로 돌려줍니다. 인수가 인식되지 않는 경우 INET_ATON() 는 NULL 을 반환합니다.

     mysql> SELECT INET_ATON('10.0.5.9');
             -> 167773449
    

    이 예에서는 반환 값은 10 × 256 3 + 0 × 256 2 + 5 × 256 + 9로 계산됩니다.

    INET_ATON() 는 짧은 형식의 IP 주소 ( '127.0.0.1' 의 표현으로 '127.1' 등)의 경우, 비 NULL 을 반환과 반환하지 않는 경우가 있습니다. 따라서 이러한 주소는 INET_ATON() 를 사용하지 마십시오.

    참고

    INET_ATON() 에서 생성 된 값을 저장하려면 서명 된 INT 대신 INT UNSIGNED 컬럼을 사용합니다. 서명 된 컬럼을 사용하는 경우에는 제 1 옥텟은 127보다 큰 IP 주소에 해당하는 값을 제대로 저장할 수 없습니다. 섹션 11.2.6 "범위 및 오버플로 처리" 를 참조하십시오.

  • INET_NTOA( expr )

    숫자 IPv4 네트워크 주소가 네트워크 바이트 순서로 지정된 경우 주소의 점으로 구분 된 문자열 표현을 연결 문자 셋의 비 바이너리 문자열로 반환합니다. 인수가 인식되지 않는 경우 INET_NTOA() 는 NULL 을 반환합니다.

     mysql> SELECT INET_NTOA(167773449);
             -> '10 .0.5.9 '
    
  • INET6_ATON( expr )

    IPv6 또는 IPv4 네트워크 주소를 문자열로 지정된 경우 주소의 수치를 나타내는 이진 문자열을 네트워크 바이트 순서 (빅 endian)로 돌려줍니다. 숫자 형식의 IPv6 주소는 최대의 정수보다 큰 바이트가 필요하기 때문에이 함수에서 반환되는 표현의 데이터 유형은 VARBINARY (IPv6 주소의 경우는 VARBINARY(16) , IPv4 주소의 경우는 VARBINARY(4) )입니다. 인수가 유효한 주소가 아닌 경우 INET6_ATON() 는 NULL 을 반환합니다.

    다음 예제에서는 HEX() 를 사용하여 INET6_ATON() 의 결과를 출력 할 수있는 형식으로 표시합니다.

     mysql> SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
             -> 'FDFE0000000000005A55CAFFFEFA9089'
     mysql> SELECT HEX(INET6_ATON('10.0.5.9'));
             -> '0A000509'
    

    INET6_ATON() 유효한 인수의 여러 제약을 모니터링합니다. 이러한 내용은 다음의 목록에 예와 함께 설명합니다.

    • fe80::3%1 이나 fe80::3%eth0 같은 끝에 영역 ID는 허용되지 않습니다.

    • 2001:45f:3:ba::/64 와 192.168.1.0/24 처럼 끝의 네트워크 마스크는 허용되지 않습니다.

    • IPv4 주소를 나타내는 값은 클래스없는 주소 만 지원됩니다. 192.168.1 등의 클래스 풀 주소는 거부됩니다. 192.168.1.2:8080 같은 끝에 포트 번호는 허용되지 않습니다. 192.0xa0.1.2 같은 주소 구성 요소의 16 진수는 허용되지 않습니다. 8 진수는 지원되지 않습니다. 192.168.010.1 은 192.168.8.1 대신 192.168.10.1 로 처리됩니다. 이러한 IPv4의 제한은 IPv4 주소 부분을 가지는 IPv6 주소 (IPv4 호환 주소와 IPv4 맵 주소 등)에도 적용됩니다.

    INT 값으로 숫자 형식으로 표현 된 IPv4 주소 expr 을 VARBINARY 값으로 숫자 형식으로 표현 된 IPv6 주소로 변환하려면 다음 식을 사용합니다.

     INET6_ATON (INET_NTOA ( expr ))
    

    예 :

     mysql> SELECT HEX(INET6_ATON(INET_NTOA(167773449)));
             -> '0A000509'
    

    이 함수는 MySQL 5.6.3에서 추가되었습니다.

  • INET6_NTOA( expr )

    이진 문자열로 숫자 형식으로 표현 된 IPv6 또는 IPv4 네트워크 주소가 지정된 경우 주소의 문자열 표현을 연결 문자 셋의 비 바이너리 문자열로 반환합니다. 인수가 유효한 주소가 아닌 경우 INET6_NTOA() 는 NULL 을 반환합니다.

    INET6_NTOA() 는 다음과 같은 특성이 있습니다.

    • 변환은 운영 체제의 기능을 사용하여 실행되지 않기 때문에 출력 문자열은 플랫폼에 의존하지 않습니다.

    • 돌아 문자열의 최대 길이는 39 (4 x 8 + 7)입니다. 다음 문이 지정된 경우

       CREATE TABLE t AS SELECT INET6_NTOA ( expr ) AS c1;
      

      결과로 생성 된 테이블에 다음의 정의가 포함됩니다.

       CREATE TABLE t (c1 VARCHAR (39) CHARACTER SET utf8 DEFAULT NULL);
      
    • 반환 문자열에서 IPv6 주소를 나타내는 문자가 사용됩니다.

     mysql> SELECT INET6_NTOA(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
             -> 'fdfe :: 5a55 : caff : fefa : 9089'
     mysql> SELECT INET6_NTOA(INET6_ATON('10.0.5.9'));
             -> '10 .0.5.9 '
    
     mysql> SELECT INET6_NTOA(UNHEX('FDFE0000000000005A55CAFFFEFA9089'));
             -> 'fdfe :: 5a55 : caff : fefa : 9089'
     mysql> SELECT INET6_NTOA(UNHEX('0A000509'));
             -> '10 .0.5.9 '
    

    이 함수는 MySQL 5.6.3에서 추가되었습니다.

  • IS_FREE_LOCK( str )

    str 이라는 이름이 붙은 잠금이 사용 가능한지 (즉 잠겨 있지 않은지) 여부를 확인합니다. 잠금이 사용 가능하다 (아무도 잠금을 사용하지 않는) 경우는 1 을 반환하고, 사용중인 경우는 0 을 반환하고 오류 (잘못된 인수 등)가 발생한 경우 NULL 을 반환합니다.

    이 함수는 명령문 기반의 복제는 안전하게 사용할 수 없습니다. binlog_format 가 STATEMENT 로 설정되어있을 때이 함수를 사용하면 경고가 기록됩니다.

  • IS_IPV4( expr )

    인수가 문자열로 지정된 유효한 IPv4 주소의 경우는 1을 반환하고, 그렇지 않으면 0을 반환합니다.

     mysql> SELECT IS_IPV4('10.0.5.9'), IS_IPV4('10.0.5.256');
             -> 1 0
    

    특정 인수는 IS_IPV4() 이 1을 반환하면 INET_ATON() (와 INET6_ATON() )는 NULL 이외를 돌려줍니다. 반대로 문은 해당하지 않습니다. 일부 경우에는 IS_IPV4() 가 0을 반환하면 INET_ATON() 는 NULL 이외를 돌려줍니다.

    위의 비고에 나타난 바와 같이, IS_IPV4() 는 유효한 IPv4 주소를 구성하는 것에 관해서, INET_ATON() 보다 정확하기 잘못된 값에 대해 강력한 검사를 수행해야하는 응용 프로그램 에 도움이 될 수 있습니다. 또는 INET6_ATON() 를 사용하여 IPv4 주소를 내부 형식으로 변환하고 (잘못된 주소를 나타내는) NULL 결과를 확인합니다. INET6_ATON() 는 IPv4 주소의 확인이라는 점에서 IS_IPV4() 와 동등의 공고입니다.

    이 함수는 MySQL 5.6.3에서 추가되었습니다.

  • IS_IPV4_COMPAT( expr )

    이 함수는 INET6_ATON() 에서 반환 된 것처럼 이진 문자열로 숫자 형식으로 표현 된 IPv6 주소가 지정됩니다. 인수가 유효한 IPv4 호환 IPv6 주소의 경우는 1을 반환하고, 그렇지 않으면 0을 반환합니다. IPv4 호환 주소의 형식은 :: ipv4_address 입니다.

     mysql> SELECT IS_IPV4_COMPAT(INET6_ATON('::10.0.5.9'));
             -> 1
     mysql> SELECT IS_IPV4_COMPAT(INET6_ATON('::ffff:10.0.5.9'));
             -> 0
    

    IPv4 호환 주소의 IPv4 부분은 16 진수 표기법을 사용하여 표현 할 수 있습니다. 예를 들어 192.168.0.1 다음과 같은 원시 16 진수 값이 포함됩니다.

     mysql> SELECT HEX(INET6_ATON('192.168.0.1'));
             -> 'C0A80001'
    

    IPv4 호환 형식으로 표현 된 ::192.168.0.1 은 ::c0a8:0001 또는 (선행 제로없이) ::c0a8:1 과 동일합니다.

     mysql> SELECT
         ->  IS_IPV4_COMPAT(INET6_ATON('::192.168.0.1')),
         ->  IS_IPV4_COMPAT(INET6_ATON('::c0a8:0001')),
         ->  IS_IPV4_COMPAT(INET6_ATON('::c0a8:1'));
             -> 1, 1, 1
    

    이 함수는 MySQL 5.6.3에서 추가되었습니다.

  • IS_IPV4_MAPPED( expr )

    이 함수는 INET6_ATON() 에서 반환 된 것처럼 이진 문자열로 숫자 형식으로 표현 된 IPv6 주소가 지정됩니다. 인수가 유효한 IPv4 맵 IPv6 주소의 경우는 1을 반환하고, 그렇지 않으면 0을 반환합니다. IPv4 맵 주소의 형식은 ::ffff: ipv4_address 입니다.

     mysql> SELECT IS_IPV4_MAPPED(INET6_ATON('::10.0.5.9'));
             -> 0
     mysql> SELECT IS_IPV4_MAPPED(INET6_ATON('::ffff:10.0.5.9'));
             -> 1
    

    IS_IPV4_COMPAT() 와 마찬가지로, IPv4 맵 주소의 IPv4 부분은 16 진수 표기법을 사용하여 표현 할 수 있습니다.

     mysql> SELECT
         ->  IS_IPV4_MAPPED(INET6_ATON('::ffff:192.168.0.1')),
         ->  IS_IPV4_MAPPED(INET6_ATON('::ffff:c0a8:0001')),
         ->  IS_IPV4_MAPPED(INET6_ATON('::ffff:c0a8:1'));
             -> 1, 1, 1
    

    이 함수는 MySQL 5.6.3에서 추가되었습니다.

  • IS_IPV6( expr )

    인수가 문자열로 지정된 유효한 IPv6 주소의 경우는 1을 반환하고, 그렇지 않으면 0을 반환합니다. 이 함수는 IPv4 주소가 유효한 IPv6 주소로 간주되지 않습니다.

     mysql> SELECT IS_IPV6('10.0.5.9'), IS_IPV6('::1');
             -> 0, 1
    

    특정 인수는 IS_IPV6() 이 1을 반환하면 INET6_ATON() 는 NULL 이외를 돌려줍니다.

    이 함수는 MySQL 5.6.3에서 추가되었습니다.

  • IS_USED_LOCK( str )

    str 이라는 이름이 붙은 잠금이 사용 중이거나 (즉, 잠겨 있는지) 여부를 확인합니다. 이 경우 잠금을 보유하고있는 클라이언트의 연결 식별자를 돌려줍니다. 그렇지 않은 경우는 NULL 를 돌려줍니다.

    이 함수는 명령문 기반의 복제는 안전하게 사용할 수 없습니다. binlog_format 가 STATEMENT 로 설정되어있을 때이 함수를 사용하면 경고가 기록됩니다.

  • MASTER_POS_WAIT( log_name , log_pos [, timeout ])

    이 함수는 마스터 / 슬레이브 동기화를 제어하는​​ 데 도움이됩니다. 슬레이브가 마스터 로그에서 지정된 위치까지 모든 업데이트를 읽고 적용 할 때까지 블록합니다. 반환 값은 지정된 위치까지 진행까지 슬레이브가 대기해야하는 로그 이벤트의 수입니다. 이 함수는 슬레이브 SQL 쓰레드가 시작되지 않은 경우, 슬레이브의 마스터 정보가 초기화되어 있지 않은 경우, 인수가 잘못된 경우 또는 오류가 발생한 경우 NULL 을 반환합니다. 시간 제한을 초과 한 경우는 -1 을 돌려줍니다. MASTER_POS_WAIT() 의 대기 중에 슬레이브 SQL 쓰레드가 중지되면 함수는 NULL 을 반환합니다. 슬레이브가 지정된 위치를 지나면 함수는 즉시 리턴합니다.

    timeout 값이 지정된 경우 MASTER_POS_WAIT() 는 timeout 초가 경과 한 시점에서 대기를 정지합니다. timeout 은 0보다 큰 값으로해야합니다. timeout 가 제로 또는 부의 값인 경우는 제한이 없음을 의미합니다.

    이 함수는 명령문 기반의 복제는 안전하게 사용할 수 없습니다. binlog_format 가 STATEMENT 로 설정되어있을 때이 함수를 사용하면 경고가 기록됩니다.

  • NAME_CONST( name , value )

    지정된 값을 반환합니다. 결과 집합의 열을 생성 할 때 NAME_CONST() 을 사용하면 지정된 이름이 컬럼에 지정됩니다. 인수는 정수를 지정하십시오.

    mysql> SELECT NAME_CONST('myname', 14);
    +--------+
    | myname |
    +--------+
    |     14 |
    +--------+
    

    이 함수는 내부에서만 사용됩니다. 섹션 20.7 "저장 프로그램의 바이너리 로깅" 에서 설명한 것처럼 로컬 프로그램 변수에 대한 참조를 포함 저장 프로그램에서 문을 작성할 때 서버에서 사용됩니다. 이 함수는 mysqlbinlog의 출력에 표시 될 수 있습니다.

    응용 프로그램에서 다음과 같은 간단한 별칭을 사용하여도 위에서 언급 한 예와 완전히 같은 결과를 얻을 수 있습니다.

    mysql> SELECT 14 AS myname;
    +--------+
    | myname |
    +--------+
    |     14 |
    +--------+
    1 row in set (0.00 sec)
    

    칼럼 별칭에 대한 자세한 내용은 섹션 13.2.9 "SELECT 구문" 을 참조하십시오.

  • RELEASE_LOCK( str )

    GET_LOCK() 을 사용하여 검색된 문자열 str 에 의해 이름이 붙여진 잠금을 해제합니다. 잠금이 해제 된 경우 1 을 반환하고,이 thread에 의해 잠금이 설정되지 않은 경우 (이 경우 잠금이 해제되지 않습니다)는 0 을 반환 명명 된 잠금이 존재하지 않으면 NULL 을 반환합니다 . GET_LOCK() 를 호출해도 얻지 못한 경우 나 사전에 해제 된 경우 잠금이 존재하지 않습니다.

    DO 문은 RELEASE_LOCK() 와 함께 사용하면 편리합니다. 섹션 13.2.3 "DO 구문" 을 참조하십시오.

    이 함수는 명령문 기반의 복제는 안전하게 사용할 수 없습니다. binlog_format 가 STATEMENT 로 설정되어있을 때이 함수를 사용하면 경고가 기록됩니다.

  • SLEEP( duration )

    duration 인수로 지정된 초 동안 잠 (일시 정지)하고 0을 반환합니다. SLEEP() 가 중단 된 경우는 1을 돌려줍니다. 이 기간에는 소수 부분이 포함되어있는 경우도 있습니다.

    이 함수는 명령문 기반의 복제는 안전하게 사용할 수 없습니다. binlog_format 가 STATEMENT 로 설정되어있을 때이 함수를 사용하면 경고가 기록됩니다.

  • UUID()

    1997 년 10 월에 The Open Group에 의해 공개 된 'DCE 1.1 : Remote Procedure Call "(부록 A)"CAE (Common Applications Environment) Specifications "(문서 번호 C706, http://www.opengroup.org/public/ pubs / catalog / c706.htm )에 따라 생성 된 범용 고유 식별자 (UUID)를 반환합니다.

    UUID는 공간과 시간에서 전역 고유 숫자로 설계되어 있습니다. UUID() 의 2 회 호출이 서로 연결되지 않은 2 개의 서로 다른 컴퓨터에서 실행 된 경우에도 이러한 호출은 두 개의 서로 다른 값이 생성된다고 가정됩니다.

    UUID는 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 라는 형식으로 5 개의 16 진수로 구성 utf8 문자열로 표현 된 128 비트의 숫자입니다.

    • 처음 세 개의 숫자는 타임 스탬프에서 생성됩니다.

    • 네 번째 숫자는 (예를 들어, 섬머 타임 때문에) 타임 스탬프 값의 단순성이 손실 될 경우에 대비하여, 시간의 고유성이 유지됩니다.

    • 5 번째 숫자는 공간의 고유성을 제공하는 IEEE 802 노드 번호입니다. (예를 들어, 호스트 컴퓨터에 Ethernet 카드가 탑재되어 있지 않거나 운영 체제의 인터페이스 하드웨어 주소를 찾는 방법을 모르는 것이 원인으로) 후자를 사용할 수없는 경우, 임의의 숫자로 바뀝니다. 이 경우 공간의 고유성을 보장 할 수 없습니다. 그러나 여전히 충돌이 발생할 가능성은 매우 낮습니다.

      현재 인터페이스의 MAC 주소는 FreeBSD와 Linux에서만 고려되고 있습니다. 기타 운영 체제에서는 무작위로 생성 된 48 비트의 숫자가 MySQL에서 사용됩니다.

     mysql> SELECT UUID();
             -> '6ccd780c-baba-1026-9564-0040f4311e29'
    
    경고

    UUID() 값의 목적은 고유성을 유지하는 것입니다 만, 반드시 추측 불가능하거나 예측 불가능하다고는 아닙니다. 예측 불가능 성이 필요한 경우는 UUID 값은 다른 어떤 방법으로 생성하십시오.

    참고

    UUID() 은 문 기반 복제는 제대로 작동하지 않습니다.

  • UUID_SHORT()

    ( UUID() 함수에서 반환되는 같은 문자열 형식의 128 비트 식별자가 아닌) "짧은"범용 식별자를 64 비트 부호없는 정수로서 돌려줍니다.

    다음과 같은 경우는 UUID_SHORT() 의 값이 고유 보장됩니다.

    • 일련의 마스터 / 슬레이브 서버에서 현재 호스트의 server_id 가 고유

    • server_id 의 범위가 0에서 255이다

    • mysqld 재시동 사이에 서버의 시스템 시간을 반환하지

    • mysqld 재시동 사이에 UUID_SHORT() 을 초당 평균 1600 만 횟수보다 자주 호출하지

    UUID_SHORT() 의 반환 값은 다음과 같이 구성됩니다.

       (server_id & 255) << 56
     + (server_startup_time_in_seconds << 24)
     + incremented_variable ++;
    
     mysql> SELECT UUID_SHORT();
             -> 92395783831158784
    
    참고

    UUID_SHORT() 는 명령문 기반의 복제는 제대로 작동하지 않습니다.

  • VALUES( col_name )

    INSERT ... ON DUPLICATE KEY UPDATE 문은 UPDATE 절의 VALUES( col_name ) 함수를 사용하면 문 INSERT 부분에서 컬럼 값을 참조 할 수 있습니다. 즉, UPDATE 절 VALUES( col_name ) 는 삽입되는 col_name 값을 참조하기 위해 중복 키 충돌이 발생하지 않습니다. 이 함수는 여러 행을 삽입 할 때 특히 유용합니다. VALUES() 함수는 INSERT 문 ON DUPLICATE KEY UPDATE 절에서만 유효하며, 그 이외의 경우는 NULL 를 돌려줍니다. 섹션 13.2.5.3 "INSERT ... ON DUPLICATE KEY UPDATE 구문" 을 참조하십시오.

     mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
         -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
    


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