2011. 7. 10. 23:38

함수

설명

mysql_affected_rows()

마지막 UPDATE, DELETE, INSERT 쿼리에 의해 변경된 행의 수를 리턴.

mysql_autocommit()

자동수행(autocommit) 모드 on/off를 전환한다.

mysql_change_user()

공개된 커넥션에서 사용자와 데이터베이스 변경.

mysql_close()

서버 연결을 종료.

mysql_commit()

트랜잭션을 수행.

mysql_connect()

MySQL 서버를 연결.(이 함수는 무시됨; 대신 mysql_real_connect() 사용)

mysql_create_db()

데이터베이스를 생성.(이 함수는 무시됨; 대신에 SQL 문CREATE DATABASE 을 사용)

mysql_data_seek()

쿼리 결과 세트에서 임의의 로우 숫자를 찾는다.

mysql_debug()

주어진 문자열로 DBUG_PUSH 한다.

mysql_drop_db()

데이터베이스를 드롭.(이 함수는 무시됨; 대신에SQL문  DROP DATABASE 을 사용)

mysql_dump_debug_info()

서버가 로그에 디버그 정보를 쓰게 만든다.

mysql_eof()

결과 셋의 마지막 로우가 읽혀지는지 여부를 결정한다.

(이 기능은 무시된다; mysql_errno() 또는 mysql_error() 함수가 대신 사용)

mysql_errno()

가장 최근에 호출된 MySQL 함수의 에러 숫자를 리턴한다.

mysql_error()

가장 최근에 호출된 MySQL 함수의 에러 메시지를 리턴한다.

mysql_escape_string()

SQL 문에 사용하는 경우 문자열에서 스페셜 문자(캐릭터)를 중단한다.

mysql_fetch_field()

다음 테이블 필드의 타입을 리턴한다.

mysql_fetch_field_direct()

필드 숫자가 주어진 테이블 필드의 타입을 리턴한다.

mysql_fetch_fields()

모든 필드 구조의 배열을 리턴한다.

mysql_fetch_lengths()

현재 로우에서 모든 컬럼의 길이를 리턴한다.

mysql_fetch_row()

결과 셋에서 그 다음 로우를 호출한다.

mysql_field_seek()

컬럼 커서를 지정된 컬럼에 넣는다.

mysql_field_count()

가장 최근 명령문의 경우 결과 컬럼의 수를 리턴한다.

mysql_field_tell()

마지막 mysql_fetch_field()함수에 사용된 필드 커서의 포지션을 리턴.

mysql_free_result()

결과 셋이 사용한 메모리를 제거한다.

mysql_get_client_info()

문자열로써 클라이언트 버전 정보를 리턴한다.

mysql_get_client_version()

정수로써 클라이언트 버전 정보를 리턴한다.

mysql_get_host_info()

커넥션을 설명한 문자열을 리턴한다.

mysql_get_server_version()

정수로써 서버의 버전 숫자를 리턴한다.

mysql_get_proto_info()

연결에 사용된 프로토콜 버전을 리턴한다.

mysql_get_server_info()

서버 버전 숫자를 리턴한다.

mysql_info()

가장 최근에 실행된 쿼리에 관한 정보를 리턴한다.

mysql_init()

MYSQL 구조를 획득하거나 초기화하다.

mysql_insert_id()

AUTO_INCREMENT 컬럼에 이전 쿼리에 의해 발생한ID를 리턴한다.

mysql_kill()

주어진 쓰레드를 끄다(죽이다).

mysql_library_end()

MySQL C API 라이브러리는 끝내다.

mysql_library_init()

MySQL C API 라이브러리를 초기화하다.

mysql_list_dbs()

간단한 수식에 맞는 데이터베이스 이름을 리턴한다.

mysql_list_fields()

간단한 수식에 맞는 필드 이름을 리턴한다.

mysql_list_processes()

현재 서버 쓰레드의 목록을 리턴한다.

mysql_list_tables()

간단한 수식에 맞는 테이블 이름을 리턴한다.

mysql_more_results()

더 많은 결과가 있는지 체크한다.

mysql_next_result()

멀티-명령문 실행에서 그 다음 결과를 리턴한다/초기화한다.

mysql_num_fields()

결과 셋에서 컬럼의 숫자를 리턴한다.

