Mysql ÇÁ·Î±×·¡¹Ö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

mysql ÀÌ À¥¿¡¼­ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â RDBMS ¶ó´Â µ¥´Â ÀǽÉÀÇ ¿©Áö°¡ ¾ø´Â °Í °°´Ù. ÁÖ·Î Apache ¿Í PHP ¿Í ¿¬µ¿Çؼ­ »ç¿ëµÇ¾î Áö´Âµ¥ (ÀÌ 3°¡Áö Á¶ÇÕÀ» APM À̶ó°í ÇÑ´Ù), °£´ÜÇÑ Ä«¿îÅÍ, ¹æ¸í·Ï¿¡¼­ ºÎÅÍ, Á»´õ º¹ÀâÇÑ ¼îÇθô, ½ºÄÉÁì°ü¸®, °Ô½ÃÆÇ, À¥¸ÞÀÏ µî °ÅÀÇ ¾²ÀÌÁö ¾Ê´Â °÷ÀÌ ¾øÀ» Á¤µµÀÌ´Ù.
Mysql ÀÌ PHP ¿Í ÇÔ²² À¥¿¡¼­ »ç¿ëÇÏ´Â°Ô °¡Àå ÀϹÝÀûÀÎ ¿ëµµÀ̱ä ÇÏÁö¸¸, ¸¹Àº °æ¿ì ½Ã½ºÅÛ·¹º§¿¡¼­ Á÷Á¢ ´Ù·ç¾î¾ß Çϴ°æ¿ìµµ »ý±ä´Ù. ÀÌ·¯ÇÑ °æ¿ì¸¦ À§Çؼ­ mysql Àº Perl, Python, C, C++ µî ´Ù¾çÇÑ API¸¦ Á¦°øÇϴµ¥, ¿ì¼± C¸¦ ÀÌ¿ëÇÑ Á¢±Ù¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. (³ªÁß¿¡ ½Ã°£ÀÌ Çã¶ôÇϸé C++ À» ÀÌ¿ëÇÑ mysql Á¢±Ù¿¡ ´ëÇØ¼­µµ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù) ¼³¸í¿¡ µé¾î°¨¿¡ ¾Õ¼­ À̹®´Â ¿©·¯ºÐÀÌ SQL°ú RDBMS¿¡ ´ëÇÑ °³³ä°ú, mysql ÀÇ ¼³Ä¡ ¹× ¿î¿µ¿¡ °ü·ÃµÈ ±âº» »çÇ×Àº ¾Ë°í ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ¾²¿©Á³À¸¸ç, ¼³¸íÀ» À§ÇØ ¾²ÀÎ ÄÚµåµéÀº ±â´É°ú È¿À²¼º¿¡ ¿°µÎ¸¦ µÐ Äڵ尡 ¾Æ´Ñ ¼ø¼ö ½ºÅ͵ð¿ë (µ¹¾Æ¸¸°¡´Â)ÄÚµå ÀÓÀ» °øÁöÇÕ´Ï´Ù. mysql°ú SQL ¿¡ ´ëÇÑ »ó¼¼ÇÑ ³»¿ëÀº °ü·Ã ¼­ÀûÀ̳ª database.sarang.netÀ» Âü°íÇϼ¼¿ä.

