11.4.1. CHAR ¹× VARCHAR ŸÀÔ
CHAR ¹× VARCHAR ŸÀÔÀº ¼·Î ºñ½ÁÇÏÁö¸¸, ÀúÀå ¹× ÃßÃâÇÏ´Â ¹æ½Ä¿¡¼ ¼·Î Â÷À̰¡ ÀÖ´Ù. MySQL 5.0.3 ¹öÀü±îÁö´Â, µÎ ŸÀÔ°£¿¡´Â ÃÖ´ë ±æÀÌ ¹× Æ®·¹Àϸµ ½ºÆäÀ̽º(trailing space)°¡ À¯Áö µÇ´ÂÁö¿¡ °üÇØ¼µµ Â÷ÀÌÁ¡À» °¡Áø´Ù.
CHAR ¹× VARCHAR ŸÀÔÀº ¿©·¯ºÐÀÌ ÀúÀåÇϰíÀÚ ÇÏ´Â ¹®ÀÚÀÇ ÃÖ´ë ¼ýÀÚ¸¦ ÁöÁ¤ÇÏ´Â ±æÀÌ¿Í ÇÔ²² ¼±¾ðµÈ´Ù. ¿¹¸¦ µé¸é, CHAR(30)Àº 30°³ÀÇ ¹®ÀÚ¸¦ ÀúÀåÇÒ ¼ö°¡ ÀÖ´Ù.
CHAR Ä÷³ÀÇ ±æÀÌ´Â ¿©·¯ºÐÀÌ Å×À̺íÀ» »ý¼ºÇÒ ¶§ ¼±¾ðÇÑ ±æÀÌ¿¡ °íÁ¤ÀÌ µÈ´Ù. ±× ±æÀÌ´Â
0 ¿¡¼ 255 »çÀÌÀÇ °ªÀ» °¡Áø´Ù. CHAR °ªÀ» ÀúÀåÇÒ ¶§¿¡´Â, ÁöÁ¤µÈ ±æÀ̸¦ ¸ÂÃß±â À§Çؼ ¿À¸¥ÂÊ¿¡ ½ºÆäÀ̽º¸¦ Áý¾î ³Ö°Ô µÈ´Ù. CHAR °ªÀ» ÃßÃâÇÒ ¶§¿¡´Â, ÀÌ·¸°Ô Ãß°¡µÈ ½ºÆäÀ̽º°¡ Á¦°ÅµÈ´Ù.
VARCHAR Ä÷³¿¡ ÀúÀåµÇ¾î ÀÖ´Â °ªµéÀº º¯¼ö-±æÀÌ ½ºÆ®¸µÀÌ´Ù. ±× ±æÀÌ´Â MySQL 5.0.3 ÀÌÀü¿¡´Â 0¿¡¼ 255 »çÀÌÀÇ °ªÀ» °¡Áú ¼ö ÀÖ¾úÀ¸¸ç, 5.0.3 ÀÌÈÄÀÇ ¹öÀü¿¡¼´Â 0¿¡¼ 65,535 »çÀÌÀÇ °ªÀ» °¡Áö°Ô µÈ´Ù.
CHAR¿Í´Â ¹Ý´ë·Î, VARCHAR °ªÀº ÇÊ¿äÇÑ ¹®ÀÚ ¼ö ¸¸Å¸¸À» »ç¿ëÇØ¼ ÀúÀåµÇ¸ç, ¿©±â¿¡ ±æÀ̸¦ ±â·ÏÇÏ´Â 1 ¹ÙÀÌÆ®°¡ Ãß°¡ µÈ´Ù (255 º¸´Ù ±ä ±æÀÌ·Î ¼±¾ðµÈ Ä÷³¿¡ ´ëÇØ¼´Â 2 ¹ÙÀÌÆ®°¡ Ãß°¡ µÊ).
VARCHAR °ªÀ» ÀúÀåÇÒ ¶§¿¡´Â ½ºÆäÀ̽º°¡ µû¶ó ºÙÁö ¾Ê´Â´Ù. Æ®·¹Àϸµ ½ºÆäÀ̽º¸¦ ó¸®ÇÏ´Â °ÍÀº ¹öÀü¿¡ µû¶ó ´Ù¸£°Ô µÈ´Ù. MySQL 5.0.3 ¹öÀü ÀÌÈÄ¿¡´Â, Ç¥ÁØ SQL ¿¡¼ ó·³, °ªÀ» ÀúÀå ¹× ÃßÃâÇÒ ¶§ Æ®·¹Àϸµ ½ºÆäÀ̽º¸¦ À¯ÁöÇÑ´Ù. MySQL 5.0.3 ¹öÀü ÀÌÀü¿¡´Â, VARCHAR Ä÷³¿¡ °ªÀ» ÀúÀåÇÒ ¶§ Æ®·¹Àϸµ ½ºÆäÀ̽º°¡ °ª¿¡¼ Á¦°Å°¡ µÈ´Ù; À̰ÍÀº °ªÀ» ÃßÃâÇÒ ¶§¿¡µµ ½ºÆäÀ̽º°¡ ¾ø°Ô µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ Ä÷³ÀÇ ÃÖ´ë ±æÀ̸¦ ÃʰúÇÏ´Â CHAR ¶Ç´Â VARCHAR Ä÷³¿¡ °ªÀ» ÇÒ´çÇÑ´Ù¸é, ±× °ªÀº Çã¿ëµÈ ±æÀÌ¿¡ ¸Âµµ·Ï À߸®°Ô µÈ´Ù (truncated). ¸¸ÀÏ ÀÌ·¸°Ô À߸° ¹®ÀÚ°¡ ½ºÆäÀ̽º°¡ ¾Æ´Ï¶ó¸é, °æ°í¹®ÀÌ ¹ß»ýÇÑ´Ù. ½ºÆäÀ̽º°¡ ¾Æ´Ñ ¹®ÀÚ¸¦ Á¦°Å (truncation)ÇÒ °æ¿ì¿¡ °æ°í°¡ ¾Æ´Ñ ¿¡·¯¸¦ ¹ß»ý½Ã۵µ·Ï ÇÒ ¼ö°¡ ÀÖ°í ½ºÆ®¸¯Æ® SQL¸ðµå¸¦ »ç¿ëÇØ¼ °ªÀ» »ðÀÔÇÏ´Â °ÍÀ» ¸·À» ¼öµµ ÀÖ´Ù. Section 5.2.5, ¡°¼¹ö SQL ¸ðµå¡±¸¦ ÂüÁ¶.
MySQL 5.0.3 ÀÌÀü¿¡¼´Â, ¸¸ÀÏ Æ®·¹Àϸµ ½ºÆäÀ̽º°¡ Á¦°ÅµÇÁö ¾Ê´Â µ¥ÀÌÅÍ Å¸ÀÔÀ» ÇÊ¿ä·Î ÇÒ °æ¿ì¿¡´Â, BLOB ¶Ç´Â TEXT ŸÀÔÀ» »ç¿ëÇÏ¸é µÈ´Ù. ¶ÇÇÑ, ¸¸ÀÏ ÀÓÀÇÀÇ ¹ÙÀÌÆ® °ªÀ» °¡Áö°í ÀÖ´Â ¾ÏÈ£ ¶Ç´Â ¾ÐÃà ÇÔ¼ö¿¡¼ ¾ò´Â °á°ú¿Í °°Àº ¹ÙÀ̳ʸ® °ªÀ» ÀúÀåÇϰíÀÚ ÇÑ´Ù¸é, CHAR ¶Ç´Â VARCHAR Ä÷³ º¸´Ù´Â BLOB Ä÷³À» »ç¿ëÇÑ´Ù ÀÌ·¸°Ô ÇÏ¸é Æ®·¹Àϸµ ½ºÆäÀ̽º¸¦ »èÁ¦ÇÔÀ¸·Î¼ ¹ß»ýµÉ ¼ö ÀÖ´Â µ¥ÀÌÅÍ °ªÀÇ º¯È¸¦ ÇÇÇÒ ¼ö°¡ ÀÖ°Ô µÈ´Ù.
¾Æ·¡ÀÇ Å×À̺íÀº CHAR ¹× VARCHAR °£ÀÇ Â÷ÀÌÁ¡¿¡ ´ëÇØ¼ ¿¹½Ã¸¦ Çϰí ÀÖ´Ù:
|
Value
|
CHAR(4)
|
Storage Required
|
VARCHAR(4)
|
Storage Required
|
|
''
|
' '
|
4 bytes
|
''
|
1 byte
|
|
'ab'
|
'ab '
|
4 bytes
|
'ab'
|
3 bytes
|
|
'abcd'
|
'abcd'
|
4 bytes
|
'abcd'
|
5 bytes
|
|
'abcdefgh'
|
'abcd'
|
4 bytes
|
'abcd'
|
5 bytes
|
Å×À̺íÀÇ ¸¶Áö¸· ÁÙ¿¡¼ º¸ÀÌ´Â °ªµéÀº ½ºÆ®¸¯Æ® ¸ðµå¸¦ »ç¿ëÇÏÁö ¾Ê¾ÒÀ» °æ¿ì¿¡¸¸ Àû¿ëµÇ´Â °ÍÀÓÀ» ¾Ë¾ÆµÎÀÚ; ¸¸ÀÏ MySQLÀÌ ½ºÆ®¸¯Æ® ¸ðµå¸¦ ±¸µ¿Çϰí ÀÖ´Ù¸é, Ä÷³ ±æÀ̸¦ ÃʰúÇÏ´Â °ªÀº ÀúÀåµÇÁö ¾ÊÀ¸¸ç, ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µÈ´Ù.
¸¸ÀÏ ÁÖ¾îÁø °ªÀÌ CHAR(4) ¹× VARCHAR(4) Ä÷³¿¡ ÀúÀåµÈ´Ù°í ÇÏ´õ¶óµµ, ±× Ä÷³¿¡¼ ÃßÃâµÇ´Â °ªµéÀÌ Ç×»ó µ¿ÀÏÇÑ °ÍÀº ¾Æ´Ñµ¥, ±× ÀÌÀ¯´Â µ¥ÀÌÅ͸¦ ÃßÃâÇϱâ Àü¿¡ CHAR Ä÷³¿¡¼ Æ®·¹Àϸµ ½ºÆäÀ̽º¸¦ »èÁ¦Çϱ⠶§¹®ÀÌ´Ù. ¾Æ·¡ÀÇ ¿¹¹®Àº ÀÌ·¯ÇÑ Â÷ÀÌÁ¡À» º¸¿© ÁÖ´Â °ÍÀÌ´Ù: mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4)); Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO vc VALUES ('ab ', 'ab '); Query OK, 1 row affected (0.00 sec)
mysql> SELECT CONCAT('(', v, ')'), CONCAT('(', c, ')') FROM vc; +---------------------+---------------------+ | CONCAT('(', v, ')') | CONCAT('(', c, ')') | +---------------------+---------------------+ | (ab ) | (ab) | +---------------------+---------------------+ 1 row in set (0.06 sec)CHAR ¹× VARCHAR Ä÷³¿¡ ÀÖ´Â °ªµéÀº Ä÷³¿¡ ÇÒ´çµÈ ¹®ÀÚ ¼Â°ú ÄÝ·¹¼Ç¿¡ µû¶ó¼ ÀúÀå ¹× ºñ±³°¡ µÈ´Ù.
¸ðµç MySQL ÄÝ·¹¼ÇÀº PADSPACE ŸÀÔÀ̶ó´Â Á¡À» ¾Ë¾ÆµÎÀÚ. À̰ÍÀº MySQLÀÇ ¸ðµç CHAR ¹× VARCHAR °ªµéÀº ¾î¶°ÇÑ Æ®·¹Àϸµ ½ºÆäÀ̽º¿Í´Â »ó°ü ¾øÀÌ ºñ±³µÈ´Ù´Â °ÍÀ» ÀǹÌÇÏ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¸é: mysql> CREATE TABLE names (myname CHAR(10), yourname VARCHAR(10)); Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO names VALUES ('Monty ', 'Monty ');
Query OK, 1 row affected (0.00 sec) mysql> SELECT myname = 'Monty ', yourname = 'Monty ' FROM names;
+--------------------+----------------------+ | myname = 'Monty ' | yourname = 'Monty ' | +--------------------+----------------------+ | 1 | 1 | +--------------------+----------------------+ 1 row in set (0.00 sec)
À̰ÍÀº ¸ðµç MySQL ¹öÀü¿¡ °øÅëÀ¸·Î Àû¿ëµÇ´Â »çÇ×ÀÓÀ» ¾Ë¾Æ µÎÀÚ. |