mysql_num_rows()

결과 셋에서 로우의 숫자를 리턴한다.

mysql_options()

mysql_connect()함수의 경우 연결 옵션을 설정한다

mysql_ping()

필요에 따라 서버로의 연결이 되어 있는지 다시 연결해야 할지 체크한다.

mysql_query()

null로 종결된 문자열로 지정된 SQL 쿼리를 실행한다.

mysql_real_connect()

MySQL 서버로 연결한다.

mysql_real_escape_string()

현재 연결중인 캐릭터 셋을 고려하여 SQL 문에서 사용시 문자열에서 특수 문자를 중단.

mysql_real_query()

계산에 포함된 문자열로 지정된 SQL 쿼리를 실행한다.

mysql_refresh()

테이블과 캐시를 쏟아내거나(flush) 재설정한다.

mysql_reload()

서버가 grant 테이블을 다시 로드 하도록 전달한다.

mysql_rollback()

트랜잭션 롤백.

mysql_row_seek()

mysql_row_tell()함수로부터 리턴된 값을 사용하는 결과 셋에서 로우 오프셋을 찾음

mysql_row_tell()

로우 커서 위치를 리턴한다.

mysql_select_db()

데이터베이스를 선택한다.

mysql_server_end()

임베디드 서버 라이브러리를 종결한다.

mysql_server_init()

임베디드 서버 라이브러리를 초기화한다.

mysql_set_local_infile_default()

디폴트 값으로LOAD DATA LOCAL INFILE 조정기 콜백(callback)을 설정.

mysql_set_local_infile_handler()

어플리케이션을 위한LOAD DATA LOCAL INFILE 조정기 콜백을 인스톨함

mysql_set_server_option()

연결시 옵션을 설정한다(lmulti-statements처럼).

mysql_sqlstate()

최근 에러의 경우, SQLSTATE 에러코드를 리턴한다.

mysql_shutdown()

데이터베이스 서버를 셧다운한다.

mysql_stat()

문자열로 서버의 상태를 리턴한다.

mysql_store_result()

클라이언트로 완벽한 결과 셋을 검색한다.

mysql_thread_id()

현재 쓰레드 ID를 리턴한다.

mysql_thread_safe()

클라이언트가 쓰레드에 안전하게 컴파일 되었다면 1을 리턴한다.

mysql_use_result()

로우 별로 결과 셋 검색을 시작한다.

mysql_warning_count()

이전 SQL문의 경우 경고 카운트를 리턴한다.

   

[ 어플리케이션은 일반적인 아우트라인을 사용 ]

mysql_library_init()를 호출함으로써 MySQL 라이브러리를 초기화. 

(레귤러 클라이언트, 임베디드 서버 어플리케이션 구출할 때 사용)

mysql_init() 를 호출하여 연결 핸들러를 초기화하고 mysql_real_connect()를 호출하여 서버에 연결.

③ SQL 명령문을 실행.

mysql_close()함수를 호출하여 MySQL 서버로의 연결을 종료.

mysql_library_end()함수를 호출하여 MySQL 라이브러리의 사용을 종료.

 

mysql_library_init() 과 mysql_library_end() 함수의 호출 목적은 MySQL 라이브러리의 적당한 초기화와 최종화를 제공. 

클라이언트 라이브러리로 링크되는 어플리케이션의 경우, 향상된 메모리 매니지먼트를 제공한다. 

mysql_library_end()함수를 호출하지 않는다면, 메모리 블록은 할당된 채로 남는다.

(이것은 어플리케이션에 의해 사용된 메머리의 총량을 증가시키지 않지만 몇몇 메모리 리크 검전기가 그것에 대해 알려줄 것이다.) 

임베디드 서버로 링크되는 어플리케이션의 경우, 이런 호출들은 서버를 시작하고 종료한다.

   

mysql_library_init() 와 mysql_library_end() 함수는 MySQL 5.0.3 버전부터 적용된다. 

이것들은 실제로 mysql_server_init() 와 mysql_server_end()함수에 상응하는 #define 상징이다. 

그러나 어플리케이션이 mysqlclient 또는 mysqld 라이브러리를 사용하든 말든 간에 