Äڵ带 Å×½ºÆ® Çϱâ Àü¿¡ ¿ì¼± ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ mysql client °¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®ÀÎÀ» ÇØº¸¹Ù¶õ´Ù. ÇÊÀÚÀÇ °æ¿ì mysql-3.23.46 ÀÌ ¼³Ä¡µÇ¾î ÀÖÀ¸¸ç, ÀÎŬ·çµå ÆÄÀÏÀº /usr/local/include/mysql ¿¡ ¶óÀ̺귯¸® ÆÄÀÏÀº /usr/local/lib/mysql ¼³Ä¡µÇ¾î ÀÖ´Ù. ¿äÁò ¿Ø¸¸ÇÑ Linux ¹èÆ÷ÆÇÀº ±âº»À¸·Î mysql ÀÌ ¼³Ä¡µÇ¾î ÀÖÀ¸´Ï, À§ÀÇ ÀÎŬ·çµå¿Í, ¶óÀ̺귯¸® °æ·Î°¡ ¾îµð¿¡ ÀÖ´ÂÁö È®Àθ¸ ÇÏ¸é µÉ°ÍÀÌ´Ù.
±×·³ Å×½ºÆ®¸¦ À§ÇÑ Å×À̺íÀ» ¸¸µé°í Å×ÀÌºí¿¡ °£´ÜÇÑ ³»¿ëÀ» ÀÔ·ÂÇØº¸ÀÚ, Å×À̺íÀÌ À§Ä¡ÇÒ DB ´Â test À̰í Å×À̺íÀÇ À̸§Àº address ÀÌ´Ù.
CREATE TABLE address (
  name varchar(25) default NULL,
  address text,
  tel varchar(25) default NULL
);
ÀÌ Å×À̺íÀº °£´ÜÇÑ ÁÖ¼Ò·ÏÀε¥, "À̸§", "ÁÖ¼Ò", "ÀüÈ­¹øÈ£" ¸¦ ÀúÀåÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù.
ÀÌÁ¦ Å×½ºÆ®¸¦ À§Çؼ­ 2°³ Á¤µµÀÇ data ¸¦ ÀÔ·ÂÇϵµ·Ï ÇÏÀÚ.
INSERT INTO address VALUES ('È«±æµ¿','°æ±âµµ ¿¬Ãµ ¿¬Ãµ¾ÆÆÄÆ®','02-500-5000');
INSERT INTO address VALUES ('¾Æ¹«°³','±¤ÁÖ±¤¿ª½Ã ¼­±¸ Çö´ë ¾ÆÆÄÆ®','015-000-1111');
¿ì¸®°¡ ¸¸µé ÇÁ·Î±×·¥À» Å×½ºÆ® Çϱâ À§ÇÑ È¯°æÀÌ °®Ãß¾î Á³´Ù¸é, ÀÌÁ¦ º»°ÝÀûÀ¸·Î Äڵ带 ÀÛ¼ºÇØ º¸µµ·Ï ÇϰڴÙ.

¿¹Á¦ : mysql_test.c
#include <mysql.h>
#include <string.h>
#include <stdio.h>


#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASS "gkwlak"
#define DB_NAME "test"
#define CHOP(x) x[strlen(x) - 1] = ' '
    
