• 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 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 1. MySQL Connector / ODBC
    2. MySQL Connector/Net
    3. MySQL Connector/J
    4. MySQL Connector/C++
    5. MySQL Connector/C
    6. MySQL Connector/Python
    7. libmysqld, the Embedded MySQL Server Library
    8. MySQL C API
    1. MySQL C API 구현
    2. MySQL Server MySQL Connector/C 동시 설치
    3. C API 클라이언트 프로그램 예제
    4. Building and Running C API Client Programs
    5. C API Data 구조
    6. C API Function 개요
    7. C API Function 설명
    8. C API Prepared Statements
    9. C API Prepared Statement Data 구조
    10. C API Prepared Statement 함수 개요
    11. C API Prepared Statement 함수 설명
    12. C API Threaded 함수 설명
    13. C API 임베디드 서버 함수 설명
    14. C API Client Plugin 함수
    15. C API를 사용하는 경우 일반적인 질문과 문제
    16. 자동 재 연결 동작 제어
    17. 여러 명령문 실행 C API 지원
    18. C API Prepared Statement 문제
    19. C API Prepared Statement date 및 time 값 처리
    20. C API의 Prepared CALL Statements 지원
    9. MySQL PHP API
    10. MySQL Perl API
    11. MySQL Python API
    12. MySQL Ruby APIs
    13. MySQL Tcl API
    14. MySQL Eiffel Wrapper
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

23.8.5 C API Data 구조

이 섹션에서는 준비된 문에 사용되는 것 이외의 C API 데이터 구조에 대해 설명합니다. 후자에 대한 자세한 내용은 섹션 23.8.9 "C API 준비된 문 데이터 구조" 를 참조하십시오.

  • MYSQL

    이 구조는 하나의 데이터베이스 연결 핸들을 나타냅니다. 그것은 거의 모든 MySQL 함수에 사용됩니다. MYSQL 구조의 사본을 만들려고하지 마십시오. 그와 같은 자료를 사용할 수 보장 할 수 없습니다.

  • MYSQL_RES

    이 구조는 행 ( SELECT , SHOW , DESCRIBE , EXPLAIN )을 반환하는 쿼리의 결과를 나타냅니다. 쿼리에서 반환되는 정보는이 섹션의 나머지 부분에서 결과 세트라고합니다.

  • MYSQL_ROW

    이것은 1 행의 데이터 형식이 안전한 표현입니다. 그것은 현재 계산되는 바이트 문자열의 배열로 구현되어 있습니다. (필드 값에 바이너리 데이터가 포함되어있을 가능성이있는 경우, 내부에서 그 값에 NULL 바이트가 저장 될 가능성이 있기 때문에 이들을 NULL로 끝나는 문자열로 취급 할 수 없습니다.) 라인 mysql_fetch_row() 를 호출하여 가져옵니다.

  • MYSQL_FIELD

    이 구조는 메타 데이터 (필드의 이름, 형태, 크기 등의 필드에 대한 정보)가 저장됩니다. 회원 정보는이 섹션의 나머지 분에 자세히 설명되어 있습니다. mysql_fetch_field() 를 반복 호출하여 각 필드에 대한 MYSQL_FIELD 구조를 얻을 수 있습니다. 필드 값은이 구조에 포함되지 않습니다. 그들은 MYSQL_ROW 구조에 포함됩니다.

  • MYSQL_FIELD_OFFSET

    이것은 MySQL 필드 목록에 오프셋 타입 세이프 표현입니다. ( mysql_field_seek() 에서 사용됩니다.) 오프셋은 은행의 제로로부터 시작 필드 번호입니다.

  • my_ulonglong

    행수와 mysql_affected_rows() , mysql_num_rows() 및 mysql_insert_id() 에 사용되는 형태. 이 형식은 0 에서 1.84e19 까지의 범위를 제공합니다.

    일부 시스템에서는 형태 my_ulonglong 값을 출력하려고해도 작동하지 않습니다. 이러한 값을 출력하려면 그것을 unsigned long 으로 변환하여 %lu 출력 형식을 사용합니다. 예 :

    printf ("Number of rows: %lu\n",
            (unsigned long) mysql_num_rows(result));
    
  • my_bool

    true (제로 이외) 또는 false (제로)의 값 boolean.