MySQL 라이브러리의 사용을 시작하고 종료할 때 호출된다는 것을 이름들이 더 명확히 나타낸다.

MySQL 기존 버전의 경우, 대신에 mysql_server_init() 과 mysql_server_end() 함수를 호출할 수 있다.

   

non-멀티-쓰레드 환경에서, mysql_library_init() 로 호출은 생략된다.

mysql_init() 함수가 필요에 따라 그것을 불러오기 때문이다. 

그러나 멀티-쓰레드 환경에서 mysql_init() 함수가mysql_library_init() 함수를 불러온다면, 경쟁조건(race condition)이 가능하다

:mysql_library_init() 함수는 쓰레드에 안전하지 않아서 다른 클라이언트 라이브러리 호출보다 먼저 호출되어야 한다.

   

서버에 연결하기 위해서, 연결 조정기를 초기화하는 mysql_init() 함수를 호출하라. 

그리고 나서 그 조정기로 mysql_real_connect() 함수를 호출하라 

(호스트이름, 사용자이름, 패스워드와 같은 다른 정보를 함께). 

연결 상태에서mysql_real_connect() 함수는 reconnect 플래그(MYSQL 구조의 부분)를 5.0.3 이전 API의 버전에서는 1 로, 

또는 새로운 버전에서는 0 으로 값으로 설정한다. 이 플래그에서 값은 연결이 끊겨서 명령문이 실행되지 않는다면, 

포기하기 전에 서버로 다시 연결을 시도하려는 것을  나타낸다.

MySQL 5.0.3버전에서부터 재 연결 작동을 컨트롤하기 위해mysql_options() 함수로  MYSQL_OPT_RECONNECT 옵션을 사용할 수 있다. 

연결해서 작업을 마친 후, 그것을 종결하기 위해 mysql_close() 함수를 호출하라.

연결 중일 때, 클라이언트는 SQL문을 mysql_query() 또는 mysql_real_query(). 함수를 사용하는 서버로 전달한다.

mysql_query() 함수는 쿼리가 null-종결 문자열로 지정되기를 기대하는 반면,

mysql_real_query() 함수는 계산에 포함된 문자열을 기대한다는 것이 두 함수의 다른 점이다. 

만약 문자열이 바이너리 데이터(null 바이트를 포함한)를 포함하고 있다면, mysql_real_query()함수를 사용해야 하다.

   

각 non-SELECT 쿼리의 경우(예를 들어, INSERTUPDATEDELETE), mysql_affected_rows() 함수를 호출하여 얼마나 많은 로우들이 변경되었는지 알 수 있다.

   

SELECT 쿼리들의 경우, 사용자는 결과 세트로써 선택된 로우들을 검색한다. (몇몇 문은 로우들을 리턴하는 SELECT와 같다는 것을 명심하라. 이것은 SHOWDESCRIBE, 그리고 EXPLAIN를 포함하고 있다. 이것들은 SELECT 문과 같은 방식으로 처리된다.)

   

클라이언트가 결과 셋에 접근하는 2가지 방법이 있다. 하나는 mysql_store_result() 함수를 호출하여 한번에 전체 결과 세트를 검색하는 것이다. 이 함수는 쿼리가 리턴한 모든 로우들을 서버로부터 얻어 클라이언트에 그것을 저장한다. 두 번째 방법은 mysql_use_result() 함수를 호출하여 클라이언트가 로우별로 결과 세트 검색을 초기화하는 것이다. 이 함수는 검색을 초기화하지만 실제로 서버로부터 어떤 로우도 획득하지 못한다.

   

두 경우에서, mysql_fetch_row() 함수를 호출함으로써 로우에 접근할 수 있다.mysql_store_result() 함수를 가지고, mysql_fetch_row() 함수는 서버에서 이전에 명령을 꺼낸 로우들에 접근하다.

   

mysql_use_result() 함수를 가지고,  mysql_fetch_row() 함수는 실제로 서버로부터 로우를 검색한다. 각 로우에 있는 데이터 크기에 대한 정보는 mysql_fetch_lengths() 함수를 호출하여 이용할 수 있다.

   

결과 세트를 마친 후, 그것에 이용된 메모리를 제거하기 위해 mysql_free_result() 함수를 호출한다.

