ÀÚÁÖ¾²´Â ¸í·É Á¤¸® root ¾ÏÈ£ º¯°æ½Ã update user set password=password('new-password') where user ='root'; flush privileges; # root¾ÏÈ£¼³Á¤ - root·Î ·Î±×ÀÎÇÏ¿© ÇؾßÇÔ % mysqladmin -u root password 'º¯°æ¾ÏÈ£' % mysqladmin -u root -p±âÁ¸¾ÏÈ£ password 'º¯°æ¾ÏÈ£' mysql ¾ÏÈ£ º¯°æ ¹æ¹ý 1. # mysql -u root -p mysql <- DB Á¢¼Ó 2. mysql> update user set password=password('xxxxx') where user = 'root' <- 'xxxx' º¯°æ¾ÏÈ£ ÀÔ·Â 3. mysql> flush privileges; <- ±ÇÇÑ Reload 4. º¯°æ ¾ÏÈ£·Î ÀçÁ¢¼Ó ÇÑ´Ù. root¾ÏÈ£º¯°æ¼³Á¤ PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! This is done with: /usr/bin/mysqladmin -u root -p password 'new-password' /usr/bin/mysqladmin -u root -h ns.dbakorea.pe.kr -p password 'new-password' DBÀÛ¾÷ DB»ý¼º: mysql> create database DB¸í ( or % mysqladmin -u root -p create DB¸í ) DB»èÁ¦: mysql> drop database DB¸í DB»ç¿ë: mysql> use DB¸í (¾ö¹ÐÈ÷ ¸»ÇÏÀÚ¸é, »ç¿ëÇÒ 'default database'¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ´Ù.) DBº¯°æ: mysql> alter database db¸í DEFAULT CHARACTER SET charset (4.1À̻󿡼­¸¸ available) MySQL ¿¬°á mysql -u »ç¿ëÀÚ -p DB¸í ( or % mysqladmin -u root -p drop DB¸í ) µ¥ÀÌÅÍÆÄÀÏ ½ÇÇà(sql*loader±â´É) mysql>load data infile "µ¥ÀÌÅÍÆÄÀÏ" into table Å×À̺í¸í ; µ¥ÀÌÅÍÆÄÀÏ¿¡¼­ Ä÷³±¸ºÐÀº Åǹ®ÀÚ, Null°ªÀº /n·Î ÀÔ·Â µ¥ÀÌÅÍÆÄÀÏÀÇ À§Ä¡´Â /home/kang/load.txt ¿Í °°ÀÌ Àý´ë°æ·Î·Î ÁöÁ¤ÇÒ°Í. ÁúÀÇ ÆÄÀÏ ½ÇÇà ½©ÇÁ·ÒÇÁÆ®»ó¿¡¼­ mysql -u »ç¿ëÀÚ -p DB¸í < ÁúÀÇÆÄÀÏ or mysqlÇÁ·ÒÇÁÆ®»ó¿¡¼­ mysql> source ÁúÀÇÆÄÀÏ ½©ÇÁ·ÒÇÁÆ®»ó¿¡¼­ ÁúÀÇ ½ÇÇà dbakorea@lion board]$ mysql mysql -u root -pxxxx -e \ > "INSERT INTO db VALUES( > 'localhost', 'aaa', 'aaa', > 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y')" »ç¿ëÀÚ »ý¼º & »ç¿ëÀÚ¿¡°Ô DBÇÒ´ç zbAdmin»ç¿ëÀÚ¿¡°Ô zb µ¥ÀÌÅÍ º£À̽ºÀÇ select,insert,update,delete ±ÇÇÑÀ» µî·Ï mysql> grant select,insert,update,delete on zb.* to zbAdmin@localhost identified by 'Æнº¿öµå' with grant option; mysql >flush privileges; shell> mysql --user=root -p mysql mysql> INSERT INTO user VALUES('localhost','»ç¿ëÀÚ',PASSWORD('ºñ¹Ð¹øÈ£'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO user VALUES('%','»ç¿ëÀÚ',PASSWORD('ºñ¹Ð¹øÈ£'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); INSERT INTO user VALUES('localhost','zbAdmin',PASSWORD('ºñ¹Ð¹øÈ£'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('localhost','DB¸í','»ç¿ëÀÚ','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('%','DB¸í','»ç¿ëÀÚ','Y','Y','Y','Y','Y','Y'); mysql> FLUSH PRIVILEGES; (or shell prompt: mysqladmin -u root -pxxxx reload) CASE 2: GRANT¸í·ÉÀ» ÀÌ¿ëÇÑ »ç¿ëÀÚ »ý¼º(ÀÌ ¹æ¹ýÀÌ ±ÇÀåµÈ´Ù) kangÀ̶ó´Â DB¸¦ ¸¸µé°í, ÀÌ DB¸¦ ¾Æ·¡¿¡¼­ ³ª¿­µÈ ±ÇÇÑÀ» °¡Áø kangÀ̶ó´Â »ç¿ëÀÚ¸¦ »ý¼º create database kang; grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@localhost identified by 'kang'; grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@'%' identified by 'kang'; mysql> create database kang; Query OK, 1 row affected (0.00 sec) mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@localhost identified by 'kang'; Query OK, 0 rows affected (0.00 sec) mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@'%' identified by 'kang'; Query OK, 0 rows affected (0.01 sec) grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on zbDB.* to zbAdmin@localhost identified by 'zbAdmin'; mysql> ¿©·¯°¡Áö ¸í·ÉÁ¤¸® mysql> show variables; ¼­¹öÀÇ variables(¼³Á¤»çÇ×)Ãâ·Â mysql> show variables like 'have_inno%' Á¶°Ç¿¡ ¸Â´Â variables¸¸ Ãâ·Â mysql> show databases; database¸ñ·Ï mysql> show tables; ÇöÀçDBÀÇ Å×À̺í¸ñ·Ï(temporary tableÀº Ãâ·ÂÇÏÁö ¾ÊÀ½) mysql> show tables from db¸í; ÁöÁ¤µÈ db¸íÀÌ ¼ÒÀ¯ÇÑ Å×À̺í¸ñ·Ï mysql> show tables like 'mem%'; Á¶°Ç¿¡ ¸Â´Â Å×À̺í¸ñ·Ï¸¸ Ãâ·Â mysql> show index from Å×À̺í¸í; À妽º º¸±â mysql> show columns from Å×À̺í¸í; Å×ÀÌºí±¸Á¶(describe Å×À̺í¸í, explain Å×À̺í¸í) mysql> show table status; ÇöÀç DBÀÇ Å×À̺íµéÀÇ »óÅÂ(row¼ö,table type,row±æÀÌ,..) mysql> show table status from db¸í; ÁöÁ¤µÈ DBÀÇ Å×À̺íµéÀÇ »óÅÂ(row¼ö,table type,row±æÀÌ,..) mysql> show create table Å×À̺í¸í; ÇØ´ç Å×ÀÌºí »ý¼º SQL¹® Ãâ·Â mysql> rename table Å×À̺í1 to Å×À̺í2; Å×À̺í¸í º¯°æ(ALTER TABLE Å×À̺í1 RENAME TO Å×À̺í2) mysql> rename table Å×À̺í1 to Å×À̺í2, Å×À̺í3 to Å×À̺í4; rename multiple tables mysql> rename table db1¸í.Å×À̺í¸í to db2¸í.Å×À̺í¸í; Å×À̺íÀ» ´Ù¸¥ DB·Î À̵¿ mysql> alter table Å×À̺í¸í add Ä÷³¸í µ¥ÀÌÅÍŸÀÔ; Ä÷³Ãß°¡ mysql> alter table Å×À̺í¸í del Ä÷³¸í; Ä÷³Á¦°Å mysql> alter table Å×À̺í¸í modify Ä÷³¸í Ä÷³Å¸ÀÔ; Ä÷³¸í¿¡ ÁöÁ¤µÈ Ä÷³Å¸ÀÔÀÇ º¯°æ mysql> alter table Å×À̺í¸í change oldÄ÷³¸í newÄ÷³¸í Ä÷³Å¸ÀÔ Ä÷³¸í º¯°æ mysql> alter table Å×À̺í¸í type=innodb; Å×À̺ítypeº¯°æ mysql> create table Å×À̺í¸í(..) type=heap min_rows=10000; 10000row¸¦ ¼ö¿ëÇÒ ¼ö ÀÖÀ» ¸¸Å­ ¸Þ¸ð¸®ÇÒ´ç(heap typeÀ̹ǷÎ) mysql> select version(); MySQL¼­¹ö¹öÀü Ãâ·Â mysql> create table Å×À̺í2 as select * from Å×À̺í1; Å×À̺í1°ú µ¿ÀÏÇÑ Å×ÀÌºí »ý¼º(with µ¥ÀÌÅÍ, as´Â »ý·«°¡´É) mysql> create table Å×À̺í2 as select * from Å×À̺í1 where 1=2; Å×À̺í1°ú µ¿ÀÏÇÑ ±¸Á¶ÀÇ Å×ÀÌºí »ý¼º(without µ¥ÀÌÅÍ, 1=2´Â 0À¸·Î ÇÒ¼öµµ ÀÖ´Ù.) mysql> insert into Å×À̺í2 select * from Å×À̺í1; Å×À̺í1ÀÇ µ¥ÀÌÅ͸¦ Å×À̺í2¿¡ insert Å×À̺íÀÌ Á¸Àç¿©ºÎ ÆÄ¾Ç DROP TABLE IF EXISTS Å×À̺í¸í; CREATE TABLE Å×À̺í¸í (...); ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ COUNT(*)¸¦ »ç¿ëÇÏ¿© ÁúÀÇ°¡ ¼º°øÇϸé Å×À̺íÀÌ Á¸ÀçÇÔÀ» ÆľÇÇÒ ¼ö ÀÖ´Ù. ISAM, MyISAMÀÇ °æ¿ì COUNT(*)°¡ ÃÖÀûÈ­µÇ¾î »ó°ü¾øÀ¸³ª, BDB, InnoDBÀÇ °æ¿ì full scanÀÌ ¹ß»ýÇϹǷΠ»ç¿ëÇÏÁö ¸¶¶ó. ´ë½Å select * from Å×À̺í¸í where 0; À» »ç¿ëÇ϶ó. ÁúÀÇ°¡ ¼º°øÇϸé Å×À̺íÀÌ Á¸ÀçÇÏ´Â °ÍÀÌ°í, ¾Æ´Ï¸é Á¸ÀçÇÏÁö ¾Ê´Â °ÍÀÌ´Ù. Á¢¼Ó mysql {-h Á¢¼ÓÈ£½ºÆ®} -u »ç¿ëÀÚ -p »ç¿ëDB -h·Î ´Ù¸¥ ¼­¹ö¿¡ Á¸ÀçÇÏ´Â MySQLÁ¢¼Ó½Ã ´ÙÀ½°ú °°ÀÌ MySQL DB¿¡ ¼³Á¤ÇØÁà¾ß ÇÑ´Ù. mysql> INSERT INTO user VALUES('Á¢±ÙÀ» Çã¿ëÇÒ È£½ºÆ®ip','»ç¿ëÀÚ',PASSWORD('ºñ¹Ð¹øÈ£'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('Á¢±ÙÀ» Çã¿ëÇÒ È£½ºÆ®ip','»ç¿ëDB','»ç¿ëÀÚ','Y','Y','Y','Y','Y','Y'); mysql> FLUSH PRIVILEGES; or ½¯ÇÁ·ÒÇÁÆ®»ó¿¡¼­ % mysqladmin -u root -p flush-privileges °Ë»öÁ¶°Ç(where) regular expressionÀ» Áö¿øÇÏ´Ù´Ï ½Å±âÇϱº.. mysql> select * from work where ¿­¸í regexp "Á¤±ÔÇ¥Çö½Ä"; ¹é¾÷ & º¹±¸ mysqldump {-h È£½ºÆ®} -u »ç¿ëÀÚ -p DB¸í > ¹é¾÷ÆÄÀÏ mysql {-h È£½ºÆ®} -u »ç¿ëÀÚ -p DB¸í < ¹é¾÷ÆÄÀÏ mysqldump -u root -p --opt db_dbakorea > dbakorea.sql mysqldump -u root -p --opt db_board | mysql ---host=remote-host -C database (»óÀÌÇÑ ¸Ó½®) mysql -u dbakorea -p db_dbakorea < dbakorea.sql mysqldump -u root -p --opt db_dbakorea | mysql ---host=ns.dbakorea.pe.kr -C db_dbakorea Å×ÀÌºí »ý¼º±¸¹®¸¸À» È­¸é¿¡¼­ º¸·Á¸é ´ÙÀ½°ú °°ÀÌ --no-data¸¦ »ç¿ëÇÑ´Ù. Å×À̺í¸íÀ» »ý·«ÇÏ¸é ¸ðµç Å×À̺í Ãâ·Â mysqldump -u À¯Àú¸í -p --no-data db¸í Å×À̺í¸í Å×ÀÌºí °Ë»ç isamchk ¿À¶óŬ sysdate¿Í µ¿ÀÏ insert into test values('12', now()); À¯´Ð½º time()ÇÔ¼ö ¸®ÅÏ°ª »ç¿ë FROM_UNIXTIME(954788684) UNIX_TIMESTAMP("2001-04-04 :04:04:04") MySQL µðÆúÆ® DB&·Î±×ÆÄÀÏ À§Ä¡ /var/lib/mysql /var/libµð·ºÅ丮´Â ¿©·¯ ÇÁ·Î¼¼½ºµéÀÌ »ç¿ëÇÏ´Â µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ÀÏÁ¾ÀÇ ÆÄÀϽýºÅÛ»óÀÇ µ¥ÀÌÅͺ£À̽º¶ó°í º¼ ¼ö ÀÖ´Ù. replace ÇØ´ç ·¹ÄÚµå Á¸ÀçÇϸé updateÇÏ°í, Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é insertÇÑ´Ù.(insert¹®¹ý°ú µ¿ÀÏ) replace into test values('maddog','kang myung gyu')' explain explain ÁúÀǹ®: ÁöÁ¤ÇÑ ÁúÀǹ®ÀÌ ¾î¶»°Ô ½ÇÇàµÉ °ÇÁö¸¦ º¸¿©ÁÜ mysql> explain select u.uid, u.name, a.name from sm_user u, sm_addr a where u.uid=a.uid; +-------+------+-----------------+-----------------+---------+-------+------+-------+ | table | type | possible_keys | key | key_len | ref | rows | Extra | +-------+------+-----------------+-----------------+---------+-------+------+-------+ | u | ALL | PRIMARY | NULL | NULL | NULL | 370 | | | a | ref | sm_addr_uid_idx | sm_addr_uid_idx | 11 | u.uid | 11 | | +-------+------+-----------------+-----------------+---------+-------+------+-------+ 2 rows in set (0.01 sec) temporary table Å©±â°¡ Å« Å×ÀÌºí¿¡ ÀÖ´Â subset¿¡ ´ëÇÑ ÁúÀǶó¸é subsetÀ» temporary table¿¡ ÀúÀåÇÑ ÈÄ ÁúÀÇÇÏ´Â °ÍÀÌ ´õ ºü¸¦ °æ¿ì°¡ ÀÖ´Ù. temporary table´Â ¼¼¼Ç³»¿¡¼­¸¸ À¯È¿ÇÏ°í(ÇöÀç »ç¿ëÀÚ¸¸ÀÌ º¼¼ö ÀÖ´Ù´Â ¶æ), ¼¼¼ÇÁ¾·á½Ã ÀÚµ¿ÀûÀ¸·Î dropµÈ´Ù. create temporary table (...); create temporary table (...) type=heap; µð½ºÅ©°¡ ¾Æ´Ñ ¸Þ¸ð¸®¿¡ Å×ÀÌºí »ý¼º Á¸ÀçÇÏ´Â permanent tableÀÇ Å×À̺í¸í°ú µ¿ÀÏÇÏ°Ô »ý¼ºÇÒ ¼ö ÀÖÀ¸¸ç, temporary tableÀº permanent tableº¸´Ù ¿ì¼±½ÃµÇ¾î 󸮵ȴÙ. 4.0.7ÀÇ °¨¸¶¹öÀü¿¡¼­ Å×½ºÆ®ÇÏ¸é °á°ú´Â ¾à°£ ´Þ¶óÁø´Ù. ¹ö±×ÀΰÇÁö.. mysql> create table test (id varchar(10)); Query OK, 0 rows affected (0.01 sec) mysql> insert into test values('dbakorea'); Query OK, 1 row affected (0.00 sec) mysql> create temporary table test(id varchar(10)); Query OK, 0 rows affected (0.00 sec) mysql> select * from test; Empty set (0.00 sec) mysql> drop table test; Query OK, 0 rows affected (0.00 sec) mysql> select * from test; +----------+ | id | +----------+ | dbakorea | +----------+ 1 row in set (0.00 sec) Table Type¿¡ ´Ù¸¥ Files on Disk ISAM .frm (definition) .ISD (data) .ISM (indexes) MyISAM .frm (definition) .MYD (data) .MYI (indexes) MERGE .frm (definition) .MRG (list of constituent MyISAM table names) HEAP .frm (definition) BDB .frm (definition) .db (data and indexes) InnoDB .frm (definition) º¸Åë mysqldump¸¦ »ç¿ëÇÏ¿© ¹é¾÷À» ¼öÇàÇÏ¿© ´Ù¸¥ DB¼­¹ö¿¡ µ¥ÀÌÅ͸¦ restoreÇÏ¸é µÈ´Ù. MySQLÀº º°´Ù¸¥ ÀÛ¾÷¾øÀÌ µ¥ÀÌÅÍÆÄÀÏÀ» ´Ü¼øÈ÷ º¹»ç(copy)ÇÏ´Â °Í¸¸À¸·Îµµ ´Ù¸¥ ¼­¹ö¿¡ DBÀ» À̵¿½Ãų ¼ö ÀÖ´Ù. ÇÏÁö¸¸, ÀÌ·± ¹æ½ÄÀÌ Áö¿øµÇÁö ¾Ê´Â table typeµµ ÀÖ´Ù. ISAM: machine-dependent formatÇϱ⶧¹®¿¡.. BDB : .dbÆÄÀÏ¿¡ ÀÌ¹Ì Å×À̺íÀ§Ä¡°¡ encodeµÇ¾î Àֱ⶧¹®¿¡.. MyISAM, InnoDB, MERGE :°¡´É(machine-independent format) º°´Ù¸¥ ÁöÁ¤À» ÇÏÁö ¾Ê¾Ò´Ù¸é µðÆúÆ® TABLE typeÀÌ MyISAMÀ̹ǷÎ, ¹«³­È÷ migrationÇÒ ¼ö ÀÖ´Ù. floating-pointÄ÷³(FLOAT,DOUBLE)ÀÌ ÀÖ´Ù¸é ÀÌ·¯ÇÑ ¹æ½ÄÀÌ ½ÇÆÐÇÒ ¼ö µµ ÀÖ´Ù. ½©¿¡¼­´Â mysqlÀÌ µÇ´Âµ¥ PHP¿¡¼­ mysql.sock error¸¦ ³»¸é¼­ MySQLÀÌ ¾ÈµÇ´Â °æ¿ì mysql.sockÀº /tmp ¾Æ´Ï¸é /var/lib/mysql¿¡ »ý±â°Ô µÈ´Ù. ³ªÀÇ °æ¿ì, /var/lib/mysql¿¡ mysql.sockÆÄÀÏÀÌ Àִµ¥ PHP¿¡¼­´Â /tmp¿¡¼­ ãÀ¸·ÁÇϸ鼭 ¿¡·¯¸¦ ¹ß»ýÇß´Ù. /usr/bin/safe_mysqldÆÄÀÏ¿¡¼­ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù. ÁÖ¼®(#)ÀÌ ´Þ¸° °ÍÀÌ ¿ø·¡°ÍÀÌ°í ±× ¹Ø¿¡ Àִ°ÍÀÌ ¼öÁ¤ÇÑ °ÍÀÌ´Ù. # MYSQL_UNIX_PORT=${MYSQL_UNIX_PORT:-/var/lib/mysql/mysql.sock} MYSQL_UNIX_PORT=${MYSQL_UNIX_PORT:-/tmp/mysql.sock} À§¿Í °°ÀÌ ÇÏ´Ï /usr/bin/mysqlÀÌ /var/lib/mysql/mysql.sock¿¡¼­ ¼ÒÄÏÆÄÀÏÀ» ãÀ¸·Á Çß´Ù. socket fileÀ» ÁöÁ¤ÇÏ´Â --socketÀ̶ó´Â ¿É¼ÇÀ¸·Î ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÏ¸é µÈ´Ù. mysql --socket=/tmp/mysql.sock -u dbakorea -p db_test ÇÏÁö¸¸ mysql½ÇÇà½Ã¸¶´Ù ÀÌ·¸°Ô ½áÁà¾ßÇÑ´Ù´Â °ÍÀÌ »ó´çÈ÷ ±ÍÂú´Ù. ¿É¼ÇÀÌ ¹Ù·Î Àû¿ëµÇ°Ô ¼³Á¤ÇÏÀÚ. mysqlÀº ¼³Á¤»çÇ×À» ´ÙÀ½ 3°¡Áö ÆÄÀÏ¿¡¼­ °Ë»öÇÑ´Ù. /etc/my.cnf global options(MySQL ÀüüÀûÀ¸·Î »ç¿ëµÇ´Â ¿É¼Ç Á¤ÀÇ) mysql-data-dir/my.cnf ƯÁ¤ DB¿¡ Àû¿ëµÇ´Â option (/var/lib/mysql/my.cnf) ~/.my.cnf »ç¿ëÀÚ °¢°¢ÀÇ ¼³Á¤('~'¹®ÀÚ´Â »ç¿ëÀÚÀÇ È¨µð·ºÅ丮´Â ÀǹÌ) /usr/share/mysqlµð·ºÅ丮¿¡ ¿¹Á¦°¡ ÀÖÀ¸¹Ç·Î Âü°íÇÑ´Ù. ¼ÒÄÏÆÄÀÏÀÇ ÁöÁ¤Àº ´ÙÀ½ÁÙÀ» ³Ö¾îÁÖ¸é µÈ´Ù. socket = /tmp/mysql.sock == /etc/my.cnf¿¹ == # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock MySQL¿¡¼­ Åë°è󸮽à orderby, groupby ´Â sort_buffer¸¦ ´Ã¿©ÁØ´Ù.(show variables) live table(smslog)¿¡¼­ ¸ðµç ÁúÀǸ¦ ó¸®ÇÏÁö ¸»°í summary table¿¡ ÁúÀÇ°á°ú¸¦ ÀúÀåÇØ ÀçÁúÀÇ Ã³¸®ÇÑ´Ù. summary tableÀÌ heap-type table°¡ °¡´ÉÇÑÁö È®ÀÎÇÒ °Í. INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE tblTemp1.fldOrder_ID > 100; joinÀÌ subselectº¸´Ù ºü¸£´Ù. join½Ã »ç¿ëµÇ´Â Ä÷³Àº µ¿ÀÏÇÑ column type°ú ±æÀ̸¦ °¡Á®¾ß¸¸ ÃÖÀûÀÇ ¼Óµµ¸¦ º¸ÀåÇÑ´Ù. Áï, µ¿ÀÏ column typeÀÌÁö¸¸ ±æÀÌ°¡ ´Ù¸£´Ù¸é(char(11), char(10)), µ¿ÀÏÇÑ Ä÷³µµ¸ÞÀÎÀ¸·Î º¯°æÇØÁÖ´Â °ÍÀÌ ÁÁ´Ù. whereÀÇ inÀº optimizeµÇ¾î ÀÖÀ¸¹Ç·Î ºü¸£´Ù insert,select´Â µ¿½Ã¿¡ ¼öÇà°¡´ÉÇÏ´Ù.(¾î¶»°Ô?) explainÀ¸·Î ÁúÀÇ°úÁ¤ Á¡°Ë varchar to/from char conversion varchar¸¦ char·Î º¯°æÇÒ °æ¿ì ¸ðµç Ä÷³Å¸ÀÔÀ» µ¿½Ã¿¡ º¯°æÇØ¾ß ÇÑ´Ù. ¹Ý´ëÀÇ °æ¿ì, Çϳª¸¸ char->charcharº¯°æ½Ã ´Ù¸¥ ¸ðµç Ä÷³µµ varchar·Î º¯°æµÊ Âü.. ƯÀÌÇϱ¸¸¸.. mysql> CREATE TABLE chartbl (name VARCHAR(40), address VARCHAR(80)); Query OK, 0 rows affected (0.05 sec) mysql> desc chartbl; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(40) | YES | | NULL | | | address | varchar(80) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 2 rows in set (0.03 sec) mysql> alter table chartbl modify name char(40); Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc chartbl; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(40) | YES | | NULL | | | address | varchar(80) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> alter table chartbl modify name char(40), modify address char(80); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc chartbl; +---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | name | char(40) | YES | | NULL | | | address | char(80) | YES | | NULL | | +---------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> "For each article, find the dealer(s) with the most expensive price." Ç¥ÁØ¾È SELECT article, dealer, price FROM shop s1 WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article); ¼öÁ¤¾È(ÃÖÀûÈ­) CREATE TEMPORARY TABLE tmp ( article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, price DOUBLE(16,2) DEFAULT '0.00' NOT NULL); LOCK TABLES shop read; INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article; SELECT shop.article, dealer, shop.price FROM shop, tmp WHERE shop.article=tmp.article AND shop.price=tmp.price; UNLOCK TABLES; DROP TABLE tmp; ============================================================================== MySQL Ư¼ºÁ¤¸® ============================================================================== primary key, foreign keyÁö¿ø index Áö¿ø(15°³Ä÷³, 256byte±îÁö) MySQL¿¡¼­ÀÇ Stored Script°³³ä => SQL server language commit-rollback°³³ä => lock tables(lock table test write -> Æ®·£Àè¼Ç.. -> unlock tables) Ä÷³¸í±æÀÌ: 64ÀÚ±îÁö, Ä÷³ Alias: 256ÀÚ±îÁö not case-sensitive: keywords, functions, column, index¸í case-sensitive: database, table, alias¸í Å°¿öµå,ÇÔ¼ö¸íÀº ´ë¼Ò¹®ÀÚ±¸º°ÀÌ ¾øÁö¸¸, db¸í°ú table¸íÀº Unix°è¿­À̶ó¸é case-sensitiveÇÏ´Ù. (ÀÌ´Â ¿ÀºêÁ§Æ®¸íÀÌ OSÀÇ fs¿¡ µû¶ó ÀúÀåµÇ±â ¶§¹®ÀÌ´Ù. ¼­¹öÀÇ lower_case_table_names º¯¼ö¸¦ 1·Î ¼³Á¤ÇÏ¸é ¿ÀºêÁ§Æ®¸íÀº ¸ðµÎ ¼Ò¹®ÀÚ·Î ÀúÀåµÇ¹Ç·Î À¯´Ð½º-À©µµ°£ ȣȯ¼ºÀ» ³ôÀÏ ¼ö ÀÖ´Ù. Áö¿øµÇÁö ¾Ê´Â ºÎºÐ: Stored Procedure(5.0ÀÌ»óºÎÅÍ Áö¿øµÈ´Ù°í ÇÔ) View(5.0ÀÌ»óºÎÅÍ Áö¿øµÈ´Ù°í ÇÔ) Trigger(5.0ÀÌ»óºÎÅÍ Áö¿øµÈ´Ù°í ÇÔ) subquery(4.1ÀÌ»óºÎÅÍ Áö¿øµÈ´Ù°í ÇÔ) union, union all(4.0ÀÌ»óºÎÅÍ Áö¿øµÊ) [Å×À̺í type¿¡ µû¸¥ À妽º Ư¼º] Index Characteristic ISAM MyISAM HEAP BDB InnoDB NULL values allowed No Yes As of 4.0.2 Yes Yes Columns per index 16 16 16 16 16 Indexes per table 16 32 32 31 32 Maximum index row size (bytes) 256 500 500 500/1024 500/1024 Index column prefixes allowed Yes Yes Yes Yes No BLOB/TEXT indexes allowed No Yes(255 bytes max) No Yes (255 bytes max) No À妽º »ý¼º - alter tableÀ» ÀÌ¿ëÇÑ À妽º »ý¼ºÀÌ ´õ flexibleÇÔ - À妽º¸íÀº »ý·«°¡´É ALTER TABLE Å×À̺í¸í ADD INDEX À妽º¸í (À妽ºÄ÷³); ALTER TABLE Å×À̺í¸í ADD UNIQUE À妽º¸í (À妽ºÄ÷³); ALTER TABLE Å×À̺í¸í ADD PRIMARY KEY (À妽ºÄ÷³); ALTER TABLE Å×À̺í¸í ADD FULLTEXT (À妽ºÄ÷³); CREATE INDEX À妽º¸í ON Å×À̺í¸í (À妽ºÄ÷³); CREATE UNIQUE INDEX À妽º¸í ON Å×À̺í¸í (À妽ºÄ÷³); CREATE FULLTEXT INDEX À妽º¸í ON Å×À̺í¸í (À妽ºÄ÷³); uniqueÀ妽º¿Í primary keyÀ妽º¿ÍÀÇ Â÷ÀÌ uniqueÀº nullÇã¿ëÇÏÁö¸¸, primary key´Â nullÇã¿ë ¾ÈÇÔ uniqueÀº ÇϳªÀÇ Å×ÀÌºí¿¡ ¿©·¯°³ ¿Ã ¼ö ÀÖÁö¸¸, primary key´Â Çϳª¸¸ Á¸Àç Å×À̺í»ý¼º½Ã ÁöÁ¤ CREATE TABLE Å×À̺í¸í ( ... column declarations ... INDEX À妽º¸í (À妽ºÄ÷³), UNIQUE À妽º¸í (À妽ºÄ÷³), PRIMARY KEY (À妽ºÄ÷³), FULLTEXT À妽º¸í (À妽ºÄ÷³), ... ); index prefix »ý¼º - Ä÷³ÀÇ Àüü±æÀÌÁß ÀϺθ¸ À妽º·Î »ç¿ë - supported for ISAM, MyISAM, HEAP, and BDB tables, but not for InnoDB tables - ÁöÁ¤µÇ´Â ±æÀÌ´Â byte´ÜÀ§°¡ ¾Æ´Ñ charater´ÜÀ§À̹ǷÎ, multi-byte characterÀÏ °æ¿ì ÁÖÀÇ - blob, text Ä÷³Å¸ÀÔÀÏ °æ¿ì, index prefix °¡ À¯¿ë(255 ±æÀ̱îÁö °¡´É) CREATE TABLE Å×À̺í¸í ( name CHAR(30) NOT NULL, address CHAR(60) NOT NULL, INDEX (name(10),address(10)) ); À妽º »èÁ¦ DROP INDEX À妽º¸í ON Å×À̺í¸í; ALTER TABLE Å×À̺í¸í DROP INDEX À妽º¸í; ALTER TABLE Å×À̺í¸í DROP PRIMARY KEY; outer join [MySQL] left outer joing : SELECT t1.*, t2.* FROM t1 LEFT OUTER JOIN t2 ON t1.i1 = t2.i2; right outer joing: SELECT t1.*, t2.* FROM t1 RIGHT OUTER JOIN t2 ON t1.i1 = t2.i2; [Oracle] left outer joing : SELECT t1.*, t2.* FROM t1, t2 where t1.i1 = t2.i2(+); right outer joing: SELECT t1.*, t2.* FROM t1, t2 where t1.i1(+) = t2.i2; SELECT student.name, student.student_id, event.date, event.event_id, event.type FROM student, event LEFT JOIN score ON student.student_id = score.student_id AND event.event_id = score.event_id WHERE score.score IS NULL ORDER BY student.student_id, event.event_id; := ¹®ÀåÀ» ÀÌ¿ëÇÑ º¯¼öÀÇ ¼³Á¤ ÇöÀç dbakoreaÀÇ µ¥ÀÌÅͺ£À̽º°­Á°ԽÃÆÇ¿¡ µî·ÏµÈ ÃÑ °Ô½Ã¹°Àº 43°³ÀÌ´Ù. 43°³ÀÇ °­Á¸¦ ÀÐÀº ¼ö(hit¼ö)´Â °¢°¢ ´Ù¸£´Ù. Æò±Õ hit¼ö¸¦ ±¸ÇØ º¸ÀÚ. mysql> select @total_hit := sum(hit), @total_record := count(*) from zetyx_board_database; +------------------------+---------------------------+ | @total_hit := sum(hit) | @total_record := count(*) | +------------------------+---------------------------+ | 3705 | 43 | +------------------------+---------------------------+ 1 row in set (0.00 sec) mysql> select @total_hit/@total_record as Æò±ÕHIT; +-----------------+ | Æò±ÕHIT | +-----------------+ | 86.162790697674 | +-----------------+ 1 row in set (0.00 sec) select substring(subject from 9) from zetyx_board_database where substring(subject, 1, 8) = '[ORACLE]'; º¸Åë »ó¿ëDBMSµéÀÌ row-level lockingÀ» Áö¿øÇÑ´Ù. ½±°Ô ¸»ÇØ ·¹ÄÚµå´ÜÀ§·Î ¶ôÅ·ÇÑ´Ù´Â ¸»ÀÌ´Ù. ¹Ý¸é, MySQLÀÇ MyISAM Å×À̺íŸÀÔÀº table-level lockingÀ» »ç¿ëÇÑ´Ù. ½±°Ô ¸»Çϸé, insert, update, deleteÀÛ¾÷Àº Àüü Å×ÀÌºí¿¡ ¶ôÀ» °É°í 󸮵ȴٴ °ÍÀÌ´Ù. row-level¶ôº¸´Ù ºñÈ¿À²ÀûÀÌÁö¸¸,.. MySQLÀº ºü¸£±â ¶§¹®¿¡ ÀÌ ´ÜÁ¡ÀÌ »ó¼âµÈ´Ù. Compressed MyISAM(packed MyISAM) Á¤ÀûÀÎ Å×ÀÌºíµ¥ÀÌÅÍ´Â ¾ÐÃàÇÏ¿© 20-60%Á¤µµÀÇ °ø°£À» Àý¾àÇÒ ¼ö ÀÖ´Ù. Productionµ¥ÀÌÅ͸¦ CD·Î ¹Þ¾Æ¼­ Â÷ÈÄ µð½ºÅ©¿¡ Ç®Áö ¾Ê°í CDÀÚü·Î ¹Ù·Î »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. gzipµîÀ¸·Î ¹é¾÷¹ÞÀ¸¸é À̸¦ Ǫ´Â °úÁ¤ÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. % myisampack dbakorea.myi µ¥ÀÌÅͺ£À̽º °Ô½ÃÆÇÀÇ Merge Table¿¡ Á» ´õ ÀÚ¼¼ÇÑ ³»¿ëÀ» Àû¾î µÎ¾ú´Ù. RAID Table 1°³ÀÇ Å×À̺íÀº OS»ó¿¡ 3°³ÀÇ ÆÄÀÏ·Î ±¸¼ºµÈ´Ù. ½ºÅ°¸¶ÆÄÀÏ(.frm), dataÆÄÀÏ(.myd), indexÆÄÀÏ(.myi) MySQLÀÇ RAIDÅ×À̺íÀº µ¥ÀÌÅÍÆÄÀÏ(.myd)À» ¿©·¯°³ÀÇ ÆÄÀϵé·Î ±¸¼ºÇÏ´Â °ÍÀÌ´Ù. create table raid_test (...) type=myisam raid_type=striped raid_chunks=4 raid_chunsize=8 Å×À̺íÀ» 4°³ÀÇ µ¥ÀÌÅÍÆÄÀÏ·Î ³ª´©°í, 8kb´ÜÀ§·Î(8kb stripe) ¶ó¿îµå·Îºó ¹æ½ÄÀ¸·Î write°¡ ÀÌ·ç¾îÁø´Ù. This article comes from dbakorea.pe.kr (Leave this line as is)