For instance, basically use following code to question some data from database.

Uri uri = Uri.parse("content://com.android.contacts/contacts?address_book_index_extras=true");
        String selection = "LEFT OUTER JOIN (select raw_contact_id, data1 from data where mimetype_id = 5) AS phone_data ON(_id = phone_data.raw_contact_id)"; 
        Cursor c = getContentResolver().query(Contacts.CONTENT_URI, null, selection, null, null);

What i wish to request is following the query method, does database copy its result set to cursor or simply make cursor something similar to a pointer and indicate the very first type of result set and query for additional data whenever we call `moveToNext'
thanks

Yes. It's a readonly copy from the DB.

From Android Designers:

This interface provides random read-write accessibility result set came back with a database query. Cursor implementations aren't needed to become synchronized so code utilizing a Cursor from multiple threads should perform its very own synchronization while using the Cursor.