두 가지 검색 매커니즘은 상호 보완적이다. 클라이언트 프로그램은 요구에 가장 알맞은 접근을 선택한다.

실제로 클라이언트는 mysql_store_result() 함수를 통상적으로 쓰는 경향이 있다.

   

mysql_store_result() 함수의 장점은 로우들이 모두 클라이언트로 오기 때문에 사용자가 순차적으로 로우에 접근할 수 있고, 결과 세트 내에서 현재 로우 위치를 변경하기 위해 mysql_data_seek()또는 mysql_row_seek() 함수를 이용하여 앞뒤로 움직일 수 있다는 것이다. 그리고mysql_num_rows()함수를 호출하여 로우의 양을 알아볼 수 있다. 반면, On mysql_store_result() 함수의 메모리 요구사항은 큰 결과 세트 용으로 매우 높아 메모리가 부족해질 수 있다.

   

mysql_use_result() 함수의 장점은 한번에 하나의 로우씩만 유지하기 때문에(그리고 총 할당량이 적어 mysql_use_result() 함수가 더 빠를 수 있기 때문에) 클라이언트가 결과 세트에서 메모리를 덜 요구한다는 점이다. 단점은 서버를 간섭하는 것을 막기 위해 빨리 각 로우를 처리해야 하고, 결과 세트 내에서 로우들로 무작위로 접근할 수 없으며(로두를 순차적으로 엑세스할 수 있다), 로우를 모두 검색할 때까지 로우의 양을 사용자가 알 수 없다는 점이다. 게다가 사용자가 찾고자 하는 정보를 찾았다는 것을 검색 중에 알아도 모든 로우들을 검색해야만 한다.

   

API는 문이 SELECT 인지 아닌지도 모르고 클라이언트가 명령문에 적절하게 응답할 수 있도록 한다(필요한 로우만 검색). 각 mysql_query() 함수(또는 mysql_real_query()함수) 후에,mysql_store_result()함수를 호출하여 이것을 할 수 있다. 결과 세트가 성공적으로 호출되면, 명령문은 SELECT였고, 사용자는 로우들을 읽을 수 있다. 결과 세트 호출이 실패하면, 결과가 예정대로 되었는지 여부를 결정하기 위해서 mysql_field_count() 함수를 호출하라. 만약mysql_field_count() 함수가 0(zero)를 리턴하면, 문은 데이터를 리턴하지 않았고(INSERT,UPDATEDELETE 등으로 나타남), 리턴할 로우 또한 기대되지 않았다.(그래서 보여줄 데이터가 없다). 만약 mysql_field_count() 함수가 0(zero)이 아니라면, 문은 로우들을 리턴했을 수 있지만, 그러지 않았다. 이것은 문이 실패한 SELECT 였다는 것을 나타낸다. 이것이 어떻게 될 수 있는지 예를 보려면 mysql_field_count() 함수의 설명을 참조하라

   

mysql_store_result() 와 mysql_use_result() 두 함수로 결과 세트를 보완하는 필드에 대한 정보(필드의 숫자, 이름, 타입 등)를 얻을 수 있다. 사용자는 로우 내에서 mysql_fetch_field() 함수를 반복해서 호출하거나 또는 로우 내에서  mysql_fetch_field_direct() 함수를 호출하여 필드 숫자로 필드 정보에 순차적으로 접근할 수 있거나, 현재 필드 커서 위치는 mysql_field_seek()함수를 호출하여 변경할 수 있다. 필드 커서 설정은 다음 mysql_fetch_field() 함수로 호출에 영향을 미친다. 사용자는 mysql_fetch_field() 함수를 호출하여 한번에 필드에 대한 모든 정보를 얻을 수 있다.

   

에러를 발견하고 리포트하는 경우, MySQL은 mysql_errno() 와 mysql_error() 함수로 에러 정보로의 접근을 제공한다. 

이것들은 사용자가 에러가 언제 발생하고 그것이 무엇인지를 결정하도록 함으로써 성공 혹은 실패할 수 있는 가장 최근 호출된 함수에 대한 에러 코드 또는 에러 메시지를 리턴한다.

 

 

원문 : http://www.mysqlkorea.co.kr/sub.html?mcode=manual&scode=01&m_no=21770&cat1=22&cat2=596&cat3=605&lang=k

Posted by devanix