MYSQL_FIELD 구조는 다음 목록에 설명하는 멤버가 포함됩니다. 이 정의는 SELECT 문에 의해 생성되는 등 주로 결과 세트의 컬럼에 적용합니다. MySQL 5.6에서 MYSQL_FIELD 구조는 준비된 CALL 문을 사용하여 실행 된 저장 프로 시저에서 반환 된 OUT 및 INOUT 매개 변수의 메타 데이터를 제공하는 데 사용됩니다. 이러한 매개 변수는 구조 멤버 중 일부는 컬럼 값의 의미와 다른 의미를 갖습니다.

  • char * name

    NULL로 끝나는 문자열로 필드의 이름입니다. 필드에 AS 절로 별칭이 부여 된 경우, name 값은 별칭입니다. 프로 시저 매개 변수의 경우, 매개 변수 이름.

  • char * org_name

    NULL로 끝나는 문자열로 필드의 이름입니다. 별칭은 무시됩니다. 식의 경우, 값은 빈 문자열입니다. 프로 시저 매개 변수의 경우, 매개 변수 이름.

  • char * table

    이 필드가 계산되는 필드가 아닌 경우, 그것을 저장하는 테이블의 이름입니다. 계산 필드의 경우, table 값은 빈 문자열입니다. 열이보기에서 선택되는 경우, table 은 그 뷰를 지정합니다. 테이블 또는 뷰에 AS 절에서 별명이 부여 된 경우 table 값은 별칭입니다. UNION 의 경우, 값은 빈 문자열입니다. 프로 시저 매개 변수의 경우 프로 시저 이름.

  • char * org_table

    NULL로 끝나는 문자열로 테이블의 이름. 별칭은 무시됩니다. 열이보기에서 선택되는 경우 org_table 는 뷰를 지정합니다. UNION 의 경우, 값은 빈 문자열입니다. 프로 시저 매개 변수의 경우 프로 시저 이름.

  • char * db

    NULL로 끝나는 문자열로 필드를 가져올 데이터베이스의 이름. 필드가 계산 필드이면 db 는 빈 문자열입니다. UNION 의 경우, 값은 빈 문자열입니다. 프로 시저 매개 변수의 경우 프로 시저를 포함하는 데이터베이스의 이름입니다.

  • char * catalog

    카탈로그 명. 이 값은 항상 "def" 입니다.

  • char * def

    NULL로 끝나는 문자열로이 필드의 기본값. 이것은 mysql_list_fields() 를 사용하는 경우에만 설정합니다.

  • unsigned long length

    필드의 폭. 이것은 바이트 단위로 표시 길이에 대응합니다.

    서버는 결과 세트를 생성하기 전에 length 값을 결정하기 위해이 결과 집합에 대한 쿼리에 의해 생성되는 실제 값을 미리 알 수없고, 결과 열 수있는 최대 값을 저장할 수있는, 데이터 형에 필요한 최소 길이입니다.

  • unsigned long max_length

    결과 세트의 필드의 최대폭 (결과 세트에있는 실제 행의 최대 길이 필드 값의 바이트 단위 길이). mysql_store_result() 또는 mysql_list_fields() 를 사용하는 경우 여기에는 필드의 최대 길이가 포함됩니다. mysql_use_result() 를 사용하는 경우이 변수 값은 0입니다.

    max_length 값은 결과 집합의 값의 문자열 표현의 길이입니다. 예를 들어, FLOAT 컬럼을 검색하고 '최대 폭 "값이 -12.345 인 경우 max_length 7 ( '-12.345' 의 길이)입니다.

    준비된 문을 사용하는 경우 바이너리 프로토콜에서는 값의 길이가 결과 집합의 값의 형태에 따라서 다르기 때문에 max_length 는 기본적으로 설정되지 않습니다. ( 섹션 23.8.9 "C API 준비된 문 데이터 구조" 를 참조하십시오.) 어쨌든 max_length 값이 필요한 경우 mysql_stmt_attr_set() 에서 STMT_ATTR_UPDATE_MAX_LENGTH 옵션을 사용하면 mysql_stmt_store_result() 를 호출 할 때 그 길이 이 설정됩니다. ( 섹션 23.8.11.3 "mysql_stmt_attr_set ()" 및 섹션 23.8.11.28 "mysql_stmt_store_result ()" 를 참조하십시오.)

  • unsigned int name_length

    name 의 길이.

  • unsigned int org_name_length

    org_name 의 길이.

  • unsigned int table_length

    table 의 길이.

  • unsigned int org_table_length

    org_table 의 길이.

  • unsigned int db_length

    db 의 길이.

  • unsigned int catalog_length

    catalog 의 길이.

  • unsigned int def_length

    def 길이.

  • unsigned int flags

    필드를 설명하는 비트 플래그. flags 값은 다음 표에 나열된 제로 이상의 비트 세트를 가질 수 있습니다.

    플래그 값 플래그 설명
    NOT_NULL_FLAG 필드는 NULL 이 될 수 없습니다
    PRI_KEY_FLAG 필드는 기본 키의 일부입니다
    UNIQUE_KEY_FLAG 필드는 고유 키의 일부입니다
    MULTIPLE_KEY_FLAG 필드는 고유하지 않은 키의 일부입니다
    UNSIGNED_FLAG 필드는 UNSIGNED 특성을가집니다
    ZEROFILL_FLAG 필드는 ZEROFILL 속성을가집니다
    BINARY_FLAG 필드는 BINARY 속성을가집니다
    AUTO_INCREMENT_FLAG 필드는 AUTO_INCREMENT 속성을가집니다
    ENUM_FLAG 필드는 ENUM 입니다
    SET_FLAG 필드는 SET 입니다
    BLOB_FLAG 필드는 BLOB 또는 TEXT (비추천)입니다
    TIMESTAMP_FLAG 필드는 TIMESTAMP (비추천)입니다
    NUM_FLAG 필드는 숫자입니다. 표 다음의 補注를 참조하십시오
    NO_DEFAULT_VALUE_FLAG 필드에는 기본값이 없습니다. 표 다음의 補注를 참조하십시오

    이러한 플래그의 일부는 데이터 형 정보를 제공 후술하는 field->type 회원 MYSQL_TYPE_ xxx 값으로 대체하거나 함께 사용됩니다.

    • BLOB 또는 TIMESTAMP 값을 확인하려면 type 이 MYSQL_TYPE_BLOB 인지, 또는 MYSQL_TYPE_TIMESTAMP 인지 확인합니다. ( BLOB_FLAG 및 TIMESTAMP_FLAG 플래그는 필요 없습니다.)

    • ENUM 및 SET 값은 문자열로 반환됩니다. 이러한 내용은 type 값이 MYSQL_TYPE_STRING 에서 flags 값에 ENUM_FLAG 또는 SET_FLAG 플래그가 설정되어 있는지 확인합니다.

    NUM_FLAG 는 컬럼이 숫자임을 나타냅니다. 여기에는 MYSQL_TYPE_DECIMAL , MYSQL_TYPE_NEWDECIMAL , MYSQL_TYPE_TINY , MYSQL_TYPE_SHORT , MYSQL_TYPE_LONG , MYSQL_TYPE_FLOAT , MYSQL_TYPE_DOUBLE , MYSQL_TYPE_NULL , MYSQL_TYPE_LONGLONG , MYSQL_TYPE_INT24 및 MYSQL_TYPE_YEAR 유형의 컬럼이 포함됩니다.

    NO_DEFAULT_VALUE_FLAG 은 열 정의에 DEFAULT 절이 없음을 보여줍니다. 이것은 NULL 컬럼 (그러한 컬럼은 NULL 의 기본이 있기 위하여) 또는 AUTO_INCREMENT 컬럼 (이것은 암시 적 기본값을가집니다)에는 적용되지 않습니다.

    다음 예제 flags 값의 일반적인 사용을 보여줍니다.

    if (field->flags & NOT_NULL_FLAG)
        printf("Field cannot be null\n");
    

    다음 표에 나와있는 편리한 매크로를 사용하여 flags 값 boolean 상태를 확인할 수 있습니다.

    플래그의 상태 설명
    IS_NOT_NULL(flags) 이 필드가 NOT NULL 로 정의되어있는 경우는 true
    IS_PRI_KEY(flags) 이 필드가 기본 키인 경우는 true
    IS_BLOB(flags) 이 필드가 BLOB 또는 TEXT (비추천 대신에 field->type 을 테스트합니다)의 경우는 true
  • unsigned int decimals

    숫자 필드의 소수점 이하 자릿수 및 (MySQL 5.6.4 이후) 시간 필드의 소수 초 정밀도.

  • unsigned int charsetnr

    필드의 문자 집합 / 정렬 순서 쌍을 나타내는 ID 번호.

    일반적으로 결과 세트의 문자 값은 character_set_results 시스템 변수에 표시된 문자 세트로 변환됩니다. 이 경우 charsetnr 는 그 변수에 표시된 문자 집합을 지원합니다. 문자 집합 변환은 character_set_results 를 NULL 로 설정하여 지원할 수 있습니다. 이 경우 charsetnr 는 원래 테이블 컬럼 또는 표현식의 문자 집합을 지원합니다. 섹션 10.1.4 "연결 문자 집합 및 정렬 순서" 를 참조하십시오.

    문자열 데이터 형식의 바이너리 및 비 바이너리 데이터를 구분하려면 charsetnr 값이 63인지 여부를 확인합니다. 이 경우 문자 세트는 binary , 이것은 비 바이너리 데이터가 아닌 바이너리를 나타냅니다. 이로 인해 BINARY 와 CHAR , VARBINARY 과 VARCHAR 및 BLOB 형과 TEXT 형을 구분할 수 있습니다.

    charsetnr 값은 SHOW COLLATION 문 Id 컬럼 또는 INFORMATION_SCHEMA COLLATIONS 테이블의 ID 컬럼에 표시된 값과 동일합니다. 그 정보 소스를 사용하여 특정 charsetnr 값이 어떤 문자 셋과 콜레 션을 나타내고 있는지를 확인할 수 있습니다.

    mysql> SHOW COLLATION WHERE Id = 63;
    +-----------+---------+----+---------+----------+---------+
    | Collation | Charset | Id | Default | Compiled | Sortlen |
    +-----------+---------+----+---------+----------+---------+
    | binary    | binary  | 63 | Yes     | Yes      |       1 |
    +-----------+---------+----+---------+----------+---------+
    
    mysql> SELECT COLLATION_NAME, CHARACTER_SET_NAME
        -> FROM INFORMATION_SCHEMA.COLLATIONS WHERE ID = 33;
    +-----------------+--------------------+
    | COLLATION_NAME  | CHARACTER_SET_NAME |
    +-----------------+--------------------+
    | utf8_general_ci | utf8               |
    +-----------------+--------------------+
    
  • enum enum_field_types type

    필드의 형태. type 값은 다음 표에 나열된 MYSQL_TYPE_ 기호 중 하나입니다.

    형태의 값 형태의 설명
    MYSQL_TYPE_TINY TINYINT 필드
    MYSQL_TYPE_SHORT SMALLINT 필드
    MYSQL_TYPE_LONG INTEGER 필드
    MYSQL_TYPE_INT24 MEDIUMINT 필드
    MYSQL_TYPE_LONGLONG BIGINT 필드
    MYSQL_TYPE_DECIMAL DECIMAL 또는 NUMERIC 필드
    MYSQL_TYPE_NEWDECIMAL 정밀 계산 DECIMAL 또는 NUMERIC
    MYSQL_TYPE_FLOAT FLOAT 필드
    MYSQL_TYPE_DOUBLE DOUBLE 또는 REAL 필드
    MYSQL_TYPE_BIT BIT 필드
    MYSQL_TYPE_TIMESTAMP TIMESTAMP 필드
    MYSQL_TYPE_DATE DATE 필드
    MYSQL_TYPE_TIME TIME 필드
    MYSQL_TYPE_DATETIME DATETIME 필드
    MYSQL_TYPE_YEAR YEAR 필드
    MYSQL_TYPE_STRING CHAR 또는 BINARY 필드
    MYSQL_TYPE_VAR_STRING VARCHAR 또는 VARBINARY 필드
    MYSQL_TYPE_BLOB BLOB 또는 TEXT 필드 ( max_length 를 사용하여 최대 길이를 결정합니다)
    MYSQL_TYPE_SET SET 필드
    MYSQL_TYPE_ENUM ENUM 필드
    MYSQL_TYPE_GEOMETRY 공간 필드
    MYSQL_TYPE_NULL NULL 필드

    MYSQL_TYPE_TIME2 , MYSQL_TYPE_DATETIME2 및 MYSQL_TYPE_TIMESTAMP2 타입 코드는 서버 측에서만 사용됩니다. 클라이언트는 MYSQL_TYPE_TIME , MYSQL_TYPE_DATETIME 및 MYSQL_TYPE_TIMESTAMP 코드를 참조합니다.

    IS_NUM() 매크로를 사용하여 필드 숫자를 가질 지 어떨지를 테스트 할 수 있습니다. type 값을 IS_NUM() 에 전달하면 그것은 필드가 숫자이면 TRUE로 평가합니다.

    if (IS_NUM(field->type))
        printf("Field is numeric\n");
    

    ENUM 및 SET 값은 문자열로 반환됩니다. 이러한 내용은 type 값이 MYSQL_TYPE_STRING 에서 flags 값에 ENUM_FLAG 또는 SET_FLAG 플래그가 설정되어 있는지 확인합니다.


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