int main(void)
{
    MYSQL       *connection=NULL, conn;
    MYSQL_RES   *sql_result;
    MYSQL_ROW   sql_row;
    int       query_stat; 

    char name[12];
    char address[80];
    char tel[12];
    char query[255];
    
    mysql_init(&conn);

    connection = mysql_real_connect(&conn, DB_HOST,
                                    DB_USER, DB_PASS,
                                    DB_NAME, 3306,
                                    (char *)NULL, 0);

    if (connection == NULL)
    {
        fprintf(stderr, "Mysql connection error : %s", mysql_error(&conn));
        return 1;
    }

    query_stat = mysql_query(connection, "select * from address");
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return 1;
    }
    
    sql_result = mysql_store_result(connection);
    
    printf("%+11s   %-30s   %-10s", "À̸§", "ÁÖ¼Ò", "ÀüÈ­¹øÈ£");
    while ( (sql_row = mysql_fetch_row(sql_result)) != NULL )
    {
        printf("%+11s   %-30s   %-10s", sql_row[0], sql_row[1], sql_row[2]);
    }

    mysql_free_result(sql_result);

    printf("À̸§ :");
    fgets(name, 12, stdin);
    CHOP(name);

    printf("ÁÖ¼Ò :");
    fgets(address, 80, stdin);
    CHOP(address);

    printf("ÀüÈ­ :");
    fgets(tel, 12, stdin);
    CHOP(tel);

    sprintf(query, "insert into address values "
                   "('%s', '%s', '%s')",
                   name, address, tel);

    query_stat = mysql_query(connection, query);
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return 1;
    }

    mysql_close(connection);
}
mysql Àº mysql ¿¬°á, query °á°ú ¹Þ¾Æ¿À±â, °á°ú¹°ÀÇ Row °ªÀ» ÀúÀåµîÀ» À§ÇÑ ¸î°³ÀÇ ±¸Á¶Ã¼°¡ Á¸ÀçÇÑ´Ù.
MYSQL µ¥ÀÌŸ º£À̽º¿¡ ¿¬°áÇßÀ»¶§, ÀÌ ¿¬°áÀ» ´Ù·ç±â À§ÇØ »ç¿ëµÇ´Â ±¸Á¶Ã¼ ÀÌ´Ù
MYSQL_RES (SELECT, SHOW, DESCRIBE, EXPLAIN)µîÀÇ Äõ¸®¸¦ ³»·ÈÀ»¶§ ±× °á°ú¸¦ ´Ù·ç±â À§ÇØ »ç¿ëµÇ´Â ±¸Á¶Ã¼ÀÌ´Ù.
MYSQL_ROW À̰ÍÀº µ¥ÀÌŸÀÇ ÇϳªÀÇ row °ªÀ» °¡¸®Å²´Ù. ¸¸¾à row °ªÀÌ ¾ø´Ù¸é null À» °¡¸£Å°°Ô µÈ´Ù.
MYSQL_FIELD ÀÌ ±¸Á¶Ã¼´Â °¢ ÇʵåÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ¿©±â¿¡´Â ÇʵåÀÇ À̸§, ŸÀÔ, Å©±â µîÀÇ Á¤º¸¸¦ °¡Áö°Ô µÈ´Ù. mysql ¿¡¼­ DESC Äõ¸®¸¦ ³»·ÈÀ»¶§ÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù°í º¸¸éµÈ´Ù.
MYSQL_FIELD_OFFSET mysql ÇÊµå ¸®½ºÆ®ÀÇ À§Ä¡¸¦ °¡Áø´Ù.
ÀÌ ÇÁ·Î±×·¥ÀÌ ÇÏ´Â ÀÏÀº ÃÖÃÊ mysql DB¿¡ ¿¬°áÀ» ÇÑ´ÙÀ½¿¡ query ¸¦ ÅëÇÏ¿© address ÀÇ ³»¿ëÀ» °¡Á®¿Í¼­ È­¸é¿¡ Ãâ·Â½ÃÄÑÁÖ°í. ´ÙÀ½¿¡ »ç¿ëÀÚ ÀÔ·ÂÀ» ¹Þ¾Æ¼­ DB¿¡ ÀúÀåÇϴµ¥±îÁö´Ù. ¾Õ¿¡¼­ ¸»ÇßµíÀÌ, À¯Àú ÀÎÅÍÆäÀ̽º¶óµç°¡ ÇÏ´Â ±â´ÉÀûÀÎ Ãø¸éÀº ÀüÇô ½Å°æ¾²Áö ¾Ê¾Ò´Ù. ÀÌ·¯ÇÑ Ãø¸é¿¡ ´ëÇØ¼­´Â ³ªÁß¿¡ curse °è¿­À» ´Ù·ç¸é¼­ ¿¬±¸ÇÏ°Ô µÉ°ÍÀÌ´Ù. ±×·³ ÀÌÁ¦ºÎÅÍ ¼Ò½º¸¦ ºÐ¼®ÇØ º¸±â·Î ÇϰڴÙ.

