Oracle/MySQL °ü·Ã °Ô½ÃÆÇ

2002/08/06(19:27) from 61.80.99.240
ÀÛ¼ºÀÚ : °­ÁÙ±â (jkkang65@hanmail.net) Á¶È¸¼ö : 5885 , ÁÙ¼ö : 440
Re: [MySQL] SQL Ç¥ÁØ È£È¯¼º
Á¦  ¸ñ:[¹ø¿ª/mysql]5. SQL Ç¥ÁØ È£È¯¼º                  °ü·ÃÀÚ·á:¾øÀ½  [167]
º¸³½ÀÌ:¹®ÅÂÁØ  (taejun  )  1999-02-05 01:23  Á¶È¸:1082
¹ø¿ªÀÚ : ¹®ÅÂÁØ(taejun@hitel.net)
** Ç¥½Ã´Â ¿ªÀÚÀÇ ÁÖÀÓ.

--> ´ÙÀ½Àº 6Àå Á¢±Ù Á¦¾î ½Ã½ºÅÛÀ̳ª 15Àå ODBC ºÎºÐÀ» ¹ø¿ªÇÒ ¿¹Á¤ÀÔ
´Ï´Ù. ¹ø¿ª ÀÚü´Â ¸¹ÀÌ ÇÏÁö ¾Ê¾ÒÁö¸¸  Áß¿äÇÑ ºÎºÐÀº ¾î´ÀÁ¤µµ ´Ù·ç¾ú´Ù
°í »ý°¢ÀÌ µÇ³×¿ä. isamchk »ç¿ëÇÏ´Â  ¹æ¹ý°ú ¿©·¯ °¡Áö ¹®Á¦¿¡  ´ëóÇÏ´Â
¹æ¹ýµµ Áß¿äÇÏ°ÚÁö¿ä. ±×·¸Áö¸¸ SQL ¹®°ú API ºÎºÐÀº °£´ÜÇÏ°Ô  »ç¿ë¹æ¹ý
³ª¿À´Â °ÍÀ̴ϱñ ±×³É ¸Å´º¾ó·Î ºÁµµ ±×¸® ºÒÆíÇÏÁö´Â ¾ÊÀ» µí...
¾Æ ¹«Áö Á¹¸®´Ù. ¿ä»õ´Â ½Ã°£ÀÌ ¾ø¾î¼­  ÇÏ·ç¿¡ µÎ¼¼ÆäÀÌÁö¾¿ ÇÏ°í ³Ñ¾î°¡
´Â±º¿ä.

---------------------------------------------------------------------

5. mysqlÀÇ Ç¥ÁØ È£È¯¼º
5.1 mysqlÀÇ ANSI SQL92 È®ÀåºÎºÐ
mysql¿¡´Â ´Ù¸¥ sql µ¥ÀÌÅͺ£À̽º¿¡¼­ ãÀ» ¼ö  ¾ø´Â È®ÀåµÈ ºÎºÐÀÌ ÀÖ´Ù.
ÀÌ·± ºÎºÐÀ» »ç¿ëÇÏ´Â °æ¿ì ÁÖÀÇÇØ¾ß ÇÑ´Ù. ¿Ö³Ä¸é mysql¿¡¼­ »ç¿ëÇÑ ÄÚµå
°¡ ´Ù¸¥ SQL ¼­¹ö¿¡ Æ÷ÆÃÇÒ ¼ö ¾øÀ»  ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ¾î¶² °æ¿ì¿¡´Â
/*! ... */ Çü½ÄÀÇ ÁÖ¼®¹®À» »ç¿ëÇÑ  MYSQL È®ÀåÀ» ÀÌ¿ëÇØ Æ÷Æð¡´ÉÇÑ ÄÚ
µå¸¦ ¸¸µé ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾îº¸ÀÚ:

SELECT /*! STRAIGHT_JOIN */ col_name from  table1,table2 WHERE
...

MYSQLÀÇ È®Àå ºÎºÐÀº ´ÙÀ½°ú °°´Ù:
- ÇʵåŸÀÔ MEDIUMINT, SET, ENUM ,  ±×¸®°í ´Ù¸¥ BLOB ¿Í TEXT
ŸÀÔ.
- Çʵå¼Ó¼º AUTO_INCREMENT, BINARY, UNSIGNED and ZEROFILL.
- ¸ðµç ¹®ÀÚ¿­ ºñ±³´Â ±âº»ÀûÀ¸·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾ÊÀ¸¸ç ÇöÀçÀÇ  ¹®
ÀÚ¼Â(±âº»ÀûÀ¸·Î ISO-8859-1 Latin1)¿¡ ÀÇÇØ Á¤·Ä  ¼ø¼­°¡ °áÁ¤µÈ´Ù. ÀÌ°Í
À» ¿øÇÏÁö ¾ÊÀ¸¸é Ä÷³À» BINARY ¼Ó¼ºÀ¸·Î Á¤ÀÇÇØ¾ß Çϸç ÀÌ·± °æ¿ì¿¡´Â
mysql ¼­¹ö È£½ºÆ®°¡ »ç¿ëÇÏ´Â ASCII ¼ø¼­¿¡ µû¶ó ¹®ÀÚ¿­À» ºñ±³ÇÑ´Ù.
- MYSQLÀº µ¥ÀÌÅͺ£À̽º¸¦  µð·ºÅ丮·Î ¸¸µé°í  Å×À̺íÀº ÆÄÀÏÀ̸§À¸·Î
¸¸µç´Ù. ÀÌ°ÍÀº µÎ°¡Áö¸¦ ÇÔÃàÇÏ°í ÀÖ´Ù:
   ¤· ÆÄÀÏÀ̸§ÀÇ ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏ´Â (´ëºÎºÐÀÇ À¯´Ð½º ½Ã½ºÅÛ. ¸®´ª½º
    µµ ¸¶Âù°¡Áö°ÚÁö¿ë~) ¿î¿µ ½Ã½ºÅÛ¿¡¼­´Â MYSQLÀÇ µ¥ÀÌÅͺ£À̽º ÀÌ
    ¸§°ú Å×À̺í À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÑ´Ù. Å×À̺í À̸§À» ±â¾ïÇϴµ¥
    ¹®Á¦°¡ ÀÖ´Ù¸é ¸ðµç °ÍÀ» ¼Ò¹®ÀÚ·Î ¸¸µéÀÚ.
   ¤· Å×À̺íÀÇ ¹é¾÷, À̸§¹Ù²Ù±â, ¿Å±â±â, »èÁ¦, º¹»ç¸¦ À§ÇØ Ç¥ÁØ ½Ã½ºÅÛ
    ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Å×À̺íÀÇ À̸§À» ¹Ù²Ù·Á¸é ÇØ´çÇÏ
    ´Â Å×À̺íÀÇ `.ISD', `.ISM' and `.frm' ÆÄÀÏÀÇ À̸§À» ¹Ù²Ù¸é µÈ´Ù.
