ÇöÀç°Á : UNIX ¼ÒÄÏ ÀÀ¿ë ÇÁ·Î±×·¡¹Ö ÀÌÀü 4.5 ¼ÒÄÏ ÇÔ¼ö 󸮽ð£ ÃøÁ¤
4.6 ³×Æ®¿÷ µ¥ÀÌÅͺ£À̽º ¾×¼¼½º ÀÀ¿ë
¢º 4.6Àý¿¡¼´Â ³×Æ®¿÷À» ÅëÇÏ¿© ¼¹ö¿¡ ÀÖ´Â µ¥ÀÌÅͺ£À̽º(DB: database) ÀڷḦ °Ë»öÇϰųª »õ·Î¿î ÀڷḦ Ãß°¡ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù.
¢º µ¥ÀÌÅͺ£À̽º¿¡ ÀڷḦ ÀÔÃâ·ÂÇϱâ À§Çؼ DBMS(DataBase Management System)¿Í SQL(Structured Query Language)¹®À» »ç¿ëÇÑ´Ù.
¢º º» ¿¹Á¦ÀÇ ¼¹ö ÇÁ·Î±×·¥¿¡¼´Â SQLÀ» Áö¿øÇÏ´Â c ¾ð¾îÀÎ ESQL/CÀ» »ç¿ëÇÑ´Ù.
4.6.1 Ç¥ÁØ SQL¹®
¢º SQLÀº ¼³Ä¡µÈ DBMS Á¾·ù¿¡ ¹«°üÇÏ°Ô DB ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ¸í·É¹®ÀÇ ÁýÇÕÀ¸·Î Ç¥ÁØ SQLÀÌ Á¦°øÇÏ´Â ÁÖ¿ä ¸í·É¹®°ú ±â´ÉÀ» Ç¥ 4-2¿¡ Á¤¸®ÇÏ¿´´Ù.
±¸ºÐ |
SQL ¹® |
»ç¿ë¹ý |
±â ´É |
ÀÚ ·á Á¤Àǹ® |
CREATE DATABASE | CREATE DATABASE <DB¸í> | DB¸¦ »õ·Î ¸¸µç´Ù. |
DATABASE | DATABASE <DB¸í> [EXCLUSIVE] | »ç¿ëÇÒ DB¸¦
¼±ÅÃÇÑ´Ù. [EXCLUSIVE] ¿É¼ÇÀº ÇöÀç »ç¿ëÀÚ¸¸ DB¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. |
|
CREATE TABLE | CREATE TABLE <Å×À̺í¸í>
(<Ä®·³¸í>, <ÀÚ·áÇüÅÂ> ) |
ÇöÇà DB¿¡ »õ·Î¿î Å×À̺íÀ» »ý¼ºÇÑ´Ù. | |
DROP TABLE | DROP TABLE <Å×À̺í¸í> | ÇöÇà DB¿¡¼ ÁöÁ¤ÇÑ Å×À̺íÀ» »èÁ¦ÇÑ´Ù. | |
DROP DATABASE | DROP DATABASE <DB¸í> | ÁöÁ¤ÇÑ DATABASE¸¦ »èÁ¦ÇÑ´Ù. | |
ÀÚ ·á 󸮹® |
DELETE | DELETE FROM <Å×À̺í¸í>
WHERE <Ä®·³¸í> = <°ª> |
FROM¿¡ ÁöÁ¤ÇÑ Å×ÀÌºí¿¡¼ WHERE Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ÇàÀ» »èÁ¦ÇÑ´Ù. |
INSERT | INSERT INTO <Å×À̺í¸í> ( <Ä®·³¸í>) VALUES (<°ª>) | INTO¿¡ ÁöÁ¤ÇÑ Å×ÀÌºí¿¡ »õ·Î¿î ÇàÀ» Ãß°¡ÇÑ´Ù. | |
SELECT | SELECT <Ä®·³¸í>
FROM <Å×À̺í¸í> WHERE <Ä®·³¸í> = <°ª> |
FROM¿¡ ÁöÁ¤ÇÑ Å×ÀÌºí¿¡¼ WHERE Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ÇàÀ» ¼±ÅÃÇÑ´Ù. | |
UPDATE | UPDATE <Å×À̺í¸í>
SET <Ä®·³¸í> = <°ª> WHERE <Ä®·³¸í> = <°ª> |
UPDATE¿¡ ÁöÁ¤ÇÑ Å×ÀÌºí¿¡¼ WHERE Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ÇàÀÇ ³»¿ëÀ» SET Àý¿¡¼ ÁöÁ¤ÇÑ °Í°ú °°ÀÌ º¯°æÇÑ´Ù. |
Ç¥ 4-2 ÁÖ¿ä Ç¥ÁØ SQL ¹®
¢º ¿¹¸¦µé¾î »õ·Î¿î DB¸¦ Çϳª ¸¸µé ¶§¿¡´Â CREATE DATA- BASE¹®À» »ç¿ëÇÑ´Ù.
¢º DB³»¿¡ »õ·Î¿î Å×À̺íÀ» »ý¼ºÇÒ ¶§¿¡´Â CREATE TABLE¹®À» ÀÌ¿ëÇÏ°í Å×ÀÌºí¿¡ ¾î¶² Ç׸ñÀ» Ãß°¡ÇÏ·Á¸é INSERT¹®À» »ç¿ëÇÑ´Ù.
¢º ¾Æ·¡´Â UNIV(´ëÇÐ)À̶ó´Â DB¸¦ »õ·Î ¸¸µé°í ¿©±â¿¡ DEPT(ºÎ¼)¶ó´Â Å×À̺íÀ» ¸¸µç ÈÄ DEPTÀÇ ID, dept_ID°¡ 01ÀÌ°í ºÎ¼¸í dept_NameÀÌ 'Ãѹ«°ú'ÀÎ µ¥ÀÌÅÍ Ç׸ñÀ» Ãß°¡Çϴ ǥÁØ SQL ¹®À» ³ªÅ¸³Â´Ù.
¢º ¾Æ·¡ÀÇ Å×À̺í DEPT¿¡¼ dept_ID´Â µÎ ±ÛÀÚÀÌ°í, dept_ NameÀ» 20ÀÚ·Î ÁöÁ¤ÇÏ¿´´Ù.
CREATE DATABASE UNIV
CREATE TABLE DEPT (dept_ID char(2), dept_Name char(20)) INSERT INTO DEPT VALUES ('01', 'Ãѹ«°ú') |
¢º Å×ÀÌºí³»ÀÇ ¾î¶² µ¥ÀÌÅÍ Ç׸ñ °ªÀ» ¹Ù²Ü ¶§´Â UPDATE¸¦ »ç¿ëÇϴµ¥ ´ÙÀ½Àº DEPT Å×ÀÌºí¿¡¼ dept_ID°¡ 01ÀÎ ÇàÀÇ dept_NameÀ» '°æ¸®°ú'·Î º¯°æÇÏ´Â ¿¹Á¦ÀÌ´Ù.
UPDATE DEPT SET dept_Name = '°æ¸®°ú' WHERE dept_ID = '01' |
¢º Å×ÀÌºí¿¡¼ ¾î¶² Ä®·³ÀÌ ¾î¶² Á¶°ÇÀ» ¸¸Á·ÇÏ´Â µ¥ÀÌÅ͸¦ °Ë»öÇϱâ À§Çؼ´Â SELECT¸¦ ÀÌ¿ëÇÑ´Ù.
¢º SELECT µÚ¿¡´Â Ãâ·ÂÇÒ Ä®·³ÀÇ ¸ñ·ÏÀÌ, FROM µÚ¿¡´Â °Ë»öÇÒ Å×ÀÌºí ¸íÀÌ, ±×¸®°í WHERE µÚ¿¡´Â °Ë»ö Á¶°ÇÀ» ÁöÁ¤ÇÑ´Ù.
¢º ¿¹¸¦µé¾î Å×À̺í DEPT¿¡¼ dept_Name Ä®·³ÀÌ 'Ãѹ«°ú'ÀÎ ÇàÀ» °Ë»öÇϱâ À§ÇÑ SQL¹®Àº ´ÙÀ½°ú °°´Ù.
SELECT dept_Name,
dept_ID FROM DEPT WHERE dept_Name = 'Ãѹ«°ú' |
4.6.2 ESQL/C
¢º ESQL/C´Â c ¾ð¾î ÇÁ·Î±×·¥¿¡¼ SQL ¸í·É¹®À» Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ±â´ÉÀ» È®ÀåÇÑ ¾ð¾î·Î c ¾ð¾îÀÇ ÀϹÝÀûÀÎ ±â´ÉÀ» Áö¿øÇϸç SQL¹®À» »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÔ¼ö°¡ Ãß°¡µÇ¾ú´Ù(ESQL/C·Î ÀÛ¼ºÇÑ ÆÄÀÏÀº .ecÈ®ÀåÀÚ¸¦ °®´Â´Ù).
¢º ESQL/C ÇÁ·Î±×·¥ ³»¿¡¼ SQL¹®Àº $·Î ½ÃÀÛÇØ¾ß Çϴµ¥ ¿¹¸¦µé¾î DEPT¶ó´Â Å×ÀÌºí¿¡ dept_ID °ªÀÌ 01ÀÎ 'Ãѹ«°ú' Ç׸ñÀ» Ãß°¡ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
$insert into DEPT values ( '01', 'Ãѹ«°ú'); |
¡¡
¢º ¶Ç´Â $´ë½Å exec sqlÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
exec sql insert into DEPT values ( '01', 'Ãѹ«°ú'); |
¡¡
¢º SQL¹® ³»¿¡¼ c ¾ð¾î ÇÁ·Î±×·¥¿¡¼ Á¤ÀÇÇÑ º¯¼öµéÀ» »ç¿ëÇÒ ¼ö Àִµ¥ ÀÌ·¯ÇÑ c ¾ð¾î º¯¼ö¸¦ È£½ºÆ® º¯¼ö¶ó°í ÇÑ´Ù.
¢º È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÒ ¶§¿¡´Â º¯¼ö ŸÀÔ ¾Õ¿¡ $¸¦ ºÙ¿©¾ß Çϸç, SQL¹®¿¡¼ ÀÌ º¯¼ö¸¦ »ç¿ëÇÒ °æ¿ì¿¡´Â : ¸¦ ºÙ¿©¾ß ÇÑ´Ù.
¢º ¿¹¸¦µé¾î È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÏ¿© DEPT Å×ÀÌºí¿¡ 'Ãѹ«°ú'¸¦ Ãß°¡Çϱâ À§Çؼ´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
¢º ¾Æ·¡¿¡¼ È£½ºÆ® º¯¼ö´Â id¿Í name µÎ °³ÀÌ´Ù.
# ID_LEN 2 # NAME_LEN 20 $char id[ID_LEN], name[NAME_LEN];
strcpy(id, "01"); strcpy(name, "Ãѹ«°ú"); $insert into DEPT values ( :id, :name ) ; |
¢º Ç¥ 4-3¿¡ SQL ¹®¿¡¼ »ç¿ëÇÏ´Â º¯¼öÀÇ Á¾·ù¿Í À̸¦ Áö¿øÇϱâ À§ÇÑ ESQL/CÀÇ È£½ºÆ® º¯¼öµéÀ» Á¤¸®ÇÏ¿´´Ù.
SQL º¯¼ö |
È£½ºÆ® º¯¼ö |
¼³ ¸í |
CHAR(n), CHARACTER(n) |
char[n+1], char* |
1ºÎÅÍ 32,767±îÁö °¡º¯ ±æÀÌÀÇ ¹®ÀÚ¿À» ÀúÀåÇÑ´Ù. C¾ð¾î¿¡¼ ¹®ÀÚ¿Àº ³Î(NULL)·Î ³¡³ª¾ß ÇϹǷÎ, CHAR(n) °ªÀ» ¹Þ´Â È£½ºÆ® ¹è¿Àº (n+1) Å©±â¸¦ °¡Á®¾ß ÇÔ |
SMALLINT | short int | -32,767¿¡¼ 32,767ÀÇ ¹üÀ§¸¦ °®´Â Á¤¼öÇü |
INTEGER | long int | -2,147,483,647¿¡¼ 2,147,483,647ÀÇ ¹üÀ§¸¦ °®´Â Á¤¼öÇü |
SMALLFLOAT REAL | float | 7ÀÚ¸®ÀÇ À¯È¿ ÀÚ¸®¼ö¸¦ °®´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö |
FLOAT, DOUBLE PRECISION |
double | 14ÀÚ¸®ÀÇ À¯È¿ ÀÚ¸´¼ö¸¦ °®´Â ºÎµ¿ ¼Ò¼öÁ¡ ¼ö |
SERIAL | long int | SERIAL ÀÚ·áÇüÅ´ »ç¿ëÀÚ°¡ INSERT ¹®À» ½ÇÇàÇÒ ¶§ ESQL/C°¡ ÀÚµ¿À¸·Î ¹èÁ¤ÇÏ´Â ¼øÂ÷ Á¤¼ö |
DATE | long int | 1899³â 12¿ù 31ÀÏ ÀÌÈÄÀÇ ³¯Â¥¸¦ Ç¥ÇöÇϸç 4¹ÙÀÌÆ® int¿¡ ÀúÀå |
DECIMAL DEC NUMERIC |
dec_t, struct decimal |
¼Ò¼öÁ¡ÀÇ À¯¹«¿¡ °ü°è¾øÀÌ 32°³ÀÇ À¯È¿¼ýÀÚ¸¦ °®´Â ¼ö¸¦ ³ªÅ¸³¿ |
MONEY | dec_t, struct decimal |
MONEY(m,n)ÀÇ ÇüÅ·Π³ªÅ¸³»¸ç, °íÁ¤µÈ Á¤¹Ðµµ m°ú ¼Ò¼öÀÚ¸® ¼ö nÀ» ÀÇ¹Ì |
DATETIME | dtime_t, struct dtime |
ÇÑ ½ÃÁ¡À» "³¯Â¥ ½Ã:ºÐ:ÃÊ"·Î ³ªÅ¸³¿ |
INTERVAL | intrvl_t, struct intrvl | ±â°£À» ³ªÅ¸³»´Â º¯¼ö |
Ç¥ 4-3 È£½ºÆ® º¯¼ö Á¾·ù
¢º ESQL/C¿¡¼´Â óÀ½ SQL¹®À» ½ÇÇàÇϱâ Àü¿¡ database ¹®À» »ç¿ëÇÏ¿© ¾ÕÀ¸·Î »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽º¸¦ ¼±¾ðÇØ¾ß ÇÑ´Ù.
¢º ÇÁ·Î±×·¥À» Á¾·áÇϱâ Àü¿¡ close database ¹®À¸·Î ¼±ÅÃÇß´ø µ¥ÀÌÅͺ£À̽º¸¦ ´Ý¾Æ¾ß ÇÑ´Ù.
¢º ¿¹¸¦µé¾î Test_DB¶ó´Â DB¸¦ ¼±ÅÃÇÏ°í ´ÝÀ¸·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
$database Test_DB;
{ /* Test_DB »ç¿ë */ } $close database; |
¢º ÇÑÆí ESQL/C·Î ÀÛ¼ºµÈ ÇÁ·Î±×·¥ÀÇ ÄÄÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
esql -o Ãâ·ÂÆÄÀÏ¸í ¼Ò½ºÆÄÀϸí |
¡¡
4.6.3 ÇÁ·Î±×·¥ °³¿ä
¢º ¿©±â¼´Â ³×Æ®¿÷À» ÅëÇÏ¿© µ¥ÀÌÅͺ£À̽º ÀڷḦ °Ë»öÇϰųª ÀڷḦ Ãß°¡ÇÏ´Â ¼ºñ½º¸¦ Á¦°øÇÏ´Â ¼¹ö ÇÁ·Î±×·¥, db_server.ec¿Í À̸¦ ÀÌ¿ëÇϴ Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ db_ client.cÀÇ °³¿ä¸¦ ¼³¸íÇÏ°Ú´Ù.
¢º db_server.ec¿¡¼´Â »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽º¸¦ ¼±¾ðÇÏ°í Ŭ¶óÀ̾ðÆ®¿Í Á¢¼ÓÇϱâ À§ÇÑ ¼ÒÄÏÀ» °³¼³ÇÑ ÈÄ Å¬¶óÀ̾ðÆ®¿¡¼ ¿ä±¸ÇÏ´Â DB ¾×¼¼½º¸¦ ¼ºñ½ºÇÑ´Ù.
¢º º» ¿¹Á¦¿¡¼´Â Ŭ¶óÀ̾ðÆ®°¡ ¿ä±¸ÇÏ´Â µ¿ÀÛÀ¸·Î 1) ÀÚ·áÃß°¡¿Í 2) ÀÚ·á°Ë»ö µÎ °¡Áö¸¸ ±¸ÇöÇÏ¿´´Ù.
¢º ¼¹ö´Â µÎ °¡Áö Áß ÇϳªÀÇ µ¿ÀÛÀ» ½ÇÇàÇÏ°í ±× °á°ú¸¦ Ŭ¶óÀ̾ðÆ®¿¡°Ô ¾Ë·ÁÁØ´Ù.
¢º Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ db_client.c¿¡¼´Â ¸ÕÀú ¼ÒÄÏÀ» »ý¼ºÇÏ°í ¼¹ö¿¡ Á¢¼ÓÇÑ´Ù.
¢º »ç¿ëÀÚ È¸é¿¡ 1) ÀÚ·áÃß°¡¿Í 2) ÀÚ·á°Ë»ö ¸Þ´º¸¦ º¸¿©ÁÖ°í ¸Þ´º¼±Åÿ¡ µû¶ó ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ Ãß°¡·Î ÀԷ¹޴´Ù.
¢º ÀÚ·á ÀÔ·ÂÀÌ ³¡³ª¸é ¼¹ö·Î µ¿ÀÛÀ» ¿ä±¸(request)ÇÏ°í ±× °á°ú(response)¸¦ ¼ö½ÅÇÏ¿© ȸ鿡 Ãâ·ÂÇÑ´Ù.
¢º ¾Æ·¡´Â ¼¹ö ÇÁ·Î±×·¥ÀÇ ½ÇÇà ¿¹·Î ¼¹ö°¡ Æ÷Æ®¹øÈ£·Î 3000À» »ç¿ëÇÏ´Â °æ¿ìÀÌ´Ù.
db_server 3000 |
¢º ´ÙÀ½Àº Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥(db_client.c)ÀÇ ½ÇÇàȸéÀ¸·Î ¸ÕÀú ¸Þ´º 1À» ¼±ÅÃÇÏ¿© ºÎ¼¸í(dept_Name)À» Ãß°¡ÇÏ´Â °ÍÀ» º¸ÀÌ°í ÀÖ´Ù.
# db_client >> ÀÚ·áÃß°¡ ¹× Á¶È¸ ¸Þ´º
1. ÀÚ·áÃß°¡
2. ÀÚ·áÁ¶È¸
>> ¸Þ´º ¼±Åà : 1
>> Ãß°¡ÇÒ ºÎ¼ ID : 01
>> ºÎ¼¸í : Ãѹ«°ú
¢º ¾Æ·¡´Â ¸Þ´º 2¸¦ ¼±ÅÃÇÏ°í ºÎ¼ ID°¡ 01ÀÎ ºÎ¼¸íÀ» Á¶È¸ÇÏ´Â °ÍÀ» º¸ÀÌ°í ÀÖ´Ù.
>> ÀÚ·áÃß°¡ ¹×
Á¶È¸ ¸Þ´º
1. ÀÚ·áÃß°¡ 2. ÀÚ·áÁ¶È¸ >> ¸Þ´º ¼±Åà : 2 >> Á¶È¸ÇÒ ºÎ¼ ID : 01 ==> Á¶È¸ °á°ú : Ãѹ«°ú |
4.6.4 ¼¹ö ÇÁ·Î±×·¥ ÁÖ¿äºÎºÐ ¼³¸í
¢º ¸ÕÀú db_server.ec¿¡¼ »ç¿ëÇÒ Çì´õ ÆÄÀÏÀ» ¼±¾ðÇØ¾ß ÇÑ´Ù.
¢º ESQL/C ÇÁ·Î±×·¥¿¡¼´Â SQL ¹®ÀÌ ½ÇÇàµÈ µÚ °á°ú Äڵ尡 Ç×»ó Àü¿ªº¯¼ö sqlca¿¡ ÀúÀåµÇ¸ç ÀÌ º¯¼ö¸¦ »ç¿ëÇϱâ À§ÇÏ¿©´Â Çì´õ ÆÄÀÏ sqlca.h¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù.
¢º sqlca.h¿Ü¿¡ sqlda.h, sqltypes.h µîÀÇ Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÒ ¼ö Àִµ¥ sqlda.h¿¡´Â µ¿ÀûÀ¸·Î Á¤ÀÇµÈ SQL ¹®À» ½ÇÇàÇϱâ À§ÇÑ ±¸Á¶Ã¼°¡ Á¤ÀǵǾî ÀÖ´Ù.
¢º sqltypes.h¿¡´Â SQL Ä®·³ÀÇ Á¾·ù°¡ Á¤ÀǵǾî ÀÖ´Ù.
¢º ÇÑÆí SQL °ü·Ã Çì´õ ÆÄÀÏÀº ¾Æ·¡¿Í °°ÀÌ #include ¹®ÀÌ ¾Æ´Ñ $include ¹®À» »ç¿ëÇØ¾ß ÇÑ´Ù.
$include sqlca.h; |
¢ºÅ¬¶óÀ̾ðÆ®´Â DB ¾×¼¼½º¸¦ ÇÒ ¶§¸¶´Ù '¸Þ´º¹øÈ£\nºÎ¼ID\ºÎ¼¸í\n'ÀÇ ÇüÅ·Π±¸¼ºµÈ ¸Þ½ÃÁö¸¦ ¼¹ö·Î º¸³»µµ·Ï ÇÏ¿´´Ù.
¢º¸Þ´º¹øÈ£´Â 1À̸é ÀÚ·áÃß°¡ÀÌ°í 2À̸é ÀÚ·áÁ¶È¸¸¦ ³ªÅ¸³½´Ù.
¢º ¼¹ö´Â ¸ÕÀú Ŭ¶óÀ̾ðÆ®°¡ ¾î¶² ¸Þ´º¸¦ ¼±ÅÃÇß´ÂÁö¸¦ ¾Ë¾Æ³»¾ß Çϴµ¥ À̸¦ À§Çؼ »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö readline()À» »ç¿ëÇÑ´Ù.
¢º readline()Àº ¼ÒÄÏ¿¡ µµÂøÇÑ µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÑ Å©±â¸¸Å Àд ÇÔ¼öÀε¥ ¿¹¸¦µé¾î ¼ÒÄϹøÈ£ s¸¦ ÅëÇؼ ÀÔ·ÂµÈ µ¥ÀÌÅÍÀÇ ¾Õ¿¡¼ºÎÅÍ ¼¼ ¹ÙÀÌÆ®(Áï, ¸Þ´º¹øÈ£\n)¸¦ Àоî menu¶ó´Â º¯¼ö¿¡ ÀúÀåÇÏ·Á¸é ¾Æ·¡¿Í °°ÀÌ ÇÑ´Ù(¸Þ´º¹øÈ£´Â ÇÑ ÀÚ¸® ¼ö¶ó°í °¡Á¤).
¢º ÇÑÆí readline()Àº user_func.h¿¡ Á¤ÀǵǾî ÀÖ´Ù.
n = readline(s, menu, 3); |
¢º °°Àº ¹æ¹ýÀ¸·Î dept_ID¿Í dept_NameÀ» readline()À» ÀÌ¿ëÇÏ¿© Àд´Ù.
¢º¿¹¸¦µé¾î Ŭ¶óÀ̾ðÆ®°¡ ¸Þ´º 1) ÀÚ·áÃß°¡¸¦ ¼±ÅÃÇÑ °æ¿ì ¼¹ö´Â ¾Æ·¡¿Í °°ÀÌ Ãß°¡ÇÒ ÀڷḦ ÀÐÀº ÈÄ insert¸¦ ½ÇÇàÇÑ´Ù.
¢º ¸Þ´º 2) ÀÚ·áÁ¶È¸¸¦ ¼±ÅÃÇÑ °æ¿ì¿¡´Â select¸¦ »ç¿ëÇÏ¿© DEPT DB¿¡¼ dept_ID°¡ idÀÎ ºÎ¼¸¦ Á¶È¸ÇÏ¿© ÇØ´ç ºÎ¼¸í(dept_Name)À» º¯¼ö name¿¡ ÀúÀåÇÑ´Ù.
switch((int)menu[0] -
'0') { /*------------------------------------------ ÀÚ·á Ãß°¡ ¿ä±¸ ------------------------------------------*/ case 1: /* ºÎ¼¸í Àбâ */ n = readline(s, name, NAME_LEN+2); name[n-1] = '\0'; /* SQL ¹® ¼öÇà */ $insert into DEPT values (:id,
:name); /*------------------------------------------- ÀÚ·á Á¶È¸ ¿ä±¸ ----------------------------------------*/ case 2: /* SQL ¹® ¼öÇà */ $select dept_Name into :name from DEPT where dept_ID = :id ; |
¢º ¸Þ´º¿¡ µû¸¥ 󸮰¡ ³¡³µÀ¸¸é ¼¹ö´Â Ŭ¶óÀ̾ðÆ®¿¡°Ô SQL ¹®ÀÇ ½ÇÇà°á°ú¸¦ ¾Ë·ÁÁÖ±â À§ÇÏ¿© Ŭ¶óÀ̾ðÆ®¿¡°Ô Àü¼ÛÇÒ ¸ðµç ¸Þ½ÃÁö¸¦ ¹®ÀÚ ½ºÆ®¸µ º¯¼öÀÎ msg¿¡ ÀúÀåÇÏ¿© À̸¦ Ŭ¶óÀ̾ðÆ®·Î Àü¼ÛÇÑ´Ù.
¢º SQL ¹® ó¸®Áß ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì´Â msg¿¡ ¿À·ù ¸Þ½ÃÁö¸¦ ½Ç¾î Àü¼ÛÇÑ´Ù.
¢º db_server.ec ÇÁ·Î±×·¥ ¸®½ºÆ®
4.6.5 Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ ÁÖ¿äºÎºÐ ¼³¸í
¢º Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ db_client.c¿¡¼´Â ¸ÕÀú ȸ鿡 ¸Þ´º¸¦ º¸¿©ÁÖ°í ¸Þ´º¸¦ ¼±ÅÃÇϵµ·Ï ÇÏ´Â »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö printMenu()¸¦ È£ÃâÇÑ´Ù.
¢º ¼±ÅÃÇÑ ¸Þ´º°ªÀ» »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö getMenu() ÇÔ¼ö¸¦ ÅëÇØ ÀԷ¹޴µ¥ ±× °ªÀÌ À¯È¿ÇÑ °æ¿ì¿¡´Â ÇØ´ç ¸Þ´º ¹øÈ£¸¦ ¸®ÅÏÇÏ°í, À¯È¿ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â 0À» ¸®ÅÏÇÑ´Ù.
¢º printMenu()¿Í getMenu()´Â ¾Æ·¡¿Í °°´Ù.
¢º ¿©±â¼ gets()´Â Å°º¸µå·ÎºÎÅÍ ÇÑ ÇàÀÇ ¹®ÀÚ¿À» ÀԷ¹޴ ÇÔ¼öÀÌ´Ù.
void printMenu(void) { printf("\n >> ÀÚ·áÃß°¡ ¹× Á¶È¸ ¸Þ´º\n");
printf("\t1. ÀÚ·áÃß°¡\n");
printf("\t2. ÀÚ·áÁ¶È¸\n");
printf("\n >> ¸Þ´º ¼±Åà : ");
}
int getMenu(void) {
char tmp[2];
gets(tmp);
tmp[1] = '\0';
if (tmp[0] != '1' && tmp[0] != '2' ) return 0;
else return (int)(tmp[0] - '0');
}
¢º »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¸Þ´º Á¾·ù¿¡ µû¶ó ÇÊ¿äÇÑ ÀڷḦ Ãß°¡·Î ÀԷ¹޴´Ù.
¢º 1) ÀÚ·áÃß°¡¸¦ ¼±ÅÃÇÑ °æ¿ì¿¡´Â Ãß°¡ÇÒ ºÎ¼ÀÇ ID¿Í ºÎ¼¸íÀ» ÀԷ¹ްí 2) ÀÚ·áÁ¶È¸¸¦ ¼±ÅÃÇÑ °æ¿ì¿¡´Â Á¶È¸ÇÒ ºÎ¼ÀÇ ID¸¦ ÀԷ¹޴´Ù.
case 1: /* ÀÚ·áÃß°¡¸¦ À§ÇØ ºÎ¼ID¿Í À̸§À» ÀԷ¹޴´٠*/ printf("\n >> Ãß°¡ÇÒ ºÎ¼ ID : "); gets(dept_ID); printf("\n >> ºÎ¼¸í : "); gets(dept_Name); case 2: /* Á¶È¸ÇÒ ºÎ¼ ID ÀÔ·Â */ printf("\n >> Á¶È¸ÇÒ ºÎ¼ ID : "); gets(dept_ID); |
¢º ¾Æ·¡´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¸í·É¹®À» ¹®ÀÚ¿·Î ¸¸µé°í À̸¦ ¼¹ö·Î Àü¼ÛÇÏ´Â ºÎºÐÀÌ´Ù.
sprintf(msg,
"%d\n%s\n%s\n", menu, dept_ID, dept_Name);
msgLen = strlen(msg); send(s, msg, msgLen, 0) != msgLen); |
¢º ¾Æ·¡´Â 2) ÀÚ·áÁ¶È¸ ¸Þ´º¸¦ ¼±ÅÃÇÑ °æ¿ì¿¡ ¼¹ö°¡ º¸³»¿Â Á¶È¸°á°ú¸¦ recv()¸¦ ÀÌ¿ëÇÏ¿© ¼ö½ÅÇÏ°í À̸¦ ȸ鿡 Ãâ·ÂÇÏ´Â ºÎºÐÀÌ´Ù.
recv(s, msg,
MSG_LEN+1, 0); printf("\tÁ¶È¸ °á°ú : %s\n\n", msg); |
¢º db_client.c ÇÁ·Î±×·¥ ¸®½ºÆ®
ÇöÀç°Á : UNIX ¼ÒÄÏ ÀÀ¿ë ÇÁ·Î±×·¡¹Ö ÀÌÀü 4.5 ¼ÒÄÏ ÇÔ¼ö 󸮽ð£ ÃøÁ¤