http://www.mysqlkorea.co.kr
Çѱ۸Ŵº¾ó 5.0 , Çѱ۸Ŵº¾ó 5.1 , MySQL 5.1 HA , »ç¿ëÀڸŴº¾ó
Advanced Knowle...  
¿£Áö´Ï¾î ³ëÆ®  
ºí·Î±×Á¸  
±Û·Î¹ú MySQL  
ÃֽűÛ
root °èÁ¤À¸·Î my¡¦
root °èÁ¤À¸·Î my¡¦
¿À¶óŬ¿¡ ÀÖ´Â Bi¡¦
mysqlbinlogÀ» ÀÌ¡¦
mysql Cluster Åס¦
 
Çѱ۸Ŵº¾ó 5.0 > ¸Å´º¾óÁ¸ > Çѱ۸Ŵº¾ó 5.0
 

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 ¹öÀü¿¡ °øÅëÀ¸·Î Àû¿ëµÇ´Â »çÇ×ÀÓÀ» ¾Ë¾Æ µÎÀÚ.
ȗˤ
11.4.1. CHAR ¹× VARCHAR Ÿ¡¦
MySQL Korea »çÀÌÆ®ÀÇ ÄÁÅÙÃ÷ ¼ÒÀ¯±ÇÀº MySQL Korea¿¡ ÀÖÀ¸¹Ç·Î ¹«´ÜÀüÀ縦 ±ÝÇÕ´Ï´Ù.
¨Ï 2002-2011 MySQL Korea All Rights Reserved.