mysql_init() ´Â mysql DB¿¡ ¿¬°áÇϱâ Àü¿¡ °¡Àå ¸ÕÀú ½ÇÇàµÇ¸ç, mysql ¿¬°á Áö½ÃÀÚ¸¦ ÃʱâÈ­ ÇÏ´Â ÀÏÀ» ÇÑ´Ù. mysql_init()¸¦ ÀÌ¿ëÇØ¼­ mysql ¿¬°áÀ» ÃʱâÈ­ ÇÏ°í ³ª¼­ mysql_real_connect ¸¦ ÀÌ¿ëÇØ¼­ mysql ¼­¹ö¿¡ ½ÇÁ¦·Î Á¢±ÙÇÏ°Ô µÈ´Ù. ¾Æ±Ô¸ÕÆ®·Î´Â ¿ì¸®°¡ Å͹̳ο¡¼­ mysql À»ÀÌ¿ëÇØ¼­ Á¢±ÙÇϴµ¥ ÇÊ¿äÇÑ, È£½ºÆ®À̸§(DB_HOST), À¯Àú°èÁ¤(DB_USER), °èÁ¤¿¡ ´ëÇÑ ÆÐ½º¿öµå(DB_PASS), Á¢±Ù ÇϰíÀÚ ÇÏ´Â DBÀ̸§(DB_NAME), Æ÷Æ®¹øÈ£(DB_PORT) µîÀÌ µé¾î°£´Ù. ¿¬°á¿¡ ¼º°øÇϸé connection ÇÚµé °ªÀ» ³Ñ°ÜÁÖ°í ½ÇÆÐÇÏ°Ô µÇ¸é NULL °ªÀ» ³Ñ°Ü ÁÖ°Ô µÈ´Ù. ¾î¶² ÀÌÀ¯·Î ½ÇÆÐÇß´ÂÁö ÀÚ¼¼ÇÑ ³»¿ëÀ» ¾Ë¾Æº¸°í ½Í´Ù¸é mysql_error() À» »ç¿ëÇ϶ó.
mysql ¼­¹ö·ÎÀÇ ¿¬°á±îÁö ¼º°øÀûÀ¸·Î ¸¶ÃÆ´Ù¸é, ÀÌÁ¦ query ¸¦ ÀÌ¿ëÇØ¼­ º»°ÝÀûÀÎ ÀÛ¾÷¿¡ µ¹ÀÔÇÑ´Ù. mysql_query ¸¦ ÅëÇØ¼­ ÇÊ¿äÇÑ query¸¦ ½ÇÇà ½Ã۸éµÈ´Ù.
¿ì¸®°¡ º¸Åë »ç¿ëÇÏ´Â Äõ¸®´Â "SELECT, SHOW, DESC, EXPLAIN" °ú °°ÀÌ Äõ¸®¿¡ ±× °á°ú °ª(row)À» ¿äûÇÏ´Â °Í°ú, "INSERT, UPDATE, DELETE" ¿Í °°ÀÌ ±× °á°ú °ªÀÌ ÇÊ¿ä ¾ø´Â ¸í·É¾î·Î ³ª´©¾î º¼¼ö ÀÖ´Ù. row °ªÀ» ¿äûÇÏÁö ¾Ê´Â Äõ¸®¶ó¸é Çʿ䰡 ¾ø°ÚÁö¸¸ row °ªÀ» ¿äûÇÏ´Â Äõ¸®¶ó¸é Äõ¸®ÀÇ °á°ú°ªÀ» ÀúÀåÇØ¾ß ÇÒ°ÍÀÌ´Ù. ÀÌ·²¶§ mysql_store_result()¸¦ ÀÌ¿ëÇØ¼­ Äõ¸®ÀÇ °á°ú°ªÀ» µÇµ¹·Á ¹ÞÀ»¼ö ÀÖ´Ù. mysql_store_result()¸¦ ÅëÇØ¼­ Äõ¸®ÀÇ °á°ú°ªÀ» µÇµ¹·Á ¹Þ¾Ò´Ù¸é, mysql_fetch_row()¸¦ ÀÌ¿ëÇØ¼­ row ´ÜÀ§·Î °á°ú °ªÀ» °¡Á®¿Ã¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â Äõ¸®ÀÇ °á°ú°ª¿¡¼­ ´ÙÀ½ÀÇ row °ªÀ» °¡Á®¿À¸ç, ´õÀÌ»ó °¡Á®¿Ã row °ªÀÌ ¾ø´Ù¸é NULL À» µ¹·ÁÁØ´Ù.
°¡Á®¿Â row ¿¡¼­ÀÇ °¢ÇÊµå °ªÀº row[0] ¿¡¼­ row[mysql_num_fields(result)-1] ¿¡ ÀúÀåµÇ¾î ÀÖÀ¸ ¹Ç·Î, ÇØ´ç row ÀÇ field °ªÀ» ½±°Ô °¡Á®¿Ã¼ö ÀÖ´Ù.
mysql_store_result() À» ÅëÇØ¼­ °¡Á®¿Â Äõ¸®°á°ú°ªÀ» ´õÀÌ»ó »ç¿ëÇÒ Çʿ䰡 ¾ø´Ù¸é, ¸Þ¸ð¸®¸¦ µÇµ¹·ÁÁà¾ß Çϴµ¥, mysql_free_result ¸¦ ÅëÇØ¼­ µÇµ¹·ÁÁÖ¸é µÈ´Ù. mysql_store_result()¸¦ »ç¿ëÇß´Ù¸é ¹Ýµå½Ã mysql_free_result()¸¦ »ç¿ëÇØ¼­ ¸Þ¸ð¸®¸¦ ÇØÁ¦ ½ÃÄÑÁà¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸Þ¸ð¸® ´©¼ö°¡ ¹ß»ýÇÏ°Ô µÈ´Ù.