- SQL¹®¿¡¼­ db_name.tbl_name ¹®À» ÀÌ¿ëÇÏ¿© ´Ù¸¥ µ¥ÀÌÅͺ£À̽ºÀÇ Å×ÀÌ
ºí¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.  ÀϺΠSQL ¼­¹ö´Â °°Àº  ±â´ÉÀ» Áö¿øÇÏÁö¸¸ ÀÌ°ÍÀ»
User space¶ó°í ºÎ¸¥´Ù. MYSQLÀº ´ÙÀ½°ú  °°Àº TABLESPACES¸¦ Áö¿ø
ÇÏÁö ¾Ê´Â´Ù : create table ralph.my_table...IN my_tablespace.
- ¼öÄ¡(¼ýÀÚÇü) Ä÷³¿¡¼­ LIKE¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- SELECT¹®¿¡¼­ INTO OUTFILE  °ú STRAIGHT_JOIN À»  »ç¿ëÇÒ ¼ö
ÀÖ´Ù. 7.11 [SELECT] Âü°í.
-EXPLIAN SELECT´Â Å×ÀÌºí¿¡¼­ ¾î¶»°Ô Á¶ÀÎÀÌ  µÇ¾ú´ÂÁö¿¡ ´ëÇÑ Á¤º¸
¸¦ º¸¿©ÁØ´Ù.
- Use of  index names,  indexes on a  subpart of  a field, and  use of
INDEX or   KEY in  a  CREATE TABLE   statement. 7.6  [CREATE
TABLE] Âü°í.
- ALTER TABLE¿¡¼­ CHANGE col_name, DROP col_name ¶Ç´Â DROP
INDEX ¸¦ »ç¿ëÇÑ´Ù. 7.7 [ALTER TABLE] Âü°í.
- ALTER TABLE ¹®¿¡¼­ IGNORE »ç¿ë.
- ALTER TABLE ¹®¿¡¼­ ´ÙÁß ADD, ALTER, DROP or CHANGE »ç¿ë
- IF EXISTS Å°¿öµå¸¦ ÀÌ¿ëÇÑ DROP TABLE »ç¿ë.
- ÇÑ Å×À̺í À̻󿡼­ DROP TABLE »ç¿ë.
- LOAD DATA INFILE »ç¿ë. ´ëºÎºÐÀÇ °æ¿ì ÀÌ ¹®ÀåÀº ¿À¶óŬÀÇ LOAD
DATA INFILE°ú ȣȯµÈ´Ù. 7.15 [LOAD DATA INFILE] Âü°í.
(** ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ÇѲ¨¹ø¿¡  ÀÔ·ÂÇÒ ¶§ ÀÏÀÏÀÌ INSERT  ¹®À» ÇÏ´Â
°Íº¸´Ù ¼Óµµ°¡ ºü¸£´Ù. **)
- OPTIMIZE TABLE ¹® »ç¿ë.
- ¹®ÀÚ¿­Àº ''' ¸¸ÀÌ ¾Æ´Ï¶ó '"' ¶Ç´Â ''' ·Î ´ÝÀ» ¼ö ÀÖ´Ù.
- escape `\' ¹®ÀÚ »ç¿ë.
- SET OPTION ¹®. 7.24 [SET OPTION] Âü°í.
- GROUP BY ºÎºÐ¿¡¼­ ¸ðµç Ä÷³À» »ç¿ëÇÒ ÇÊ¿ä°¡  ¾ø´Ù. ÀÌ·¯ÇÑ ±â´ÉÀº
ÀϹÝÀûÀÎ  ÁúÀÇ°¡  ¾Æ´Ñ   Æ¯Á¤ÇÑ ÁúÀÇ¿¡¼­   ¼º´ÉÀ»  Çâ»ó½ÃŲ´Ù.   7.3.12
[GROUP BY Functions] Âü°í.
(** ANSI SQL¿¡¼­´Â ¿©·¯ Å×ÀÔ¹ÉÀ»  ÀÌ¿ëÇÏ¿© GROUP BY¸¦ »ç¿ëÇÒ ¶§
»ç¿ëÇÏ°íÀÚ ÇÏ´Â ¸ðµç Ä÷³¿¡ GROUP BY¸¦  ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô
µÇ´Â °æ¿ì ºÒÇÊ¿äÇÑ ¿¬»êÀÌ ¼öÇàµÉ ¼ö Àִµ¥ MYSQL¿¡¼­´Â ÀÌ·¯ÇÑ °ÍÀ»
¾ø¾Ø °ÍÀÌ´Ù. 7.3.12¸¦ Âü°íÇÑ´Ù **)
- ´Ù¸¥ SQL ȯ°æÀ» »ç¿ëÇß´ø »ç¿ëÀÚ¸¦ À§ÇØ MYSQLÀº ¸¹Àº ±â´É¿¡¼­ ¾Ë
¸®¾Æ½º¸¦ Áö¿øÇÑ´Ù. ¿¹¸¦ µé¾î ¸ðµç ¹®ÀÚ Æã¼ÇÀº ANSI SQL °ú ODBC ±¸
¹®À» Áö¿øÇÑ´Ù.
- MYSQLÀº C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í °°Àº ³í¸®ÀûÀÎ  OR °ú AND¸¦ ÀǹÌÇÏ
´Â || ¿Í && ¸¦ ÀνÄÇÑ´Ù.  MYSQL¿¡¼­´Â || ¿Í OR ´Â  °°Àº ¸»À̸ç &&
¿Í AND µµ  ¸¶Âù°¡ÁöÀÌ´Ù. ÀÌ·¯ÇÑ ¹Ì¹¦ÇÑ  ±¸¹®¶§¹®¿¡ MYSQLÀº  string
concatenation(¹®ÀÚ¿­ ¿¬°ü, ¿¬°á?)À» À§ÇÑ ANSI SQL  ¿ÀÆÛ·¹ÀÌÅÍÀÎ || À»
Áö¿øÇÏÁö ¾Ê´Â´Ù. ´ë½Å CONCAT()¸¦ »ç¿ëÇÑ´Ù. CONCAT() ´Â  ¸¹Àº ÀÎÀÚ
°¡ À־ MYSQL ¿¡¼­ || ¿ÀÆÛ·¹ÀÌÅÍÀÇ »ç¿ëÀ» º¯È¯Çϱ⠽±´Ù.

MySQL understands the || and  && operators to mean  logical OR and
AND, as in the  C programming language.  In MySQL, ||  and OR are
synonyms, as are && and AND.  Because of this nice syntax,  MySQL
doesn't support the ANSI SQL operator || for string  concatenation; use
CONCAT() instead. Since CONCAT() takes any  number of arguments,
it's easy to convert use of the || operator to MySQL.

- Æ÷ÆÃÀÌ °¡´ÉÇϵµ·Ï SQL  CODE¿¡¼­ STRAIGHT_JOIN°°Àº MYSQL¸¸
ÀÇ Å°¿öµå »ç¿ëÀ» Áö¿øÇϱâ À§ÇØ ÀÌ·± Å°¿öµå¸¦ /* */ ÁÖ¼®¾È¿¡ ³»ÀåÇÒ ¼ö
ÀÖ´Ù. ÁÖ¼®¹®¾ÈÀÇ ³»¿ëÀº '!' ·Î ½ÃÀÛÇÑ´Ù. ÀÌ·±  °æ¿ì MYSQL¿¡¼­´Â ÁÖ¼®
¹®À» ´Ù¸¥ MYSQL ±¸¹®°ú °°ÀÌ Çؼ®ÇÏÁö¸¸ ´Ù¸¥ SQL ¼­¹ö¿¡¼­´Â ÀÌ·¯ÇÑ
È®Àå±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê°í °Ç³Ê¶é ¼ö ÀÖ´Ù. ¿¹¸¦ º¸ÀÚ:

SELECT /*! STRAIGHT_JOIN */ * from table1,table2 WHERE ...

- ´ÙÀ½ÀÇ ±â´ÉÀ̳ª ¸í·É »ç¿ë:
   ¤· CREATE  DATABASE or  DROP DATABASE.  7.4 [CREATE
    DATABASE] Âü°í.
   ¤· MOD() ´ë½Å¿¡ % »ç¿ë. %´Â C ÇÁ·Î±×·¡¸Ó¸¦ À§ÇØ  Áö¿øÇÏ¸ç ¶ÇÇÑ
    PostgresSQL°úÀÇ È£È¯¼ºÀ» À§ÇØ Áö¿øÇÑ´Ù.
   ¤· Ä÷³ ¹®¿¡¼­ =, <>, <= ,<, >=,>, <<, >>, AND, OR, LIKE »ç¿ë.
   ¤· LAST_INSERT_ID(). 18.4.49 [mysql_insert_id()] Âü°í.
   ¤· REGEXP or NOT REGEXP.
   ¤· Çϳª³ª   Çϳª ÀÌ»óÀÇ  ÀÎÀÚ¸¦  »ç¿ëÇÑ CONCAT()   ³ª CHAR().
    MYSQL¿¡¼­ ÀÌ·¯ÇÑ Æã¼ÇÀº ¿©·¯°³ÀÇ ÀÎÀÚ¸¦ °¡Áú ¼ö ÀÖ´Ù.
   ¤·  BIT_COUNT(),   ELT(),  FROM_DAYS(),   FORMAT(),  IF(),
    PASSWORD(),   ENCRYPT(),  PERIOD_ADD(),  PERIOD_DIFF(),
    TO_DAYS(), or WEEKDAY().
   ¤· ¼­ºê½ºÆ®¸µÀ» ¾ø¾Ö´Â  µ¥ TRIM()  »ç¿ë.(Use of  TRIM() to trim
    substrings) ANSI SQL ¿¡¼­´Â ´ÜÀÏ ¹®ÀÚ Á¦°Å¸¸ Áö¿øÇÑ´Ù.
(** ²¨¾î¾ï~ Æ®¸²ÀÌ ¼ú¸Ô°í ÇÏ´Â Æ®¸²Àº ¾Æ´Ï¶ø´Ï´Ù... **)
¤· ±×·ì Æã¼Ç¿¡¼­ STD(), BIT_OR() and BIT_AND()
¤· DELET + INSERT ´ë½Å REPLACE »ç¿ë. 7.14 [REPLACE] Âü°í.
¤· FLUSH flush_option ¸í·É.


5.2 MYSQL¿¡¼­ ºüÁø ±â´É
´ÙÀ½ÀÇ ±â´ÉµéÀº ÇöÀç ¹öÀüÀÇ MYSQL¿¡ ºüÁ®ÀÖ´Ù. ´ÙÀ½ ¹öÀü¿¡¼­ÀÇ  ¿ì¼±
±ÇÀ»      È®ÀÎÇ϶ó¸é     MYSQL      TODO     ¸ñ·ÏÀ»      Âü°íÇÏÀÚ
(http://www.mysql.com/Manual_split/manual_Todo.html). ÀÌ°ÍÀÌ °¡Àå  ÃÖ
½Å ¹öÀüÀÇ TODO ¸ñ·ÏÀÌ´Ù. ºÎ·Ï F [TODO] Âü°í.

5.2.1 Sub-selects
´ÙÀ½Àº Mysql¿¡¼­ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù:

SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

Mysql¿¡¼­´Â ¿ÀÁ÷ INSERT ... SELECT ... and REPLACE ... SELECT ...
¸¸À» Áö¿øÇÑ´Ù. µ¶¸³ÀûÀÎ ¼­ºê-select ¹®Àº 3.23.0¿¡¼­ ¾Æ¸¶µµ »ç¿ëÇÒ ¼ö ÀÖ
À» °ÍÀÌ´Ù. ±×´ë½Å ÇöÀç IN() Æã¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

5.2.2 SELECT INTO TABLE
MysqlÀº ¾ÆÁ÷ SELECT  ... INTO TABLE  ....À» Áö¿øÇÏÁö  ¾Ê´Â´Ù. ÇöÀç,
MysqlÀº ¿ÀÁ÷ SELECT ... INTO OUTFILE ..., ¸¸À» Áö¿øÇÏ¸ç ±âº»ÀûÀ¸·Î
´Â µ¿ÀÏÇÏ´Ù.

5.2.3 Æ®·£Àè¼Ç(Transactions)
Æ®·£Àè¼ÇÀº Áö¿øµÇÁö ¾Ê´Â´Ù.  MysqlÀº °ð  atomic(¿øÀÚ¼º?) ¿ÀÆÛ·¹À̼ÇÀ»
Áö¿øÇÒ °ÍÀ̸ç atomic ¿ÀÆÛ·¹À̼ÇÀº rollbackÀÌ ¾ø´Â Æ®·£Àè¼Ç°ú ºñ½ÁÇÏ´Ù.
atomic ¿ÀÆÛ·¹À̼ÇÀ» »ç¿ëÇϸç insert/select/¸ðµç ¸í·ÉÀÇ ±×·ìÀ» ½ÇÇàÇÒ ¼ö
ÀÖÀ¸¸ç ¾î¶² ½º·¹µåµµ Ãæµ¹ÇÏÁö ¾ÊÀ» ¼ö  ÀÖµµ·Ï º¸ÀåÇØÁØ´Ù. ÀÌ ¹®¸Æ¿¡¼­
ÀϹÝÀûÀ¸·Î   ·Ñ¹é(rollback)Àº  ÇÊ¿ä¾ø´Ù.   ÇöÀç  LOCK   TABLES   ¿Í
UNLOCK TABLES ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ´Ù¸¥  ½º·¹µå°¡ Ãæµ¹ÇÏ´Â °ÍÀ» ¸·À»
¼ö ÀÖ´Ù. 7.23 [Lock Tables] Âü°í.

5.2.4 ÀúÀå ÇÁ·Î½ÃÀú¿Í Æ®¸®°Å
ÀúÀå ÇÁ·Î½ÃÀú´Â ¼­¹ö¿¡¼­ ÄÄÆÄÀϵǰí ÀúÀåµÉ  ¼ö ÀÖ´Â SQL ¸í·É  ¼¼Æ®ÀÌ
´Ù. ÀÌ·± ±â´ÉÀÌ ¼öÇàµÇ¸é Ŭ¶óÀ̾ðÆ®´Â Àüü ÁúÀǸ¦ ´Ù½Ã ÇÒ ÇÊ¿ä°¡ ¾ø°í
¶ÇÇÑ ÀúÀå ÇÁ·Î½ÃÀú¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ±â´ÉÀÌ ÀÖÀ¸¸é ÁúÀÇ´Â Çѹø¸¸
Çؼ®µÇ°í ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®°£ÀÇ ÁÖ°í¹Þ¾Æ¾ß ÇÏ´Â µ¥ÀÌÅÍ°¡ ÁÙ¾îµé¹Ç·Î ¼Ó
µµ°¡ Çâ»óµÈ´Ù. ¶ÇÇÑ ¼­¹öÀÇ Æã¼Ç ¶óÀ̺귯¸®¸¦ °¡ÁüÀ¸·Î¼­ °³³äÀûÀÎ ´Ü°è
¸¦ Çâ»ó½Ãų ¼ö ÀÖ´Ù.  (??? You can also  raise the conceptual level  by
having libraries of functions in the server.)

Æ®¸®°Å´Â Ưº°ÇÑ À̺¥Æ®°¡ ¹ß»ýÇßÀ»  ¶§ »ý±â´Â ÀúÀå  ÇÁ·Î½ÃÁ®ÀÌ´Ù. ¿¹¸¦
µé¾î Æ®·£Àè¼Ç Å×ÀÌºí¿¡¼­ ·¹Äڵ尡 »èÁ¦µÇ°í ¸ðµç Æ®·£Àè¼ÇÀÌ  Áö¿öÁú ¶§
»óÀÀÇÏ´Â Å×À̺íÀ» »èÁ¦ÇÒ ¼ö ÀÖ´Â ÀúÀå ÇÁ·Î½ÃÀú¸¦ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù.

¾ÕÀ¸·Î´Â ÀúÀå ÇÁ·Î½ÃÀú¸¦ Áö¿øÇÒ ¿¹Á¤ÀÌÁö¸¸  Æ®¸®°Å´Â ¾Æ´Ï´Ù. Æ®¸®°Å´Â
ÇÊ¿äÇÏÁö ¾ÊÀº °æ¿ì¿¡µµ »ç¿ëµÉ ¼ö À־ ÀϹÝÀûÀ¸·Î ¼Óµµ°¡ ´À·ÁÁø´Ù.

¾ðÁ¦ ÀúÀå ÇÁ·Î½ÃÀú¸¦ »ç¿ëÇÏ°Ô µÉÁö´Â ¾ÕÀ¸·Î Mysql¿¡ Ãß°¡ÇÒ ¸ñ·ÏÀÎ ºÎ
·Ï F¸¦ Âü°íÇÏÀÚ.(The TODO)

(** Àü¹ÝÀûÀ¸·Î Æ®·£Àè¼Ç ó¸®¿Í Æ®¸®°Å µîÀº µ¥ÀÌÅͺ£À̽ºÀÇ ¼Óµµ¸¦ ÀúÇÏ
½Ãŵ´Ï´Ù. MysqlÀº ÀÌ·¸°Ô ¼Óµµ¿¡ ¿µÇâÀ»  ¹ÌÄ¥ ¼ö ÀÖ´Â ºÎºÐÀ» Á¦°ÅÇÏ¿©
ºü¸¥ ¼Óµµ¸¦ ³»´Â °ÍÀÌÁö¿ä. ÀÌ·¯ÇÑ ºÎºÐÀÌ ÀڱⰡ »ç¿ëÇÏ´Â µ¥ÀÌÅͺ£À̽º
¿¡¼­ ¾ó¸¶³ª Áß¿äÇÑ°¡ ÆÇ´ÜÀ» ÇØ º¸¾Æ¾ß ÇÒ °ÍÀÔ´Ï´Ù. º¸Åë ¼ÒÇü DBMS¿¡
¼­´Â ȸº¹°ú º´Çà¼öÇàÀ» Áö¿øÇÏÁö ¾Ê´Â °æ¿ì°¡  ¸¹´Ù. Áï º´Çà¼öÇàÀº ¹ß»ý
ÇÏÁö ¾ÊÀ¸¸ç, ȸº¹Àº »ç¿ëÀÚÀÇ ¹®Á¦·Î »ý°¢ÇÑ´Ù. ±×·¯¹Ç·Î »ç¿ëÀÚ°¡ µ¥ÀÌÅÍ
º£À̽ºÀÇ ¿¹ºñ »çº»À» ÁغñÇϸç, °íÀåÀÌ ¹ß»ýÇϸé ÀÛ¾÷À» ´Ù½Ã  ÇØ¾ß ÇÑ´Ù.
Æ®¸®°Å°°Àº °æ¿ì´Â ÀÚ·áÀÇ ¹«°á¼ºÀ» º¸ÀåÇϱâ À§ÇØ ÇÊ¿äÇÑ °ÍÀÌ´Ù. **)

5.2.5 ¿Ü·¡Å°(Foreign Keys)
SQL ¹®¿¡¼­ ¿Ü·¡Å°´Â Å×À̺íÀ» Á¶ÀÎÇÒ  ¶§ »ç¿ëÇÏÁö ¾ÊÁö¸¸ ´ëºÎºÐ  ÂüÁ¶
¹«°á¼ºÀ» È®ÀÎÇÒ ¶§ »ç¿ëÇÑ´Ù.  SELECT ¹®¿¡¼­ ´ÙÁß  Å×ÀÌºí¿¡¼­ ÀڷḦ
°¡Á®¿À±æ ¿øÇϸé Å×À̺íÀ» Á¶ÀÎÇؼ­ ó¸®ÇÒ ¼ö ÀÖ´Ù.

SELECT * from table1,table2 where table1.id = table2.id

7.12 [JOIN] Âü°í.

Mysql¿¡¼­ ¿Ü·¡Å°(FOREIGN  KEY) ¹®Àº   ´Ù¸¥ SQL Á¦Ç°ÀÇ  CREATE
TABLE ¸í·É°úÀÇ È£È¯¼º ¶§¹®¿¡ Á¸ÀçÇÑ´Ù: ¿Ü·¡Å°´Â  ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â
´Ù. ON DELETE ... °¡ ¾ø´Â FOREIGN KEY ±¸¹®Àº ´ëºÎºÐ ¹®¼­ÀûÀÎ ¸ñ
ÀûÀ¸·Î »ç¿ëÇÑ´Ù. ÀϺΠODBC  ¾ÖÇø®ÄÉÀ̼ÇÀº ÀÌ°ÍÀ» ÀÚµ¿ÀûÀÎ  WHERE
¹®À» ¸¸µé ¶§ »ç¿ëÇÒ °ÍÀÌ´Ù. ±×·¸Áö¸¸ ÀÌ°ÍÀº ´ëºÎºÐ »ý·«(¹«½Ã)ÇÏ°í ³Ñ¾î
°¡±â ½±´Ù. ¿Ü·¡Å°´Â ¶§·Î´Â Á¦¾àÁ¶°Ç üũ(constraint check)·Î »ç¿ëÀ» ÇÏ
Áö¸¸ ÀÌ·¯ÇÑ Ã¼Å©´Â µ¥ÀÌÅÍ°¡ Å×ÀÌºí¿¡ Á¤È®ÇÑ ¼ø¼­·Î  µé¾î°¥¶§´Â ºÒÇÊ¿ä
ÇÏ´Ù. MysqlÀº ÀϺΠ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ¿Ü·¡Å°°¡ Á¸ÀçÇÏ´Â °ÍÀ» ÇÊ¿ä·Î ÇÏ
±â ¶§¹®¿¡(Á¦´ë·Î ÀÛµ¿ÇÏµç ¾ÈÇÏµç »ó°ü¾øÀÌ) Áö¿øÇÏ´Â °ÍÀÏ »ÓÀÌ´Ù.

Mysql¿¡¼­ ¿Ü·¡Å°¸¦ °¡Áø  Å×À̺íÀÇ ·¹Äڵ带 »èÁ¦ÇÒ  ¶§ ¾ÖÇø®ÄÉÀ̼ǿ¡
ÀûÀýÇÑ DELETE ¹®À» Ãß°¡ÇÏ¿© ON DELETE  ... °¡ ¼öÇàµÇ´Â °ÍÀ» ¸·À½
À¸·Î½á ¹®Á¦¸¦ ÇØ°áÇÒ ¼öÀÖ´Ù. °æÇè»ó ÀÌ·¸°Ô  ÇÏ´Â °ÍÀÌ ¿Ü·¡Å°¸¦ »ç¿ëÇÏ
´Â °Í°ú °°ÀÌ ºü¸£¸ç(¾î¶² °æ¿ì¿¡´Â ´õ ºü¸§) Æ÷ÆÃÇϱⰡ ´õ ÁÁ´Ù.

°¡±î¿î ½ÃÀϾȿ¡  ¿ì¸®´Â ¿Ü·¡Å°  ±â´ÉÀ» È®ÀåÇÒ   °ÍÀÌ´Ù. ±×·¡¼­ ÃÖ¼ÒÇÑ
mysqldump¿Í ODBC¿¡¼­ Á¤º¸°¡ ÀúÀåµÇ°í °Ë»öÇÒ ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÌ´Ù.


5.2.5.1 ¿Ü·¡Å°¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÀÌÀ¯

¿Ü·¡Å°¸¦ »ç¿ëÇÒ ¶§ ¾îµð¿¡¼­ Ãâ¹ßÇØ¾ß ÇÒÁö ¸ð¸£´Â ¸¹Àº ¹®Á¦°¡ ÀÖ´Ù:

- ¿Ü·¡Å°´Â µ¥ÀÌÅͺ£À̽º¸¦  ¹«Ã´À̳ª º¹ÀâÇÏ°Ô ¸¸µç´Ù.  ¿Ö³ÄÇÏ¸é ¿Ü·¡Å°
Á¤ÀÇ´Â µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÇ¾î¾ß ÇÏ°í ¿Ü·¡Å°¸¦ ÀÌÇàÇÏ´Â °ÍÀº À̵¿, º¹
»ç, Á¦°ÅµÉ ¼ö ÀÖ´Â ÆÄÀÏÀ» »ç¿ëÇÏ´Â ÀüüÀÇ "»ç¼ÒÇÑ Á¢±Ù"À» Æı«ÇÒ °ÍÀÌ
´Ù.
(** ¹ø¿ªÀÌ ÀÌ»óÇѵ¥ ¿Ü·¡Å°°¡ ÀÖÀ¸¸é ÂüÁ¶ ¹«°á¼º ±ÔÄ¢À» À§ÇØ ¿©·¯ °¡Áö
º¸»ó ¿¬»êÀ» ÇÏ°Ô µÈ´Ù. ÀÌ°ÍÀ» ¶æÇÏ°í ÀÖ´Â µíÇÏ´Ù. **)

Foreign keys  make  life very   complicated, because  the foreign   key
definitions must be stored in a database  and implementing them would
destroy the whole  "nice approach" of  using files  that can be  moved,
copied and removed.

- INSERT ¿Í UPDATE  ¹®Àº ¼Óµµ¿¡ ¸¹Àº  ¿µÇâÀ» ³¢Ä£´Ù. ±×¸®°í ÀÌ·±
°æ¿ì º¸Åë ¿Ã¹Ù¸¥ ¼ø¼­·Î ¿Ã¹Ù¸¥ Å×ÀÌºí¿¡ ·¹Äڵ带 »ðÀÔÇϱ⠶§¹®¿¡ ´ëºÎ
ºÐ ¸ðµç ¿Ü·¡Å° üũ´Â »ç¿ëÇÒ ÇÊ¿ä ¾ø´Ù.

- ÇÑÂÊÀÇ ¿µÇâÀÌ Àüü µ¥ÀÌÅͺ£À̽º¿¡ ¿¬¼â ÀÛ¿ëÀ» Çϱ⠶§¹®¿¡  Å×ÀÌºí¿¡
¼­ ¾÷µ¥ÀÌÆ®¸¦ ÇÒ ¶§ ¸Å¿ì ¸¹Àº Å×ÀÌºí¿¡¼­  ¶ôÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ÇÑ Å×ÀÌ
ºí¿¡¼­ ¸ÕÀú ·¹Äڵ带 »èÁ¦ÇÏ°í ±×ÈÄ¿¡ ´Ù¸¥ Å×ÀÌºí¿¡¼­  ·¹Äڵ带 »èÁ¦ÇÏ
´Â °ÍÀÌ ÈξÀ ºü¸£´Ù.

- Å×ÀÌºí¿¡¼­ ¿ÏÀüÇÏ°Ô Áö¿ï ¶§ Å×À̺íÀ» º¹±¸ÇÒ ¼ö ¾ø°í ...
You can no longer restore a table by doing a full delete from the  table
and then restoring all records (from a new source or from a backup).

- ¿Ü·¡Å°°¡ ÀÖ´Ù¸é ¸Å¿ì ƯÁ¤ÇÑ ¼ø¼­·Î ÇÏÁö ¾Ê´ÂÇÑ Å×À̺íÀ» ´ýÇÁÇÏ°í º¹
±¸ÇÒ ¼ö ¾ø´Ù.
If you have foreign keys you can't dump and restore tables unless you
do so in a very specific order.

- ´ÜÀÏ create  ¹®¿¡¼­ °¢ Å×À̺íÀ»  Àç»ý¼ºÇÏ´Â °ÍÀ»  ºÒ°¡´ÉÇÏ°Ô ¸¸µå´Â
"allowd" circular definitionÀ» ÇÏ´Â  °ÍÀº ¸Å¿ì ½±´Ù.  Á¤ÀÇ°¡ ÀÛµ¿À» ÇÏ°í
»ç¿ëÇÒ ¼ö ÀÖ´Ù°í ÇÏ´õ¶óµµ...
(** À¸... ¹«½¼ ¸»??? **)

It's very easy to do "allowed" circular  definitions that make the tables
impossible to recreate each table with a single create statement, even if
the definition works and is usable.

¿Ü·¡Å°ÀÇ ÁÁÀº Á¡Àº ´ÜÁö ´ÙÀ½¿Í  °°´Ù. ODBC¿Í ƯÁ¤ÇÑ ´Ù¸¥ Ŭ¶óÀ̾ðÆ®
ÇÁ·Î±×·¥¿¡¼­ ¾î¶»°Ô Å×À̺íÀÌ ¿¬°áµÇ¾î ÀÖ´ÂÁö¸¦ º¼ ¼ö ÀÖ°í ¿¬°á ´ÙÀ̾î
±×·¥À» º¸´Âµ¥ »ç¿ëÇÏ¸ç ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µå´Âµ¥ µ½´Â Á¡ÀÌ´Ù.

The only nice aspect of  foreign key is that  it gives ODBC and  some
other client programs the ability  to see how a  table is connected and
use this to show connection diagrams and to help building applicatons.


Mysql¿¡¼­´Â °ð ¿Ü·¡Å° Á¤ÀǸ¦ ÀúÀåÇÒ ¼ö ÀÖµµ·Ï Çؼ­ Ŭ¶óÀ̾ðÆ®°¡ ¾î¶»
°Ô ¿ø·¡ÀÇ ¿¬°áÀÌ ¸¸µé¾îÁ³´ÂÁö¿¡ ´ëÇؼ­  Áú¹®ÇÏ°í ´äÀ» ¹ÞÀ» ¼ö  ÀÖµµ·Ï
ÇÒ °ÍÀÌ´Ù. ÇöÀçÀÇ '.frm' ÆÄÀÏ Æ÷¸ËÀº ¾ÆÁ÷ ÀÌ°ÍÀ» Áö¿øÇÏÁö ¸øÇÏ°í ÀÖ´Ù.
MySQL will soon store FOREIGN KEY definitions so that  a client can
ask for and receive an answer  how the original connection was  made.
The current `.frm' file format does not have any place for it.

