ÃֽŠ°Ô½Ã±Û(DB)
2017.03.11 / 16:35

MySQL¿¡¼­ ¹®ÀÚ¼Â(Character Set)°ú CollationÀÇ Â÷ÀÌ

Mans
Ãßõ ¼ö 308
  1. ¹®ÀÚ¼Â(Character Set)
    • ¸» ±×´ë·Î ƯÁ¤ '¹®ÀÚ(Á» ´õ Á¤È®È÷´Â symbol)'°¡ ÄÄÇ»ÅÍ¿¡ ÀúÀåµÉ ¶§ ¾î¶°ÇÑ 'ÄÚµå'·Î ÀÎÄÚµùµÇ¾î ÀúÀåµÉ °ÍÀÎÁö¿¡ ´ëÇÑ ±ÔÄ¢ÀÌ Á¤ÀǵǾîÀÖ´Â ÁýÇÕÀ» ¸»ÇÔ. (character set is a set of symbols and encodings.
    • ´ëÇ¥ÀûÀÎ °ÍÀ¸·Î´Â ASCII, ÇѱÛÀ» Áö¿øÇÏ´Â EUC-KR, À¯´ÏÄÚµå UTF-8, UTF-16 µîÀÌ ÀÖÀ½.
    • ¹®ÀÚ¼ÂÀº ÀÚ½ÅÀÌ Ã³¸®ÇÒ ¹®ÀÚ ÁýÇÕÀÌ ¾ó¸¶³ª Å«°¡¿¡ µû¶ó ÇϳªÀÇ '¹®ÀÚ'¸¦ ÀúÀåÇϴµ¥ ÇÊ¿äÇÑ ÀúÀå°ø°£ÀÇ Å©±â°¡ ´Þ¶óÁö°Ô µÈ´Ù. ¶ÇÇÑ Ç×»ó ¸ðµç ¹®ÀÚµéÀ» µ¿ÀÏÇÑ Å©±â·Î ÀÎÄÚµùÇÏ´Â °íÁ¤Æø ¹æ½ÄÀÇ ¹®ÀÚ¼ÂÀÌ Àִ°¡Çϸé, EUC-KR(1~2¹ÙÀÌÆ®)À̳ª UTF-8(1~3¹ÙÀÌÆ®)°ú °°ÀÌ °¡º¯Æø ¹æ½ÄÀÇ ÀÎÄÚµùÀ» »ç¿ëÇÏ´Â ¹®Àڼµµ ÀÖ´Ù.
  2. ÄÝ·¹À̼Ç(Collation)
    • ÀÌ°ÍÀº ƯÁ¤ ¹®Àڼ¿¡ ÀÇÇØ µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ °ªµéÀ» °Ë»öÇϰųª Á¤·Ä µîÀÇ ÀÛ¾÷À» À§ÇØ ¹®Àڵ鰣¿¡ ¼­·Î 'ºñ±³'ÇÒ¶§ »ç¿ëÇÏ´Â ±ÔÄ¢µéÀÇ ÁýÇÕÀÌ´Ù. (collation is a set of rules for comparing characters in a character set.) µû¶ó¼­, ÀϹÝÀûÀÎ Data Type¿¡´Â Àû¿ëµÇÁö ¾Ê°í, CHAR, VARCHAR, TEXT¿Í °°Àº µ¥ÀÌÅÍ Å¸ÀÔÀ» °¡Áö´Â Ä®·³µé¿¡ ´ëÇؼ­¸¸ Àû¿ëµÈ´Ù.
    • ÁÖ·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏ´Â binary Çü½ÄÀ» »ç¿ëÇÒ °ÍÀÎÁö, ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â Case Insensitive Çü½ÄÀ» »ç¿ëÇÒ °ÍÀÎÁö·Î ³ª´©¾îÁø´Ù. Case Insensitive Çü½ÄÀ» »ç¿ëÇÏ´Â collationµéÀº ¸ðµÎ collation À̸§ÀÇ ³¡¿¡ 'ci'¶ó´Â ¹®ÀÚ°¡ ºÙ¾îÀÖ´Ù.

 

 

[Âü°í]

  1. Ưº°È÷, MySQL¿¡¼­ÀÇ ¹®Àڼ°ú collation ¿¡ ´ëÇÑ ¹®Á¦´Â ´Ü¼øÈ÷ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â °ø°£¿¡ ´ëÇÑ °üÁ¡¸¸ÀÌ ¾Æ´Ï¶ó, MySQL ¼­¹ö¿Í MySQL ¼­¹ö¿¡°Ô ¿äûÀ» Çϴ Ŭ¶óÀ̾ðÆ® »çÀÌ¿¡ ÁÖ°í¹Þ´Â »óÈ£ÀÛ¿ë¿¡ ´ëÇÑ °üÁ¡±îÁöµµ Æ÷ÇÔÇÑ´Ù´Â °ÍÀ» ²À ±â¾ïÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. 
    • µ¥ÀÌÅ͸¦ ÀúÀåÇϴ °üÁ¡ : MySQLÀº Server ·¹º§, Database ·¹º§, Table ·¹º§, Column ·¹º§±îÁö ÃÑ 4°³ÀÇ ·¹º§À» Áö¿øÇϴ Ư¡À» °¡Áö°í ÀÖÀ½.
    • ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®°£ÀÇ »óÈ£ÀÛ¿ë °üÁ¡ : MySQLÀº ÀÌ °üÁ¡¿¡¼­ ¹®Àڼ°ú °ü·ÃÇÑ ÃÑ 3°³ÀÇ ¼­·Î ´Ù¸¥ ŸÀÔÀ» Á¦°øÇÑ´Ù.
      • character_set_client : Ŭ¶óÀ̾ðÆ®¿¡¼­ ¹®ÀåÀÌ ¶°³¯ ¶§ ÇØ´ç ¹®ÀåÀº ¾î¶² ¹®ÀÚ¼ÂÀ¸·Î ÀÌ·ç¾îÁ®Àִ°¡ÀÇ ¹®Á¦
      • character_set_connection : Ŭ¶óÀ̾ðÆ®¿¡¼­ ³Ñ¾î¿Â ¹®ÀåÀ» ¼­¹ö¿¡¼­´Â ¾î¶² ¹®ÀÚ¼ÂÀ» ±âÁØÀ¸·Î Çؼ®ÇؾßÇϴ°¡ÀÇ ¹®Á¦.
      • character_set_results : ¼­¹ö¿¡¼­ Ŭ¶óÀ̾ðÆ®·Î ÀÀ´äÀ» ³Ñ°ÜÁÙ¶§ ¾î¶² ¹®ÀÚ¼ÂÀ¸·Î ³Ñ°Ü¾ßÇϴ°¡ÀÇ ¹®Á¦.
    • µû¶ó¼­, µ¥ÀÌÅͺ£À̽º ·¹º§¿¡¼­ euckr ¹®ÀÚ¼ÂÀÌ ±âº»°ªÀ¸·Î ÁöÁ¤µÇ¾îÀÖ´Â µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÑ ÈÄ ÇØ´ç µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅ͸¦ Àß ÀÔ·ÂÇÏ¿´´Âµ¥ ÀÌ»óÇÏ°Ô ºê¶ó¿ìÀú·Î ³Ñ±â¸é µ¥ÀÌÅͺ£À̽º¿¡¼­ Àоî¿Â ¹®ÀÚ¸¸ ±ÛÀÚ°¡ ±úÁö´Â »óȲÀÌ ¹ú¾îÁø´Ù¸é(ºê¶ó¿ìÀúÀÇ ÀÎÄÚµù ¼³Á¤ µîÀº Á¤»óÀûÀ̶ó°í °¡Á¤) ´ÙÀ½°ú °°ÀÌ Ã¼Å©ÇغÁ¾ß ÇÑ´Ù.
      • Database ·¹º§, Table ·¹º§, Column ·¹º§¿¡¼­ ¿øÇÏ´Â ¹®ÀÚ¼ÂÀ¸·Î Àß ÁöÁ¤µÇ¾îÀÖ´ÂÁö¸¦ È®ÀÎ
      • client, connection, results ¿¡¼­ÀÇ ¹®Àڼµµ ÀûÀýÇÏ°Ô ÁöÁ¤µÇ¾îÀÖ´ÂÁö¸¦ È®ÀÎ. (´ë°³ ±ÛÀÚ°¡ ±úÁö´Â °æ¿ì¶ó¸é, ¾Æ¸¶µµ ÀÌÂÊÀÌ À߸ø ÁöÁ¤µÇ¾îÀÖÀ» °¡´É¼ºÀÌ ³ô´Ù)
    • SQL ¹®Àå Áß¿¡ 'SET NAMES euckr [COLLATE collation_name]'À» »ç¿ëÇϸ頾տ¡¼­ »ìÆ캻 client, connection, results 3°¡Áö¿¡ ´ëÇÑ ¹®ÀÚ¼ÂÀ» ÇѲ¨¹ø¿¡ ÁöÁ¤ÇØÁÙ ¼ö ÀÖÀ½. (¼­¹ö ½ÇÇàÁß¿¡µµ º¯°æÀÌ °¡´É. ´Ü, ¼­¹ö ½ÇÇàÁß¿¡ SQL ¹®ÀåÀ¸·Î º¯°æÇÏ´Â °ÍÀº ¿µ±¸ º¯°æÀÌ ¾Æ´Ï¶ó ÇöÀç ¿¬°á¿¡ ÇÑÇؼ­¸¸ Àӽ÷Πº¯°æÇÏ´Â °ÍÀÓ)
    • Àӽà º¯°æÀÌ ¾Æ´Ñ ¿µ±¸ º¯°æÀ» ÇÏ·Á¸é, MySQL ¼­¹ö°¡ óÀ½ ½ÃÀÛÇÒ ¶§ Âü°íÇÏ´Â my.cnf ȯ°æ¼³Á¤ ÆÄÀϳ»¿¡ 'init_connect=SET NAMES euckr' ÀÌ·±½ÄÀ¸·Î ÁöÁ¤ÇØµÎ¸é µÊ.
    • ÀÌ·¸°Ô ¿µ±¸ º¯°æ°ú Àӽà º¯°æ ¹æ¹ýÀ» È°¿ëÇϸé Á» ´õ ´Ù¾çÇÑ ÀÀ¿ëÀÌ °¡´ÉÇØÁø´Ù.
      • ¼­¹ö°¡ ½ÃÀÛÇÏ´Â ´Ü°è¿¡¼­ ÁöÁ¤ÇÏ´Â °æ¿ì : ´ë°³ ȯ°æ¼³Á¤ ÆÄÀÏÀÎ my.cnf ÆÄÀÏ¿¡¼­ 'init_connect=SET NAMES euckr' ¸í·É¾î·Î ÁöÁ¤. ÀÌ·¸°Ô ÇßÀ»¶§´Â ÇØ´ç ¼­¹ö¸¦ »ç¿ëÇÏ´Â ¸ðµç ¾ÖÇø®ÄÉÀ̼ǵ鿡°Ô ÀÌ ¼³Á¤ÀÌ ±âº»°ªÀ¸·Î¼­ÀÇ ¿µÇâÀ» ¹ÌÄ£´Ù.
      • ½ÃÀÛ ´Ü°è°¡ ¾Æ´Ï¶ó ¼­¹ö°¡ ½ÇÇàÁß¿¡ µ¥ÀÌÅͺ£À̽º º°·Î ´Ù¸¥ ¹®ÀÚ¼ÂÀ» »ç¿ëÇϵµ·Ï ÁöÁ¤ÇÏ´Â °æ¿ì : ÀÏ´Ü Å¬¶óÀ̾ðÆ®°¡ ¼­¹ö·Î ¿¬°áÀ» ÇÑ ÀÌÈÄ¿¡ °ð¹Ù·Î 'SET NAMES euckr' ¸í·É¾î¸¦ ½ÇÇà½ÃÄѼ­ ÇöÀç ¿¬°á¿¡ ´ëÇÑ ¿¬°á °ü·Ã ¹®ÀڼµéÀ» ¼öÁ¤Çسõ°í ½ÃÀÛÇÑ´Ù. ÀÌ·¸°Ô Çϸé, °¢°¢ÀÇ µ¥ÀÌÅͺ£À̽ºº°·Î ¼­·Î ´Ù¸¥ ¿¬°á °ü·Ã ¹®ÀÚ¼ÂÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô µÊ(!!!)
      • Áï, µ¿ÀÏÇÑ ¼­¹ö³»¿¡¼­ ´ëºÎºÐÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀº utf-8 ¹®ÀÚ¼ÂÀ» »ç¿ëÇϴµ¥ ƯÁ¤ ¾ÖÇø®ÄÉÀ̼Ǹ¸ euckr ¹®ÀÚ¼ÂÀ» »ç¿ëÇÏ°íÀÚ ÇÒ °æ¿ì¿¡ À§¿Í °°Àº ¹æ¹ýÀ» »ç¿ëÇÏ¸é °¡´É.
      • Âü°í·Î, PHP¿¡¼­ »ç¿ëÇÏ´Â mysqli È®Àå¿¡¼­´Â 'SET NAMES ...'¸¦ query ¸Þ¼Òµå·Î ½ÇÇà½ÃÅ°´Â ¹æ¹ý ÀÌ¿Ü¿¡ 'set_charset' À̶ó´Â ´õ ³ªÀº ¸Þ¼Òµå¸¦ ÅëÇؼ­ µ¿ÀÏÇÑ È¿°ú¸¦ ¾òÀ» ¼öµµ ÀÖÀ½.
  2. (Áú¹®) PHPMyAdmin¿¡¼­ »õ·Î¿î µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¶§, ÇØ´ç µ¥ÀÌÅͺ£À̽º¿¡¼­ »ç¿ëÇÒ Default collation ¸¸À» ÁöÁ¤ÇÏ°Ô µÇ´Âµ¥... ±×·¸´Ù¸é, ÇØ´ç µ¥ÀÌÅͺ£À̽ºÀÌ Default Character SetÀº ¾î¶»°Ô µÇ´Â °ÍÀϱî?
    • (´ë´ä) ¹¹... ´ç¿¬ÇÑ À̾߱â°ÚÁö¸¸, Default collation ¸¸À» ÁöÁ¤ÇÏ°Ô µÇ¸é ÇØ´ç collationÀÌ ¼ÓÇØÀÖ´Â Character SetÀÌ ÀÚµ¿À¸·Î ±× µ¥ÀÌÅͺ£À̽ºÀÇ Default Character SetÀ¸·Î ÁöÁ¤µÊ. ¹°·Ð, PHPMyAdminÀÇ GUI ¹æ½ÄÀ» »ç¿ëÇÏÁö ¾Ê°í, Á÷Á¢ DDL ¹®ÀåÀ» »ç¿ëÇϸé Çϳª Çϳª º°µµ·Î ÁöÁ¤ÇØÁÙ ¼öµµ ÀÖÀ½. ¶ÇÇÑ, PHPMyAdmin¿¡¼­ µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¶§, Default collation Á¶Â÷µµ ÁöÁ¤ÇÏÁö ¾Ê°Ô µÇ¸é, ´ç¿¬È÷ MySQLÀÇ È¯°æ¼³Á¤ ÆÄÀÏÀÎ my.cnf(¶Ç´Â my.ini)¿¡¼­ ÁöÁ¤µÇ¾îÀÖ´Â ½Ã½ºÅÛÀÇ ±âº»ÀûÀÎ Character SetÀÌ Àû¿ëµÇ°Ô µÇ¸ç CollationÀº ÇØ´ç Character SetÀÇ Default collationÀÌ Àû¿ëµÇ°Ô µÊ.