mysql_free_result()±îÁö ½ÃÄÑÁÖ°í ³ª¼­, fgets() ÇÔ¼ö¸¦ ÅëÇÏ¿©¼­ "À̸§", "ÁÖ¼Ò", "ÀüÈ­¹øÈ£" ¸¦ ÀԷ¹޾Ƽ­, ÀԷ¹ÞÀº Á¤º¸·Î Äõ¸®¸¦ ¸¸µé°í À̸¦ mysql_query()¸¦ ÀÌ¿ëÇØ¼­ DB ¿¡ ÀûÀçÇÏ´Â °ÍÀ» ¸¶Áö¸·À¸·Î ¿¹Á¦ÀÇ ¼³¸íÀÌ ³¡³µ´Ù.
´©°¡ º¸´õ¶óµµ ÀÌÇØÇϱ⠽¬¿î ÄÚµåÀϰÍÀÌ´Ù. ÀÌÁ¦ ÀÌ Äڵ带 ÄÄÆÄÀÏ ÇØ¼­ ½ÇÇà½ÃÄÑ º¸´Â Àϸ¸ ³²¾Ò´Ù.
gcc -o mysql_test mysql_test.c -I/usr/local/include/mysql 
                   -L/usr/local/lib/mysql -lmysqlclient
-I °ú -L ¿É¼ÇÀ» ÀÌ¿ëÇØ¼­ ÄÄÆÄÀÏ ½Ã۴µ¥ ÇÊ¿äÇÑ ÀÎŬ·çµå ÆÄÀϰú ¶óÀ̺귯¸® ÆÄÀÏÀÌ ÀÖ´Â µð·ºÅ丮¸¦ ¸í½ÃÇØÁÖ¸é µÈ´Ù. À§ÀÇ µð·ºÅ丮´Â ÇÊÀÚ°¡ °¡Áø ½Ã½ºÅÛÀÇ °æ¿ìÀ̰í, À§ÀÇ µð·ºÅ丮´Â ½Ã½ºÅÛ¿¡ µû¶ó¼­ ´Ù¸¦¼ö ÀÖÀ¸´Ï ÀÚ½ÅÀÇ ½Ã½ºÅÛ ¼³Á¤¿¡ ¸Âµµ·Ï ¿É¼ÇÀ» ÁÖ°í ÄÄÆÄÀÏ Çϱ⠹ٶõ´Ù.

ÀÌ»ó °£´ÜÇÏ°Ô mysql API ¸¦ »ìÆìº¸¾Ò´Ù. À§ÀÇ ¿¹Á¦´Â ¸¹Àº mysql API ÁßÀÇ ±ØÈ÷ ÀϺκи¸À» ½á¼­ ²ÀÇÊ¿äÇÑ ±â´É¸¸ ±¸ÇöÇѰÍÀÌ´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â www.mysql.org »çÀÌÆ®¸¦ Âü°íÇϱ⠹ٶõ´Ù.
Cache Error
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.