ãã¼ã¿ãã¼ã¹ã®åºç¤ / Mojoliciouså ¥é
ãæ¬¡ã«ãã¼ã¿ãä¿åããããã«ããã¼ã¿ãã¼ã¹ã®å©ç¨æ¹æ³ãå¦ã³ã¾ããããWebã¢ããªã±ã¼ã·ã§ã³ã§ã¯ããã¼ã¿ã¯ãã¼ã¿ãã¼ã¹ã«ä¿åããããã«ãã¾ããããéå»ã®æä»£ã«ããã¦ã¯ãã¡ã¤ã«ã«ä¿åããããã¨ãå¤ãã£ãã§ããããã¡ã¤ã«ã®ããã¯æ©æ§ããã¢ã¯ã»ã¹éãªã©ãèããã¨ããã¼ã¿ãã¼ã¹ãå©ç¨ããã®ãæåã§ãã
ããã¼ã¿ãã¼ã¹ã«ã¯SQLite, MySQL, PostgreSQLãªã©ããã¾ãããä»åã¯ãã£ã¨ãç°¡åãªSQLiteã使ãã¾ããSQLiteã¯ç°¡åã§ãããæ©è½ã«å¶éãããã¾ãã®ã§ãWebãµã¤ããå®éã«ä½ãã¨ãã®æåã®é¸æã¯MySQLãPostgreSQLã§ããMySQLã«ã¤ãã¦ã¯ãå¿ç¨ç·¨ã§æ±ãããã¨æãã¾ãã
ããã¼ã¿ãã¼ã¹ã«ã¤ãã¦ã詳ãã解説ããããããä»åã¯ä½¿ãæ¹ãä¸å¿ã«è§£èª¬ãã¾ããæåã«sqlite3ã¨ããSQLiteã®ãã¼ã¿ãã¼ã¹ãå©ç¨ããã¢ããªã±ã¼ã·ã§ã³ã使ã£ã¦ããã¼ã¿ãã¼ã¹æä½ã®åºç¤ãè¦ãã¾ãããã
sqlite3ã®ã¤ã³ã¹ãã¼ã«
ãã¾ãSQLiteãæä½ããããã®ãã¼ã«ã§ããsqlite3ãã¤ã³ã¹ãã¼ã«ãã¾ãã
Windowsã¸ã®sqlite3ã®ã¤ã³ã¹ãã¼ã«
ãWindowsãå©ç¨ãã¦ããå ´åã¯æ¬¡ã®æé ã§sqlite3ããã¦ã³ãã¼ããã¾ãã以ä¸ã®ãµã¤ãã«ããsqlite3ããã¦ã³ãã¼ããã¦ãã ããã
ãzipãã¡ã¤ã«ããã¦ã³ãã¼ãããã®ã§ãå±éãã¦ãã ããããsqlite3.exeãã¨ãããã¡ã¤ã«ãããã®ã確èªãã¦ãã ããããããSQLiteã®ãã¼ã¿ãã¼ã¹ãæä½ããããã®ã¢ããªã±ã¼ã·ã§ã³ã§ãããããã¢ããªã±ã¼ã·ã§ã³ã®ãã¹ãéã£ã¦ããå ´æã«é ç½®ããå¿ è¦ãããã¾ãã
ãä»åã¯Perlãã¤ã³ã¹ãã¼ã«ãããã£ã¬ã¯ããªã¨åããã£ã¬ã¯ããªã«é ç½®ãã¾ãããããC:\Perl\site\binãã¨ãããã£ã¬ã¯ããªã®ä¸ã«ãsqlite3.exeããã³ãã¼ãã¦é ç½®ãã¦ãã ããã
ãæ¬¡ã«ã³ãã³ãããã³ãããç«ã¡ä¸ãã¦æ¬¡ã®ã³ãã³ããå®è¡ãã¦ãã ããã
sqlite3 test.db
ã以ä¸ã®ããã«sqlite3ãèµ·åããã°ãã¤ã³ã¹ãã¼ã«ã¯å®äºã§ãã
SQLite version 3.8.4.3 2014-04-03 16:53:12 Enter ".help" for usage hints. sqlite>
ãçµäºããã«ã¯ã.qãã¨å ¥åãã¦Enterãæ¼ãã¾ãã
.q
Mac OS Xã¸ã®sqlite3ã®ã¤ã³ã¹ãã¼ã«
ãMac OS Xã«ã¯sqlite3ãæåããã¤ã³ã¹ãã¼ã«ããã¦ããã®ã§ãç¹å¥ãªä½æ¥ã¯å¿ è¦ããã¾ãããã¿ã¼ããã«ããsqlite3ãèµ·åãã¦ã¿ã¾ãããã
sqlite3 test.db
ã以ä¸ã®ããã«sqlite3ãèµ·åããã確èªãã¾ãããã
SQLite version 3.8.4.3 2014-04-03 16:53:12 Enter ".help" for usage hints. sqlite>
ãçµäºããã«ã¯ã.qãã¨å ¥åãã¦Enterãæ¼ãã¾ãã
.q
Linuxã¸ã®sqlite3ã®ã¤ã³ã¹ãã¼ã«
ãCentOS, Redhat Linux, Fedoraã®å ´åã¯ãyumã³ãã³ãã§sqlite3ãã¤ã³ã¹ãã¼ã«ãã¾ãã
yum -y install sqlite
ãUbuntuã®å ´åã¯apt-getã³ãã³ãã§sqlite3ãsqlite3ãã¤ã³ã¹ãã¼ã«ãã¾ãã
sudo apt-get install -y sqlite3
ãæ¬¡ã«ã·ã§ã«ããæ¬¡ã®ã³ãã³ããå®è¡ãã¦ãã ããã
sqlite3 test.db
ã以ä¸ã®ããã«sqlite3ãèµ·åããã°ãã¤ã³ã¹ãã¼ã«ã¯å®äºã§ãã
SQLite version 3.8.4.3 2014-04-03 16:53:12 Enter ".help" for usage hints. sqlite>
ãçµäºããã«ã¯ã.qãã¨å ¥åãã¦Enterãæ¼ãã¾ãã
.q
ãã¼ãã«ã®ä½æ
ãSQLiteã§ã¯ãã¼ã¿ã¯ããã¡ã¤ã«ã«ä¿åããã¾ããtest.dbã¨ããååã®ãã¡ã¤ã«ã§ãã¼ã¿ãã¼ã¹ã使ãã¾ãããã
sqlite3 test.db
ãsqlite3ãèµ·åãããæåã«ãã¼ãã«ã使ãã¾ãããã¼ãã«ã使ããã«ã¯ãcreate tableãæ§æã使ç¨ãã¾ãããã¼ã¿ãã¼ã¹ã¸å½ä»¤ãè¡ãè¨èªã®ãã¨ãSQLã¨ããã¾ãããcreate tableããSQLã®ã²ã¨ã¤ã§ãã
ãbookã¨ãããã¼ãã«åã§ãid, title, authorã¨ããåãæã¤ãã¼ãã«ã使ãããcreate tableããå®è¡ãã¦ã¿ã¾ãããã
create table book ( id primary key, title not null default '', author not null default '' );
ãåã®å®ç¾©ã¯ãåå (å) (ãªãã·ã§ã³)ãã¨ããå½¢å¼ã§ãªããã¾ãã
åå (å) (ãªãã·ã§ã³)
ãååã¯å¿ é ã§ããSQLiteã§ã¯ãã¼ã¿åãæå®ããå¿ è¦ã¯ããã¾ããããã¼ã¿åãæå®ããªãã£ãå ´åã¯æååã¨ãã¦æ±ããã¾ãã
ãåãã¼ãã«ã«ã¯ä¸»ãã¼ãããããidãæå®ãã¦ããã¾ããããããã¯ãè¡ã䏿ã«èå¥ããããã®ãã®ã§ãã主ãã¼ã«ã¯primary keyå¶ç´ãã¤ãã¾ããprimary keyå¶ç´ã¯ãåè¡ã䏿ã§ãããã¨ãä¿éããããã®ãã®ã§ãéè¤ãã主ãã¼ãç»é²ãç¦æ¢ããããã®ãã®ã§ãã
ãä»ã®åã«ã¯not nullå¶ç´ãã¤ããããã«ãã¾ããnot nullå¶ç´ã¨ã¯ãè¡ã«nullã¨ããå¤ãè¨å®ã§ããªãããã«ããå¶ç´ã§ããnot nullå¶ç´ãè¡ãå ´åã¯defaultãè¨å®ããå¿ è¦ãããã¾ãã®ã§ãããã¦è¨å®ãã¾ãã
ãnullã¯ã§ããéã使ããªãã»ããããã¨ããã®ããããç¿æ £ã§ãã®ã§ããã¹ã¦ã®åã«not nullå¶ç´ãã¤ãã¦ããã¾ããããnot nullãåæã«ãã¦ãã¼ã¿ãã¼ã¹ãè¨è¨ããã®ãããã§ãã
ãã¼ãã«ä¸è¦§ã®è¡¨ç¤º
ããã¼ãã«ã使ãããã©ã®ãããªãã¼ãã«ãåå¨ããããè¦ã¦ã¿ã¾ãããããã¼ãã«ä¸è¦§ã表示ããã«ã¯ã.tablesãã³ãã³ãã使ç¨ãã¾ãã
.tables
ããã¼ãã«ã®ä¸è¦§ã表示ããã¾ãã
book
ãã¼ãã«ã®å®ç¾©ã確èª
ãcreate tableæã§ä½æãããã¼ãã«ã®å®ç¾©ã確èªãã¦ã¿ã¾ããããã.schemaãã³ãã³ãã使ç¨ãã¾ãã
.schema book
ããã¼ãã«ã®å®ç¾©ã表示ããã¾ãã
CREATE TABLE book ( id primary key, title not null default '', author not null default '' );
è¡ã®æ¿å ¥ - insertæ
ãæ¬¡ã«è¡ãæ¿å ¥ãã¦ã¿ã¾ãããããã¼ã¿ãã¼ã¹ã«è¡ãæ¿å ¥ããã«ã¯insertæã使ç¨ãã¾ãã
# ä½¿ç¨æ¹æ³ insert into ãã¼ãã«å (åå1, åå2, ...) values (å¤1, å¤2, å¤3);
ãå®éã«ãã¼ã¿ãæ¿å ¥ãã¦ã¿ã¾ãããidããã00000001ãããtitleãããPerlãããauthorãããkimotoãã¨ãããã¼ã¿ããã¼ã¿ãã¼ã¹ã«æ¿å ¥ãã¾ããããæååã¯ã·ã³ã°ã«ã¯ã©ã¼ãã§å²ãå¿ è¦ãããã¾ãã
insert into book (id, title, author) values ('00000001', 'Perl', 'kimoto');
ãã©ã®ãããªè¡ãæ¿å ¥ããããselectæã使ã£ã¦è¦ã¦ã¿ã¾ããããselectæã«ã¤ãã¦ã¯è©³ããå¾ã»ã©è§£èª¬ãã¾ãã
select * from book;
ãæ¬¡ã®ããã«è¡¨ç¤ºããã¾ãã
00000001|Perl|kimoto
ãååã表示ããã¦ããªãã®ã§å°ãè¦ã¥ããã§ããã.headerã³ãã³ããå®è¡ãã¦ããã¨ãååã表示ãããã¨ãã§ãã¾ãã
.header on
ãããä¸åº¦selectæãå®è¡ãã¦ã¿ã¦ãã ãããæ¬¡ã®ããã«ååãå«ãã¦ãè¡ã表示ããã¾ãã
id|title|author
00000001|Perl|kimoto
è¡ã®æ´æ° - updateæ
ãæ¬¡ã«è¡ãæ´æ°ãã¦ã¿ã¾ããããè¡ãæ´æ°ããã«ã¯updateæã使ç¨ãã¾ãã
update ãã¼ãã«å set åå1 = å¤1, åå2 = å¤2, ... where æ¡ä»¶
ãupdateæã§ã¯ãwhereå¥ã使ã£ã¦æ¡ä»¶ãæå®ãã¦ãæ¡ä»¶ã«ãããããè¡ãæ´æ°ããã¨ããåä½ãè¡ãã¾ããwhereå¥ãæå®ããªãã£ãå ´åã¯ããã¹ã¦ã®è¡ãæ´æ°ããã¦ãã¾ãã®ã§ãããæ³¨æãã¦ãã ããã
ãã§ã¯updateæã使ã£ã¦ãtitleãåã®ãPerlãã¨ããæååããRubyãã«å¤æ´ãã¦ã¿ã¾ããããæ¡ä»¶ã«ãidãã®å¤ãæå®ãã¦ãæ´æ°ãã¾ãã
update book set title = 'Ruby' where id = '00000001';
ãselectæã§ãå¤ã夿´ããã¦ãããã¨ã確èªãã¦ã¿ã¾ãããã
select * from book;
ãæ¬¡ã®ããã«è¡¨ç¤ºããã¾ãã
00000001|Ruby|kimoto
è¡ã®åé¤ - deleteæ
ãæ¬¡ã«è¡ãåé¤ãã¦ã¿ã¾ããããè¡ãåé¤ããã«ã¯deleteæã使ç¨ãã¾ãã
delete from ãã¼ãã«å where æ¡ä»¶
ãdeleteæã§ã¯ãwhereå¥ã使ã£ã¦æ¡ä»¶ãæå®ãã¦ãæ¡ä»¶ã«ãããããè¡ãåé¤ããã¨ããåä½ãè¡ãã¾ããwhereå¥ãæå®ããªãã£ãå ´åã¯ããã¹ã¦ã®è¡ãåé¤ããã¦ãã¾ãã®ã§ãããæ³¨æãã¦ãã ããã
ãã§ã¯deleteæã使ã£ã¦ãè¡ãåé¤ãã¦ã¿ã¾ããããæ¡ä»¶ã«ãidãã®å¤ãæå®ãã¦ãåé¤ãã¾ãã
delete from book where id = '00000001';
ãselectæã§ãå¤ã夿´ããã¦ãããã¨ã確èªãã¦ã¿ã¾ãããã
select * from book;
ãè¡ãåé¤ãããã®ã§ãä½ã表示ããã¾ããã
è¡ã®é¸æ - selectæ
ãè¡ãåå¾ããããã«selectæãæ¸ãã¦ãã¾ããããããå°ã詳ãã解説ãã¦ããã¾ããã¾ããselectæã試ãããã«ã以ä¸ã®SQLã§ãè¡ãæ¿å ¥ãã¦ãã ããã
insert into book (id, title, author) values ('00000001', 'Perl Tutorial', 'kimoto'); insert into book (id, title, author) values ('00000002', 'Perl advantage', 'ken'); insert into book (id, title, author) values ('00000003', 'Ruby Tutorial', 'yosuke');
åã®é¸æ
ãselectæã§ã¯ã*ããæå®ããå ´åã¯ããã¹ã¦ã®åãåå¾ãããã¨ãã§ãã¾ããã¾ãååãæå®ãã¦ã対象ã®åã ããåå¾ãããã¨ãã§ãã¾ãã
# ãã¹ã¦ã®å select * from book; # id select id from book; # idã¨title # select id, title book;
æ¡ä»¶ - whereå¥
ãselectæã¯whereå¥ã§æ¡ä»¶ãæå®ãã¦ä½¿ããã¨ãå¤ãã§ãã
select åå from ãã¼ãã«å where æ¡ä»¶
ãæ¡ä»¶æ¼ç®åã«ã¯ä»¥ä¸ã®ãã®ãããã¾ãã
æ¼ç®å | æå³ |
= | çãã |
<> | çãããªã |
ããã大ãã | > |
ããã大ãããã¾ãã¯çãã | >= |
ãããå°ãã | < |
ãããå°ãããã¾ãã¯çãã | <= |
ããå«ã | like |
ãã« | is null |
ãã«ã§ã¯ãªã | is not null |
ãæ¼ç®åã¯æ¬¡ã®ããã«å©ç¨ã§ãã¾ãã
# ãidããã00000002ãã«çãã select * from book where id = '00000002';
ãlikeæ¼ç®åã®ä½¿ãæ¹ãå°ãç°ãªãã®ã§è§£èª¬ãã¾ããlikeæ¼ç®åã使ãå ´åã¯ãæååã®ä¸ã«ã¯ã¤ã«ãã«ã¼ãã¨ãã¦ã%ãã使ããã¨ãã§ãã¾ããæ¬¡ã®ããã«è¨è¿°ããã°ãtitleãã«ãPerlããå«ãã§ããè¡ã ããåå¾ãããã¨ãã§ãã¾ãã
# ãtitleãã«ãPerlããå«ã select * from book where title like '%Perl%';
ãããã§ãã¼ã¿ãã¼ã¹ã«ãã¼ã¿ãä¿åãã¦ãåå¾ããæä½éã®ç¥èã¯ãã¹ã¿ã¼ã§ãã¾ããã