5.2.6 ºä

MysqlÀº ºä¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ±×·¸Áö¸¸ TODO(ÀÌÈÄ °³¼± ¸ñ·Ï)¿¡ ÀÖ´Ù.
MySQL doesn't support views, but this is on the TODO.

5.2.7 `--'À» »ç¿ëÇÑ ÁÖ¼®

ÀϺΠ´Ù¸¥ SQL µ¥ÀÌÅͺ£À̽º´Â '--' ·Î  ÁÖ¼®À» ½ÃÀÛÇÑ´Ù. mysql ¸í·É ¶ó
ÀÎ µµ±¸°¡ '--'·Î ½ÃÀÛÇÏ´Â ¸ðµç  ÁÙÀ» Á¦°ÅÇÒ Áö¶óµµ MysqlÀº  '#'À» ÁÖ¼®
¹®ÀÇ ½ÃÀÛÀ¸·Î »ç¿ëÇÑ´Ù.  »ç¿ëÀÚ´Â ¶ÇÇÑ  C ¸í·É ½ºÅ¸ÀÏÀÎ  /* this  is a
comment */ ¸¦ mysql¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. 7.28 [Comment] Âü°í.

MysqlÀº '--'¸¦ Áö¿øÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù; '--'Àº Åðº¸ÇÑ  ÁÖ¼®¹® ÇüÅ·ΠÀÚµ¿
À¸·Î »ý¼ºµÇ´Â SQL ÁúÀÇ¿¡¼­ ¸¹Àº ¹®Á¦¸¦  ¹ß»ý½ÃŲ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸
ÀÚ. ¿ì¸®´Â ÀÚµ¿ÀûÀ¸·Î payment¸¦ !payment!  ÀÇ °ªÀ¸·Î ÀÔ·ÂÇϵµ·Ï ÇÏ°í
ÀÖ´Ù :

UPDATE tbl_name SET credit=credit-!payment!

paymentÀÇ °ªÀÌ À½¼öÀÏ ¶§ ¾î¶² ÀÏÀÌ »ý±æ °ÍÀ̶ó »ý°¢Çϴ°¡?

1--1Àº ÇÕ´çÇÑ SQL¹®À̱⠶§¹®¿¡ '--'°¡ ÁÖ¼®¹®ÀÇ  ½ÃÀÛÀ» ÀǹÌÇÏ´Â °ÍÀ»
²¨¸®´Â °ÍÀÌ´Ù.

'--' ÁÖ¼®À» Æ÷ÇÔÇÏ´Â ÅؽºÆ® ÆÄÀÏÀÇ SQL ÇÁ·Î±×·¥À» °¡Á³´Ù¸é ´ÙÀ½°ú °°
ÀÌ »ç¿ëÇØ¾ß ÇÑ´Ù:

shell> replace " --" " #" < text-file-with-funny-comments.sql \
        | mysql database

instead of the normal(Á¤»óÀûÀÎ °æ¿ì ´ë½Å???):

shell> mysql database < text-file-with-funny-comments.sql

¸í·É ÆÄÀÏ·Î '--' ÁÖ¼®À» '#' ÁÖ¼®À¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù:

shell> replace " --" " #" -- text-file-with-funny-comments.sql

´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ¿ø·¡´ë·Î µ¹·Á³õÀÚ:

shell> replace " #" " --" -- text-file-with-funny-comments.sql

(** ÀϺΠ SQL¿¡¼­ »ç¿ëÇÏ´Â  -- ÁÖ¼®¹®¿¡¼­  ¹®Á¦°¡ »ý±æ  ¼ö ÀÖÀ¸¹Ç·Î
MYSQL¿¡¼­´Â #À» ÁÖ¼®¹®À¸·Î »ç¿ëÇÑ´Ù´Â ¸»ÀÌ´Ù **)

5.3 MysqlÀÌ µû¸£°í Àִ ǥÁØÀº ¹«¾ùÀΰ¡?

Entry level SQL92. ODBC level 0-2.


5.4 BLOB ¿Í TEXT ŸÀÔÀÇ Á¦ÇÑ
BLOB ³ª TEXT Çʵ忡¼­ GROUP BY ³ª ORDER  BY¸¦ »ç¿ëÇÏ±æ ¿øÇÏ
¸é ±× Çʵ带 °íÁ¤ ±æÀÌ °´Ã¼·Î ¸¸µé¾î¾ß  ÇÑ´Ù. ÀÌ·¸°Ô Çϴ ǥÁØÀûÀÎ ¹æ
¹ýÀº SUBSTRING Æã¼ÇÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ¿¹¸¦ º¸ÀÚ:

mysql>     select     comment     from     tbl_name    order     by
SUBSTRING(comment,20);

ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸é  Á¤·ÄÇÒ ¶§ ¿ÀÁ÷  Ã¹ ¹ø° max_sort_lengths  (±âº»°ª
=1024)¸¸À» °í·ÁµÈ´Ù.

BLOB ¿Í TEXT ´Â ±âº»°ªÀ» °¡Áú ¼ö ¾øÀ¸¸ç ¶ÇÇÑ ¾ðÁ¦³ª NULL Ä÷³ÀÏ
°ÍÀÌ´Ù.

BLOB and TEXT cannot have DEFAULT values  and will also always
be NULL columns.

5.5 COMMIT-ROLLBACK ¾øÀÌ ¾î¶»°Ô ´ëÄ¡ÇÒ ¼ö ÀÖÀ»±î?
MysqlÀº   COMMIT-ROLLBACK    À»   Áö¿øÇÏÁö    ¾Ê´Â´Ù.   ¹®Á¦´Â
COMMIT-ROLLBACKÀ» È¿°úÀûÀ¸·Î  ´Ù·ç±â À§Çؼ­´Â  Mysql¿¡¼­ ÇöÀç
»ç¿ëÇÏ´Â °Í°ú ¿ÏÀüÈ÷  ´Ù¸¥ Å×ÀÌºí ¼³°è°¡  ÇÊ¿äÇÏ´Ù´Â °ÍÀÌ´Ù. MysqlÀº
¶ÇÇÑ Å×À̺íÀ» ÀÚµ¿ Ŭ¸°¾÷ÇÏ´Â Ãß°¡ÀûÀÎ ½º·¹µå¿Í ´õ ¸¹Àº µð½ÃÅ©¸¦ »ç¿ë
ÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ·¯ÇÑ ±â´ÉÀº ÇöÀ纸´Ù mysqlÀ» 2-4¹è ´À¸®
°Ô ¸¸µç´Ù. MysqlÀº ´ëºÎºÐÀÇ ´Ù¸¥  SQL µ¥ÀÌÅͺ£À̽ºº¸´Ù ÈξÀ ´õ ºü¸£
´Ù.   (ÀüÇüÀûÀ¸·Î   ÃÖ¼Ò    2-3´ë   ºü¸§)   ÀÌ·¯ÇÑ   ÀÌÀ¯´Â   Mysql¿¡
COMMIT-ROLLBACKÀÌ ¾ø±â ¶§¹®ÀÌ´Ù.

´çºÐ°£Àº ¿ì¸®´Â SQL ¼­¹ö ¾ð¾îÀÇ  ¼º´ÉÀ» Çâ»ó½ÃÅ°´Âµ¥ ´õ ÁÖ·ÂÇÒ  °ÍÀÌ
´Ù. ´ëºÎºÐ COMMIT-ROLLBACK ±â´ÉÀÌ Á¤¸»·Î  ÇÊ¿äÇÑ °æ¿ì´Â µå¹°´Ù.
¶ÇÇÑ ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ ´õ ÁÁÀº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù.

ÀϹÝÀûÀ¸·Î Æ®·£Àè¼ÇÀÌ ÇÊ¿äÇÑ ·çÆ®´Â  LOCK TABLES¸¦ »ç¿ëÇØ Äڵ带
© ¼ö ÀÖ´Ù. ¶ÇÇÑ ·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÒ ¶§ Ä¿¼­¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¿ì¸®´Â Æ®·£Àè¼Ç°ú Ä¿¼­¸¦ TODO¿¡ ³Ö¾úÁö¸¸ ¿ì¼±±ÇÀÌ ³ôÀº °ÍÀº ¾Æ´Ï´Ù.
ÀÌ·¯ÇÑ ±â´ÉÀ» ¼öÇàÇÑ´Ù¸é CREATE TABLE  ÀÇ ¿É¼ÇÀ¸·Î µÉ °ÍÀÌ´Ù. ÀÌ
°ÍÀº ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÑ Å×ÀÌºí¿¡¼­¸¸ ÀÛµ¿ÇÏ¸ç ±× Å×À̺íÀº ´À¸®°Ô µÉ °ÍÀÌ
¶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù.

¿ì¸®´Â 100% º¸ÆíÀûÀÎ µ¥ÀÌÅͺ¸´Ù´Â Á¤¸»·Î ºü¸¥  µ¥ÀÌÅͺ£À̽º°¡ ÇÊ¿äÇÏ
´Ù. COMMIT-ROLLBACK ±â´ÉÀ» ¼öÇàÇÏ´õ¶óµµ ¼Óµµ¿¡ ¼Õ»óÀÌ ¾ø´Ù¸é ¿ì
¸®´Â ±×°ÍÀ» Áö¿øÇÒ °ÍÀÌ´Ù. ´çºÐ°£Àº ´õ Áß¿äÇÏ°Ô ÇؾßÇÒ ÀϵéÀÌ ¸¹ÀÌ ÀÖ
´Ù. ¿ì¸®°¡ ¾î¶² °Í¿¡ ¿ì¼±±ÇÀ» µÎ°í ÀÖ´ÂÁö´Â TODO¸¦ Âü°íÇÏÀÚ. »óÀ§ ´Ü
°èÀÇ Áö¿øÀ» ¹Þ´Â °í°´Àº ÀÌ°ÍÀ» ¹Ù²Ü ¼ö ÀÖÀ¸¸ç ¿ì¼±±ÇÀÌ º¯°æµÉ ¼öµµ ÀÖ
´Ù.

ÇöÀçÀÇ ¹®Á¦´Â ½ÇÁ¦·Î ROLLBACK ÀÌ´Ù. ·Ñ¹é¾øÀÌ LOCK TABLESÀ» ÀÌ
¿ëÇÏ¿© ¿©·¯ Á¾·ùÀÇ COMMIT¸¦  »ç¿ëÇÒ ¼ö ÀÖ´Ù.  ·Ñ¹éÀ» Áö¿øÇϱâ À§ÇØ
MysqlÀº ¾÷µ¥ÀÌÆ®°¡ µÈ ¸ðµç ¿¹Àü ·¹Äڵ带 ÀúÀåÇÏ°í ·Ñ¹éÀÌ ÀÏÀ̳µÀ» ¶§
½ÃÀÛ ½ÃÁ¡À¸·Î µ¹¾Æ°¥ ¼ö  ÀÖµµ·Ï ¹Ù²Ù¾î¾ß ÇÑ´Ù. ¿¹¸¦  µé¾î ÀÌ·¯ÇÑ °ÍÀº
ÀüÇô ¾î·ÆÁö ¾Ê´Ù.(ÇöÀçÀÇ isamlog ´Â  ÀÌ·± °æ¿ì¸¦ À§ÇØ »ç¿ëÇÒ ¼ö  ÀÖ´Ù)
±×·¯³ª ALTER/DROP/CREATE TABLE¿¡¼­ ·Ñ¹éÀ» ¼öÇàÇÏ´Â °ÍÀº ¹«Ã´
¾î·Æ´Ù.

·Ñ¹é »ç¿ëÀ» ÇÇÇϱâ À§ÇØ ´ÙÀ½ÀÇ Àü·«À» »ç¿ëÇÒ ¼ö ÀÖ´Ù:

1. Á¢±ÙÇϱ⠿øÇÏ´Â ¸ðµç Å×ÀÌºí¿¡ ¶ôÀ» »ç¿ë. LOCK TABLES ...  
2. Á¶°Ç Å×½ºÆ®(Test conditions)
3. ¸ðµç °ÍÀÌ Á¦´ë·Î µÈ´Ù¸é ¾÷µ¥ÀÌÆ®¸¦ ÇÑ´Ù.
4. UNLOCK TABLES

ÀϹÝÀûÀ¸·Î °¡´ÉÇÑ ·Ñ¹éÀ» ÀÌ¿ëÇØ  Æ®·£Àè¼ÇÀ» »ç¿ëÇÏ´Â °Íº¸´Ù´Â  ÀÌ·¯ÇÑ
¹æ¹ýÀÌ ÈξÀ ´õ ºü¸£´Ù. ±×·¸Áö¸¸ Ç×»ó »ç¿ë°¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ
¹ýÀ¸·Î ÇØ°áÇÒ ¼ö ¾ø´Â À¯ÀÏÇÑ »óȲÀº ¾÷µ¥ÀÌÆ®Áß ´©±º°¡°¡ ½º·¹µå¸¦ Á׿´
À» ¶§ÀÌ´Ù. ÀÌ·± °æ¿ì ¸ðµç ¶ôÀº ÇØÁ¦°¡ µÈ´Ù. ±×·¸Áö¸¸ ¾÷µ¥ÀÌÆ®ÀÇ ÀϺδÂ
½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

¹°·Ð ´ÜÀÏ ¿ÀÆÛ·¹À̼ǿ¡¼­ ·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÏ´Â Æã¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½ÀÇ Å×Å©´ÐÀ» »ç¿ëÇÏ¸ç ¸Å¿ì È¿À²ÀûÀÎ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¼ö ÀÖ´Ù:

- ÇöÀç °ª°ú °ü·ÃµÇ¾î ÀÖ´Â Çʵ带 ¼öÁ¤
- ½ÇÁ¦·Î º¯È­°¡ »ý°åÀ»¶§¸¸ Çʵ带 ¾÷µ¥ÀÌÆ®

¿¹¸¦ µé¾î, ¾î¶² °í°´ Á¤º¸¸¦ ¾÷µ¥ÀÌÆ® ÇÒ  ¶§ ¿ÀÁ÷ ¹Ù²ï µ¥ÀÌÅ͸¸ ¾÷µ¥ÀÌ
Æ®¸¦ ÇÑ´Ù. ±×¸®°í
For  example,   when we   are  doing   updates  on  some   customer
information, we update only the  customer data that have  changed and
test only that  none of the  changed data, or  data that depend  on the
changed data, have changed compared to the original row.
º¯È­µÈ µ¥ÀÌÅÍÀÇ Å×½ºÆ®´Â UPDATE ¹®¿¡¼­ WHRE ÀýÀ» »ç¿ëÇÏ¿© ÇÒ ¼ö
ÀÖ´Ù. ·¹Äڵ尡 ¾÷µ¥ÀÌÆ®µÇÁö ¾Ê¾Ò´Ù¸é Ŭ¶óÀ̾ðÆ®¿¡  ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö
¸¦ ÁØ´Ù: "´ç½ÅÀÌ ¹Ù²Û µ¥ÀÌÅÍ ÀϺΰ¡ ´Ù¸¥  »ç¿ëÀÚ¿¡ ÀÇÇØ ¹Ù²î¾ú½À´Ï´Ù".
±×·¯°í³ª¼­ ¿ì¸®´Â À©µµ¿ì¿¡¼­ ¿¹ÀüÀÇ ·¹ÄÚµå¿Í ÇöÀçÀÇ ·¹Äڵ带 ºñ±³ÇÏ¿©
º¸¿©ÁØ´Ù. ±×·¯¸é »ç¿ëÀÚ´Â ¾î¶² °í°´ Á¤º¸  ·¹Äڵ带 »ç¿ëÇÒÁö °áÁ¤ÇÒ ¼ö
ÀÖ´Ù.

ÀÌ·¸°Ô Çϸé "Ä÷³ ¶óÅ·"°ú ºñ½ÁÇÏ´Ù. ±×·¸Áö¸¸ ½ÇÁ¦·Î´Â  ´õ ºü¸£´Ù. ¿Ö³Ä
Çϸé ÇöÀçÀÇ °ª°ú °ü·ÃµÇ¾î ÀÖ´Â °ªÀÇ  Ä÷³¸¸ ¾÷µ¥ÀÌÆ®Çϱ⠶§¹®ÀÌ´Ù. ÀÌ
·¸³ª ÀüÇüÀûÀÎ ¾÷µ¥ÀÌÆ®¹®Àº ´ÙÀ½°ú ºñ½ÁÇÒ °ÍÀÌ´Ù:

UPDATE tablename SET pay_back=pay_back+'relative change';

UPDATE customer
 SET
   customer_date='current_date',
   address='new address',
   phone='new phone',
   money_he_owes_us=money_he_owes_us+'new_money'
 WHERE
   customer_id=id AND address='old address' AND phone='old phone';

Áö±Ý º¸µíÀÌ   ÀÌ·¸°Ô ÇÏ¸é   ¸Å¿ì È¿À²ÀûÀÌ¸ç  ¼³»ç  ´Ù¸¥  Å¬¶óÀ̾ðÆ®°¡
pay_back À̳ª money_he_owes_us Ä÷³ÀÇ  °ªÀ» ¹Ù²Ù¾úÀ» ¶§¶óµµ Á¦´ë·Î
ÀÛµ¿ÇÑ´Ù.

´ëºÎºÐÀÇ °æ¿ì, »ç¿ëÀÚ´Â Å×ÀÌºí¿¡¼­ À¯ÀÏÇÑ °ª(identifiers)À» °ü¸®ÇÏ±â  À§
ÇØ ·Ñ¹é°ú Å×ÀÌºí ¶ôÀ» »ç¿ëÇÏ°í  ½Í¾îÇÑ´Ù. ÀÌ°ÍÀº AUTO_INCREMENT
Ä÷³°ú SQL  LAST_INSERT_ID()  Æã¼Ç,  ¶Ç´Â mysql_insert_id()  ÀÇ C
API  Æã¼ÇÀ»  »ç¿ëÇÏ¿©  ´õ¿í   È¿À²ÀûÀ¸·Î »ç¿ëÇÒ   ¼ö ÀÖ´Ù.    18.4.49
[mysql_insert_id()] Âü°í.

TcX¿¡¼­´Â ¾ðÁ¦³ª ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö Àֱ⠶§¹®¿¡ °á°í low-level ¶ô
À» ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù. ¾î¶² °æ¿ì¿¡´Â Á¤¸»·Î ·Î¿ì-¶ôÀÌ ÇÊ¿äÇÏ´Ù. ±×·¸Áö
¸¸ ÀÌ·± °æ¿ì´Â ±Ø¼Ò¼öÀÌ´Ù. ·Î¿ì-·¹º§ ¶ôÀ» ¿øÇϸé Å×ÀÌºí¿¡¼­ Ç÷¡±× ÄÃ
·³À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°´Ù:

UPDATE tbl_name SET row_flag=1 WHERE id=ID;

¸¸¾à row°¡ ¹ß°ßµÇ°í row_flag°¡ ¿ø·¡ÀÇ row¿¡¼­ ÀÌ¹Ì 1ÀÌ ¾Æ´Ï¶ó¸é ¿µÇâ
À» ¹ÞÀº rowÀÇ ¼ýÀڷμ­ 1ÀÏ ¹ÝȯÇÑ´Ù.

MySQL returns 1  fro the  number of  affected rows  if the  row was
found and row_flag wasn't already 1 in the original row.

Modify Delete Post Reply Backward Forward List
Powered by Kang Jul Ki