(This page was last modified on 2003/07/20 01:16:48 UTC)
SQLite ライブラリã¯æ¨™æº–ã® SQL 言語ã®ã»ã¨ã‚“ã©ã‚’ç†è§£ã—ã¾ã™ã€‚ ã—ã‹ã— 一部ã®æ©Ÿèƒ½ã«ã¤ã„ã¦ã¯èªã¿é£›ã°ã•ã‚Œã€ ã¾ãŸåŒæ™‚ã«ã„ã‚ã„ã‚ãªæ©Ÿèƒ½ãŒå°‘ã—ãšã¤è¿½åŠ ã•ã‚Œã¦ãã¦ã„ã¾ã™ã€‚ ã“ã®ãƒ‰ã‚ュメントã§ã¯ SQLite ㌠SQL 言語ã®ã©ã®éƒ¨åˆ†ã«ã¤ã„ã¦ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã®ã‹ã€ ã‚‚ã—ãã¯ã—ãªã„ã®ã‹ã‚’解説ã—ã¾ã™ã€‚ ドã‚ュメントã®æœ€å¾Œã«ã¯ ã‚ーワード ã®ä¸€è¦§ã‚’付ã‘ã¦ã„ã¾ã™ã€‚
以下ã®æ›¸å¼ä¸€è¦§ã«ãŠã„ã¦ã€ãƒªãƒ†ãƒ©ãƒ«ãƒ†ã‚ストã¯é’ã®ãƒœãƒ¼ãƒ«ãƒ‰ä½“ã§ç¤ºã•ã‚Œã¾ã™ã€‚ éžç«¯æœ«ã‚·ãƒ³ãƒœãƒ«ã¯èµ¤ã®ã‚¤ã‚¿ãƒªãƒƒã‚¯ä½“ã§ç¤ºã•ã‚Œã¾ã™ã€‚ 演算åãれ自体ãŒãƒžãƒ¼ã‚¯ã‚¢ãƒƒãƒ—言語書å¼ã®ä¸€éƒ¨ã«ãªã‚‹ã‚‚ã®ã«ã¤ã„ã¦ã¯ã€ é»’ã„ãƒãƒ¼ãƒžãƒ³ä½“ã§ç¤ºã—ã¦ã„ã¾ã™ã€‚
ã“ã®ãƒ‰ã‚ュメント㯠SQLite ã§å®Ÿè£…ã•ã‚Œã¦ã„ã‚‹ SQL 文法ã®æ¦‚è¦ã§ã‚ã‚‹ã«éŽãŽã¾ã›ã‚“。 多ãã®ä½Žãƒ¬ãƒ™ãƒ«ã®éƒ¨å“ã«ã¤ã„ã¦ã¯çœç•¥ã•ã‚Œã¦ã„ã¾ã™ã€‚ SQLite 言語ãŒç†è§£ã™ã‚‹è¨€èªžã®è©³ç´°ã«ã¤ã„ã¦ã¯ã€ ソースコードã€åŠã³æ–‡æ³•ãƒ•ã‚¡ã‚¤ãƒ«ã§ã‚ã‚‹ "parse.y" ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
SQLite ã§ã¯ä»¥ä¸‹ã®æ–‡æ³•ã‚’実装ã—ã¦ã„ã¾ã™ï¼š
å„コマンドã®å®Ÿè£…ã«é–¢ã™ã‚‹è©³ç´°ã«ã¤ã„ã¦ã¯å¾Œè¿°ã—ã¦ã„ã¾ã™ã€‚
SQLステートメント ::= | ATTACH [DATABASE] データベースファイルå AS データベースå |
ATTACH DATABASE ステートメントã¯ã€ ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æŽ¥ç¶šã«å¯¾ã—ã¦æ—¢å˜ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’è¿½åŠ ã—ã¾ã™ã€‚ ファイルåã«å¥èªç‚¹ãªã©ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ã‚¯ã‚©ãƒ¼ãƒˆã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 'main' 㨠'temp' ã¨ã„ã†åå‰ã¯ã€ãã‚Œãžã‚Œãƒ¡ã‚¤ãƒ³ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŠã‚ˆã³ 一時的ãªãƒ†ãƒ¼ãƒ–ル用ã¨ã—ã¦ä½¿ã‚れるもã®ã‚’å‚ç…§ã—ã¾ã™ã€‚ ã“れらã¯åˆ‡ã‚Šé›¢ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。 接続ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¯ DETACH DATABASE ステートメントを使ã£ã¦åˆ‡ã‚Šé›¢ã•ã‚Œã¾ã™ã€‚
ユーザã¯æŽ¥ç¶šã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å¯¾ã—ã¦èªã¿æ›¸ããŒã§ãã¾ã™ãŒã€ 接続ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã‚¹ã‚ーマを変更ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 å…ƒã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ä¸ã§ã®ã¿ CREATE ã‚„ DROP ãŒã§ãã¾ã™ã€‚
接続ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ä¸ã«åŒã˜åå‰ã®æ–°ã—ã„テーブルを作るã“ã¨ã¯ã§ãã¾ã›ã‚“ãŒã€ メインデータベースã®ä¸ã«ã‚るテーブルã¨é‡è¤‡ã—ãŸåå‰ã‚’æŒã¤ãƒ†ãƒ¼ãƒ–ルをå«ã‚€ データベースを接続ã™ã‚‹ã®ã¯æ§‹ã„ã¾ã›ã‚“。 ã¾ãŸã€åŒã˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’複数回接続ã™ã‚‹ã“ã¨ã‚‚許ã•ã‚Œã¦ã„ã¾ã™ã€‚
接続ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ä¸ã«ã‚るテーブルã¯ã€ データベースå.テーブルå ã¨ã„ã†æ›¸å¼ã‚’使ã£ã¦å‚ç…§ã§ãã¾ã™ã€‚ 接続ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ä¸ã«ãƒ¡ã‚¤ãƒ³ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨é‡è¤‡ã™ã‚‹ãƒ†ãƒ¼ãƒ–ルå㌠ãªã„å ´åˆã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹åã®ãƒ—リフィックス(接é 辞)ã¯ä¸è¦ã§ã™ã€‚ データベースãŒæŽ¥ç¶šã•ã‚Œã‚‹ã¨ã€ãã®ä¸ã§é‡è¤‡ã—ãªã„åå‰ã®ãƒ†ãƒ¼ãƒ–ルã¯ã™ã¹ã¦ ãã®åå‰ã® "デフォルト" テーブルã¨ãªã‚Šã¾ã™ã€‚ ãã®å¾ŒæŽ¥ç¶šã•ã‚ŒãŸãれらã®åå‰ã®ãƒ†ãƒ¼ãƒ–ルã«ã¯ã€ ã©ã‚Œã‚‚テーブルプリフィックスãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚ ãã®åå‰ã‚’も㤠"デフォルトã®" テーブルãŒåˆ‡ã‚Šé›¢ã•ã‚Œã‚‹ã¨ã€ 最後ã«æŽ¥ç¶šã•ã‚ŒãŸãã®åå‰ã‚’æŒã¤ãƒ†ãƒ¼ãƒ–ルãŒæ–°ã—ã„デフォルトã«ãªã‚Šã¾ã™ã€‚
ãªã‚“らã‹ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒæŽ¥ç¶šä¸ã¯ã€ トランザクションã¯ã‚¢ãƒˆãƒŸãƒƒã‚¯ã«ã¯ãªã‚Šã¾ã›ã‚“。 トランザクションã¯å€‹ã€…ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ä¸ã§ã¯ã‚¢ãƒˆãƒŸãƒƒã‚¯ã§ã‚り続ã‘ã¾ã™ã€‚ ã—ã‹ã—ã€ã‚ãªãŸã®ãƒžã‚·ãƒ³ãŒ COMMIT ä¸ã«ã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã—〠ãã®éš›ï¼’ã¤ä»¥ä¸Šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’æ›´æ–°ã—ã¦ã„ãŸå ´åˆã€ ã“れらã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ã„ãšã‚Œã‹ã«ã¤ã„ã¦ã¯å¤‰æ›´ãŒé©ç”¨ã•ã‚Œã€ ãれ以外ã«ã¯é©ç”¨ã•ã‚Œãªã„ã¨ã„ã†çŠ¶æ…‹ãŒã‚ã‚Šå¾—ã¾ã™ã€‚
データベースã®åŒæ™‚接続数ã¯ã€ã‚³ãƒ³ãƒ‘イル時㫠10 ã«åˆ¶é™ã•ã‚Œã¦ã„ã¾ã™ã€‚
BEGIN TRANSACTION ステートメントを実行ã™ã‚‹ã¨ã€ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ãƒãƒƒã‚¯ã—ã¾ã™ã€‚ ã“ã®ãŸã‚ã€ã“ã®æ©Ÿèƒ½ã¯ï¼ˆç¾åœ¨ã®ã¨ã“ã‚)åŒæ™‚接続性をæãã¾ã™ã€‚
SQLステートメント ::= | BEGIN [TRANSACTION [åå‰]] [ON CONFLICT è¡çªæ™‚アルゴリズム] |
SQLステートメント ::= | END [TRANSACTION [åå‰]] |
SQLステートメント ::= | COMMIT [TRANSACTION [åå‰]] |
SQLステートメント ::= | ROLLBACK [TRANSACTION [åå‰]] |
ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0 ã®æœ€åˆã®é ƒã€SQLite ã§ã¯ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã‚„アトミックãªã‚³ãƒŸãƒƒãƒˆã‚’伴ㆠトランザクションをサãƒãƒ¼ãƒˆã—ã¾ã—ãŸã€‚接続ä¸ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒã‚ã‚‹å ´åˆã®ä¾‹å¤–ã«ã¤ã„ã¦ã¯ ATTACH ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
オプションã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³åã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚ SQLite ã¯ç¾æ™‚点ã§ã¯ãƒã‚¹ãƒˆã—ãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’許ã—ã¦ã„ã¾ã›ã‚“。 トランザクションã®ä¸ã§åˆ¥ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’開始ã—よã†ã¨ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ã€‚
トランザクションä¸ã‚’除ã„ã¦ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å¯¾ã™ã‚‹å¤‰æ›´ã¯ã§ãã¾ã›ã‚“。 データベースを変更ã™ã‚‹ã‚ˆã†ãªã‚³ãƒžãƒ³ãƒ‰ï¼ˆåŸºæœ¬çš„ã«ã¯ã€SELECT を除ã SQL コマンド)ã¯ã€ トランザクションãŒã¾ã 開始ã•ã‚Œã¦ã„ãªã‘ã‚Œã°ã€è‡ªå‹•çš„ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’開始ã•ã›ã¾ã™ã€‚ 自動的ã«é–‹å§‹ã•ã‚ŒãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯ã€ãã®ã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了をもã£ã¦ã‚³ãƒŸãƒƒãƒˆã•ã‚Œã¾ã™ã€‚
トランザクション㯠BEGIN コマンドã«ã‚ˆã‚Šãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã§é–‹å§‹ã•ã‚Œã¾ã™ã€‚ ã“ã®ã‚ˆã†ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯é€šå¸¸æ¬¡ã® COMMIT ã‹ ROLLBACK コマンドã¾ã§ç¶šãã¾ã™ã€‚ ã—ã‹ã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒã‚¯ãƒãƒ¼ã‚ºã•ã‚ŒãŸã‚Šã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸã‚Šã—ãŸå ´åˆã«ã€ ROLLBACK ã®è¡çªè§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚Œã°ã€ トランザクション㯠ROLLBACK ã•ã‚Œã¾ã™ã€‚ ROLLBACK ã®è¡çªè§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã«é–¢ã™ã‚‹è¿½åŠ æƒ…å ±ã¯ã€ãƒ‰ã‚ュメント㮠ON CONFLICT å¥ã‚’ã”覧下ã•ã„。
BEGIN ステートメントã®æœ€å¾Œã«ã‚るオプション㮠ON CONFLICT å¥ã«ã‚ˆã‚Šãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã® è¡çªè§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を変更ã§ãã¾ã™ã€‚通常ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ ABORT ã§ã™ã€‚ BEGIN ã® ON CONFLICT ã§åˆ¥ã®ã‚‚ã®ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã€ ãã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ä¸ã«ãŠã„ã¦ã¯ã€ ãã‚ŒãŒã™ã¹ã¦ã®ã‚³ãƒžãƒ³ãƒ‰ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¨ã—ã¦ä½¿ã‚ã‚Œã¾ã™ã€‚ デフォルトã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã¯ã€CREATE TABLE ã‚„ CREATE INDEX ステートメントä¸ã® 制約æ¡ä»¶ã«æ›¸ã‹ã‚ŒãŸ ON CONFLICT å¥ã€ã‚‚ã—ã㯠COPY / INSERT / UPDATE コマンドã§ä¸Šæ›¸ãã•ã‚Œã¾ã™ã€‚
コメント ::= | SQLコメント | Cスタイルã®ã‚³ãƒ¡ãƒ³ãƒˆ |
SQLコメント ::= | -- å˜ä¸€ã®è¡Œ |
Cスタイルã®ã‚³ãƒ¡ãƒ³ãƒˆ ::= | /* 複数ã®è¡Œ [*/] |
コメント㯠SQL ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€SQL クエリーã®ä¸ã«ç¾ã‚Œã‚‹ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„ã¾ã™ã€‚ ã“れらã¯ãƒ‘ーサã«ã‚ˆã‚Šãƒ›ãƒ¯ã‚¤ãƒˆã‚¹ãƒšãƒ¼ã‚¹ã¨ã—ã¦æ‰±ã‚ã‚Œã¾ã™ã€‚ コメントã¯ãƒ›ãƒ¯ã‚¤ãƒˆã‚¹ãƒšãƒ¼ã‚¹ãŒç½®ã‘ã‚‹ã¨ã“ã‚ãªã‚‰ã©ã“ã‹ã‚‰å§‹ã¾ã£ã¦ã‚‚よã〠複数行ã«ã‚ãŸã£ã¦ã‚‚構ã„ã¾ã›ã‚“。
SQL ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯é«˜ã€…行末ã¾ã§ã—ã‹æ›¸ã‘ã¾ã›ã‚“。
C ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ä½•è¡Œã«æ¸¡ã£ã¦ã‚‚構ã„ã¾ã›ã‚“。コメント終端文å—列ãŒãªã„å ´åˆã€ 入力ã®æœ€å¾Œã¾ã§ãŒã‚³ãƒ¡ãƒ³ãƒˆã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚ã“ã‚Œã¯ã‚¨ãƒ©ãƒ¼ã¨ã¯ãªã‚Šã¾ã›ã‚“。 æ–°ã—ã„ SQL ステートメントã¯ã€è¤‡æ•°è¡Œã‚³ãƒ¡ãƒ³ãƒˆã®çµ‚端ã®æ¬¡ã‹ã‚‰å§‹ã‚られã¾ã™ã€‚ C ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ã€ãƒ›ãƒ¯ã‚¤ãƒˆã‚¹ãƒšãƒ¼ã‚¹ãŒç½®ã‘ã‚‹ã¨ã“ã‚ãªã‚‰å¼ã®å†…部ã§ã‚れ別㮠SQL æ–‡ã®é€”ä¸ã§ã‚ã‚Œã€ã©ã“ã«åŸ‹ã‚込んã§ã‚‚構ã„ã¾ã›ã‚“。C ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ãƒã‚¹ãƒˆ ã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。C コメントä¸ã® SQL コメントã¯ã€å˜ã«ç„¡è¦–ã•ã‚Œã¾ã™ã€‚
SQLステートメント ::= | COPY [ OR è¡çªæ™‚アルゴリズム] [データベースå .] テーブルå FROM ファイルå [ USING DELIMITERS åŒºåˆ‡ã‚Šæ–‡å— ] |
COPY コマンドã¯ã€å¤§é‡ã®ãƒ‡ãƒ¼ã‚¿ã‚’テーブルã«å–り込むã®ã«ä½¿ã‚れる拡張機能ã§ã™ã€‚ ã“れ㯠PostgreSQL ã«ã‚ã‚‹åŒæ§˜ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’å…ƒã«ã—ã¦ä½œã‚‰ã‚Œã¾ã—ãŸã€‚実際〠SQLite ã® COPY コマンド㯠PostgreSQL ã®ãƒ€ãƒ³ãƒ—ユーティリティã§ã‚ã‚‹ pg_dump ã®å‡ºåŠ›ã‚’èªã¿è¾¼ã‚るよã†ã«ç‰¹åˆ¥ã«ãƒ‡ã‚¶ã‚¤ãƒ³ã•ã‚Œã¦ã„ã¾ã™ã®ã§ã€ PostgreSQL ã‹ã‚‰ SQLite ã«ãƒ‡ãƒ¼ã‚¿ã‚’æŒã£ã¦æ¥ã‚‹ã®ã¯ã¨ã¦ã‚‚ç°¡å˜ã§ã™ã€‚
テーブルåã¯ãƒ‡ãƒ¼ã‚¿ã‚’入れãŸã„æ—¢å˜ã®ãƒ†ãƒ¼ãƒ–ルã®åå‰ã§ã™ã€‚ ファイルåã¯ãƒ‡ãƒ¼ã‚¿ã‚’èªã¿è¾¼ã‚€ãŸã‚ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®åå‰ã‚’表ã™æ–‡å—列もã—ãã¯è˜åˆ¥åã§ã™ã€‚ ファイルåã« STDIN を指定ã™ã‚‹ã¨ã€ãƒ‡ãƒ¼ã‚¿ã‚’標準入力ã‹ã‚‰èªã¿è¾¼ã¿ã¾ã™ã€‚
入力ファイルã®å„è¡Œã¯ã€å¤‰æ›ã•ã‚Œã¦ãƒ†ãƒ¼ãƒ–ルã®ä¸€ã¤ã®è¡Œã«å…¥ã‚Šã¾ã™ã€‚ ãã‚Œãžã‚Œã®ã‚«ãƒ©ãƒ ã¯ã‚¿ãƒ–ã§åŒºåˆ‡ã‚‰ã‚Œã¾ã™ã€‚ カラムã®ãƒ‡ãƒ¼ã‚¿ä¸ã«ã‚¿ãƒ–ãŒç¾ã‚Œã‚‹å ´åˆã¯ã€ ãã®ã‚¿ãƒ–ã®å‰ã«ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ "\" æ–‡å—ãŒä»˜ãã¾ã™ã€‚ データä¸ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã¯ 2 個ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã§è¡¨ã•ã‚Œã¾ã™ã€‚ オプション㮠USING DELIMITERS å¥ã‚’使ã†ã¨ã€ 区切り文å—をタブ以外ã®ã‚‚ã®ã«å¤‰ãˆã‚‰ã‚Œã¾ã™ã€‚
カラム㌠"\N" ã§æ§‹æˆã•ã‚Œã¦ã„ã‚‹å ´åˆã€ãã®ã‚«ãƒ©ãƒ ã«ã¯ NULL ãŒå…¥ã‚Œã‚‰ã‚Œã¾ã™ã€‚
オプション㮠CONFLICT å¥ã‚’指定ã™ã‚‹ã¨ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè¡Œæ™‚ã«ãŠã‘ã‚‹ 制約é•å発生時ã«ä½¿ç”¨ã™ã‚‹ä»£æ›¿ã®è§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を指定ã§ãã¾ã™ã€‚ 詳細ã¯ON CONFLICT ã®ã‚¿ã‚¤ãƒˆãƒ«ã®ã¤ã„ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’見ã¦ãã ã•ã„。
入力データã®ã‚½ãƒ¼ã‚¹ãŒ STDIN ã®å ´åˆã€ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã¨ãƒ‰ãƒƒãƒˆ "\." ã ã‘ã®è¡Œã§å…¥åŠ›ã®çµ‚了を表ã—ã¾ã™ã€‚
SQLステートメント ::= | CREATE [
TEMP
| TEMPORARY]
[
UNIQUE]
INDEX
インデックスå
ON [ データベースå .] テーブルå ( カラムå [ , カラムå ] * ) [ ON CONFLICT è¡çªæ™‚アルゴリズム] |
カラムå ::= | åå‰ [ ASC | DESC ] |
CREATE INDEX コマンドã®æ§‹æˆã¯ã€ "CREATE INDEX" ã¨ã„ã†ã‚ーワードã«ç¶šã„ã¦æ–°ã—ã„インデックスã®åå‰ã€ ã‚ーワード "ON"ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã•ã‚Œã‚‹ã¹ãæ—¢å˜ã®ãƒ†ãƒ¼ãƒ–ルã®åå‰ã€ ãã—ã¦ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®ã‚ーã¨ã—ã¦ä½¿ã‚れるã€ãƒ†ãƒ¼ãƒ–ルä¸ã®ã‚«ãƒ©ãƒ åã®ãƒªã‚¹ãƒˆã‚’ 括弧ã§æ‹¬ã£ãŸã‚‚ã®ã¨ãªã‚Šã¾ã™ã€‚ å„カラムåã®å¾Œã«ã¯ã‚½ãƒ¼ãƒˆé †ã‚’指示ã™ã‚‹ãŸã‚ã® "ASC" ã¾ãŸã¯ "DESC" ã¨ã„ㆠã‚ーワードを置ãã“ã¨ãŒã§ãã¾ã™ãŒã€ç¾åœ¨ã®å®Ÿè£…ã§ã¯ã‚½ãƒ¼ãƒˆé †ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚ ソートã¯å¸¸ã«æ˜‡é †ã«è¡Œã‚ã‚Œã¾ã™ã€‚
一ã¤ã®ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã—ã¦ä»˜ã‘られるインデックスã®æ•°ã€ ãŠã‚ˆã³ä¸€ã¤ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã§æŒ‡å®šã§ãるカラム数ã«ã¤ã„ã¦ã‚‚特ã«åˆ¶é™ã¯ã‚ã‚Šã¾ã›ã‚“。
CREATE 㨠INDEX ã®é–“ã« UNIQUE ã¨ã„ã†ã‚ーワードãŒç¾ã‚Œã‚‹ã¨ã€ é‡è¤‡ã—ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®ã‚¨ãƒ³ãƒˆãƒªã‚’許ã•ãªããªã‚Šã¾ã™ã€‚ é‡è¤‡ã—ãŸã‚¨ãƒ³ãƒˆãƒªã‚’挿入ã—よã†ã¨ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ã¨ãªã‚Šã¾ã™ã€‚
オプション㮠CONFLICT å¥ã‚’指定ã™ã‚‹ã¨ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè¡Œæ™‚ã«ãŠã‘ã‚‹ 制約é•å発生時ã«ä½¿ç”¨ã™ã‚‹ä»£æ›¿ã®è§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を指定ã§ãã¾ã™ã€‚ UNIQUE 制約ãŒæŒ‡å®šã•ã‚Œãªã„ã¨ã€ ã“ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«ã¤ã„ã¦ã¯åˆ¶ç´„æ¡ä»¶ãŒãªããªã£ã¦ã—ã¾ã„ã¾ã™ã®ã§ã€ ã“れ㯠UNIQUE 制約ãŒæŒ‡å®šã•ã‚ŒãŸå ´åˆã®ã¿æ„味をæŒã¡ã¾ã™ã€‚ デフォルトã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 㯠ABORT ã§ã™ã€‚ã‚‚ã—ã€COPY / INSERT / UPDATE ステートメントã§ç‰¹å®šã®è¡çªè§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を指定ã—ãŸå ´åˆã€ ã“ã“ã§æŒ‡å®šã•ã‚Œã¦ã„るデフォルトã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒãã‚Œã§ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚ 詳細ã¯ON CONFLICTã®ã‚¿ã‚¤ãƒˆãƒ«ã®ã¤ã„ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’見ã¦ãã ã•ã„。
インデックスã•ã‚Œã‚‹ãƒ†ãƒ¼ãƒ–ルãŒä¸€æ™‚çš„ãªã‚‚ã®ã‹ã©ã†ã‹ã«ã‚ˆã£ã¦ã€ å„ CREATE INDEX 宣言時ã®æ£ç¢ºãªã‚¯ã‚¨ãƒªãƒ¼ãƒ†ã‚ストãŒãã‚Œãžã‚Œ sqlite_temp_master ã‚‚ã—ã㯠sqlite_master テーブルã«æ ¼ç´ã•ã‚Œã¾ã™ã€‚ データベースãŒé–‹ã‹ã‚Œã‚‹ãŸã³ã«ã™ã¹ã¦ã® CREATE INDEX ステートメント㌠sqlite_master テーブルã‹ã‚‰èªã¿è¾¼ã¾ã‚Œã€ã“れを元㫠SQLite ã®å†…部表ç¾ã«ãŠã‘るインデックスレイアウトãŒå†ç”Ÿæˆã•ã‚Œã¾ã™ã€‚
接続ã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã¯ã€ 一時的ã§ãªã„インデックスをテーブルã«è¿½åŠ ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 ãれらã¯DROP INDEXã§å‰Šé™¤ã•ã‚Œã¾ã™ã€‚
SQLコマンド ::= | CREATE [TEMP | TEMPORARY] TABLE テーブルå ( カラム定義 [, カラム定義]* [, 制約æ¡ä»¶]* ) |
SQLコマンド ::= | CREATE [TEMP | TEMPORARY] TABLE テーブルå AS SELECTæ–‡ |
カラム定義 ::= | åå‰ [データ型] [[CONSTRAINT åå‰] カラム制約æ¡ä»¶]* |
データ型 ::= | åž‹å | åž‹å ( æ•°å— ) | åž‹å ( æ•°å— , æ•°å— ) |
カラム制約æ¡ä»¶ ::= | NOT NULL [ CONFLICT å¥ ] | PRIMARY KEY [ã‚½ãƒ¼ãƒˆé †] [ CONFLICT å¥ ] | UNIQUE [ CONFLICT å¥ ] | CHECK ( è©•ä¾¡å¼ ) [ CONFLICT å¥ ] | DEFAULT 値 |
制約æ¡ä»¶ ::= | PRIMARY KEY ( åå‰ [, åå‰]* ) [ CONFLICT å¥ ]| UNIQUE ( åå‰ [, åå‰]* ) [ CONFLICT å¥ ] | CHECK ( è©•ä¾¡å¼ ) [ CONFLICT å¥ ] |
CONFLICT å¥ ::= | ON CONFLICT è¡çªæ™‚アルゴリズム|
CREATE TABLE ã¯ã€åŸºæœ¬çš„ã«ã¯ã‚ーワード "CREATE TABLE" ã®å¾Œã«æ–°ã—ã„テーブルã®åå‰ã€ ãã—ã¦ã‚«ãƒ©ãƒ 定義ã¨åˆ¶ç´„æ¡ä»¶ã‚’括弧ã§æ‹¬ã£ãŸã‚‚ã®ãŒç¶šãã¾ã™ã€‚ テーブルåã¯è˜åˆ¥åã‹ã¾ãŸã¯æ–‡å—列ã§ã™ã€‚ "sqlite_" ã§å§‹ã¾ã‚‹ãƒ†ãƒ¼ãƒ–ルåã¯ã‚¨ãƒ³ã‚¸ãƒ³ãŒä½¿ã†ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚
個々ã®ã‚«ãƒ©ãƒ 定義ã¯ã€ã‚«ãƒ©ãƒ åã®å¾Œã«ãã®ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ¼ã‚¿åž‹ãŒã‚り〠オプションã§ä¸€ã¤ä»¥ä¸Šã®åˆ¶ç´„æ¡ä»¶ãŒç¶šãã¾ã™ã€‚ã—ã‹ã—ãªãŒã‚‰ã€SQLite ã«ã¯ åž‹ãŒã‚ã‚Šã¾ã›ã‚“。 ã“ã®ãŸã‚ã€ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ¼ã‚¿åž‹ã«ã‚ˆã£ã¦ãã®ã‚«ãƒ©ãƒ ã«æ ¼ç´ã•ã‚Œã‚‹ãƒ‡ãƒ¼ã‚¿ãŒåˆ¶é™ã•ã‚Œã‚‹ ã¨ã„ã£ãŸã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 ã™ã¹ã¦ã®æƒ…å ±ã¯ NULL ã§çµ‚端ã•ã‚ŒãŸæ–‡å—列ã«æ ¼ç´ã•ã‚Œã¾ã™ã€‚ UNIQUE 制約ã¯ã€æŒ‡å®šã•ã‚ŒãŸãã®ã‚«ãƒ©ãƒ ã‚’ã‚ーã¨ã™ã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’生æˆã—ã¾ã™ã€‚ ã“ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ä¸€æ„ã®ã‚ーをå«ã‚“ã§ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 DEFAULT 制約ã¯ãƒ‡ãƒ¼ã‚¿ã‚’挿入ã™ã‚‹å†ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’指定ã—ã¾ã™ã€‚
PRIMARY KEY(主ã‚ー)を指定ã—ã¦ã‚‚〠通常ã¯å˜ã«ä¸»ã‚ーã«å¯¾ã—ã¦ãƒ¦ãƒ‹ãƒ¼ã‚¯ãªã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’生æˆã™ã‚‹ã ã‘ã§ã™ã€‚ ã—ã‹ã—ãªãŒã‚‰ã€ä¸»ã‚ー㌠INTEGER データ型をæŒã¤å˜ç‹¬ã®ã‚«ãƒ©ãƒ ã§æ§‹æˆã•ã‚Œã‚‹å ´åˆã€ 内部的ã«ã¯ãã®ã‚«ãƒ©ãƒ ã¯ãã®ãƒ†ãƒ¼ãƒ–ル㮠B ツリーã«ãŠã‘る実際ã®ã‚ーã«ãªã‚Šã¾ã™ã€‚ ã¤ã¾ã‚Šã€ãã®ã‚«ãƒ©ãƒ ã¯ä¸€æ„ã®æ•´æ•°å€¤ã ã‘ã‚’ä¿æŒã§ãã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚(ãŸã ã—〠SQLite ã¯ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ¼ã‚¿åž‹ã®æŒ‡å®šã‚’無視ã—ã€ãã®ã‚«ãƒ©ãƒ ãŒã©ã†ã„ã†ãƒ‡ãƒ¼ã‚¿åž‹ã¨ã—㦠宣言ã•ã‚Œã¦ã„ã‚‹ã‹ã«ã‹ã‹ã‚らãšã€ã„ã‹ãªã‚‹ç¨®é¡žã®ãƒ‡ãƒ¼ã‚¿ã‚’ã‚‚æ ¼ç´ã§ãã¦ã—ã¾ã„ã¾ã™ã®ã§ã€ ãã®å ´åˆã¯ã“ã®é™ã‚Šã§ã¯ã‚ã‚Šã¾ã›ã‚“。)INTEGER PRIMARY KEY ã®å±žæ€§ã‚’æŒã¤ã‚«ãƒ©ãƒ ãŒãªã„テーブルã®å ´åˆ ã€B ツリーã‚ーã¯è‡ªå‹•çš„ã«ç”Ÿæˆã•ã‚Œã‚‹æ•´æ•°ã¨ãªã‚Šã¾ã™ã€‚ ã‚る行㮠B ツリーã®ã‚ーã¯ã€ç‰¹åˆ¥ãªåå‰ã§ã‚ã‚‹ "ROWID", "OID", "_ROWID_" ã®ã„ãšã‚Œã‹ã‚’使ã†ã“ã¨ã§å¸¸ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ã“ã®æ©Ÿèƒ½ã¯ INTEGER PRIMARY KEY ã®æœ‰ç„¡ã«ã‹ã‹ã‚らãšæœ‰åŠ¹ã§ã™ã€‚
"CREATE" 㨠"TABLE" ã®é–“ã« "TEMP" ã‚‚ã—ã㯠"TEMPORARY" (一時的)ã¨ã„ㆠã‚ーワードãŒã‚ã‚‹å ´åˆã€ç”Ÿæˆã•ã‚Œã‚‹ãƒ†ãƒ¼ãƒ–ルã¯ãã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’é–‹ã„ãŸãƒ—ãƒã‚»ã‚¹ ã®ã¿ã‹ã‚‰ã—ã‹è¦‹ãˆãªããªã‚Šã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒé–‰ã˜ã‚‰ã‚Œã‚‹ã¨è‡ªå‹•çš„ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ 一時テーブルã«å¯¾ã—ã¦ç”Ÿæˆã•ã‚ŒãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚‚一時的ãªã‚‚ã®ã«ãªã‚Šã¾ã™ã€‚ 一時テーブルãŠã‚ˆã³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¨ã¯ç‹¬ç«‹ã—ãŸåˆ¥ã® ファイルã«æ ¼ç´ã•ã‚Œã¾ã™ã€‚
å„制約æ¡ä»¶ã®æ¬¡ã«ã‚ªãƒ—ションã§CONFLICT å¥ã‚’指定ã™ã‚‹ã¨ã€ãã®åˆ¶ç´„ã«ãŠã‘ã‚‹ デフォルトã®åˆ¶ç´„è¡çªæ™‚解決アルゴリズムã®ä»£æ›¿ã¨ãªã‚‹ã‚‚ã®ã‚’指定ã§ãã¾ã™ã€‚ デフォルト㯠ABORT ã§ã™ã€‚1ã¤ã®ãƒ†ãƒ¼ãƒ–ルã«ç•°ãªã£ãŸåˆ¶ç´„æ¡ä»¶ãŒã‚ã‚‹å ´åˆã€ ç•°ãªã£ãŸãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¡çªæ™‚解決アルゴリズムãŒå˜åœ¨ã™ã‚‹ã“ã¨ã«ãªã‚‹ã“ã¨ã‚‚ ã‚ã‚Šã¾ã™ã€‚ã‚‚ã— COPY / INSERT / UPDATE コマンドã§ãã‚Œãžã‚Œç•°ãªã£ãŸ è¡çªæ™‚解決アルゴリズムを指定ã—ã¦ã„ã‚‹å ´åˆã€CREATE TABLE ステートメント㧠指定ã•ã‚ŒãŸãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã«ä»£ã‚ã‚Šã€ãれらã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ㌠使ã‚ã‚Œã¾ã™ã€‚ 詳細ã¯ON CONFLICTã®ã‚¿ã‚¤ãƒˆãƒ«ã®ã¤ã„ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’見ã¦ãã ã•ã„。
CHECK 制約ã¯ç¾æ™‚点ã®å®Ÿè£…ã§ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚CHECK 制約ã®ã‚µãƒãƒ¼ãƒˆã¯ã€ å°†æ¥å®Ÿè£…ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚version 2.3.0 ã«ãŠã„ã¦ã¯ã€NOT NULL, PRIMARY KEY, UNIQUE 制約ã¯ã™ã¹ã¦å‹•ãã¾ã™ã€‚
ã‚るテーブルã«ãŠã„ã¦ã€ã‚«ãƒ©ãƒ 数や制約数ãŒå‹æ‰‹ã«åˆ¶é™ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 å˜ä¸€ã®è¡Œã«æ ¼ç´ã§ãるデータã®ç·é‡ã¯ã€ç´„ 1MB ã«åˆ¶é™ã•ã‚Œã¦ã„ã¾ã™ã€‚ (ソースコードã®ä¸ã§ #define を一箇所変ãˆã¦å†ã‚³ãƒ³ãƒ‘イルã™ã‚‹ã“ã¨ã§ã€ ã“ã®åˆ¶é™ã¯ 16MB ã¾ã§ç·©å’Œã§ãã¾ã™ï¼‰
CREATE TABLE AS ã®æ›¸å¼ã¯ã€ã‚るクエリーã®çµæžœã‚»ãƒƒãƒˆã‚’ãã®ã¾ã¾ãƒ†ãƒ¼ãƒ–ル㨠ã™ã‚‹ã“ã¨ã‚’定義ã—ã¾ã™ã€‚テーブルã®ã‚«ãƒ©ãƒ åã¯ãã®çµæžœã‚»ãƒƒãƒˆå†…ã®ã‚«ãƒ©ãƒ å㨠ãªã‚Šã¾ã™ã€‚
ãã‚Œãžã‚Œã® CREATE TABLE ステートメントã®æ£ç¢ºãªã‚¯ã‚¨ãƒªãƒ¼æ–‡ãŒ sqlite_master テーブルã«æ ¼ç´ã•ã‚Œã¾ã™ã€‚ データベースãŒé–‹ã‹ã‚Œã‚‹ãŸã³ã«ã™ã¹ã¦ã® CREATE TABLE ステートメント㌠sqlite_master テーブルã‹ã‚‰èªã¿è¾¼ã¾ã‚Œã€ã“れを元㫠SQLite ã®å†…部表ç¾ã«ãŠã‘るテーブルレイアウトãŒå†ç”Ÿæˆã•ã‚Œã¾ã™ã€‚ å…ƒã®ã‚³ãƒžãƒ³ãƒ‰ãŒ CREATE TABLE AS ã ã£ãŸå ´åˆã€ã“ã‚Œã¨åŒç‰ã® CREATE TABLE ステートメントãŒçµ„ã¿ç«‹ã¦ã‚‰ã‚Œã€å…ƒã®ã‚³ãƒžãƒ³ãƒ‰ã«ä»£ã‚ã£ã¦ sqlite_master ã«æ ¼ç´ã•ã‚Œã¾ã™ã€‚ CREATE TEMPORARY TABLE ステートメントã®ã‚¯ã‚¨ãƒªãƒ¼æ–‡ã¯ sqlite_temp_master テーブルã«æ ¼ç´ã•ã‚Œã¾ã™ã€‚
テーブルを削除ã™ã‚‹ã«ã¯ DROP TABLE ステートメントを 使ã„ã¾ã™ã€‚接続ä¸ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å±žã™ã‚‹ä¸€æ™‚çš„ã§ãªã„テーブルã¯å‰Šé™¤ã§ãã¾ã›ã‚“。
SQLステートメント ::= | CREATE [TEMP | TEMPORARY] TRIGGER トリガå [ BEFORE | AFTER ] データベースイベント ON [データベースå .] テーブルå トリガーアクション |
SQLステートメント ::= | CREATE [TEMP | TEMPORARY] TRIGGER トリガå INSTEAD OF データベースイベント ON [データベースå .] ビューå トリガーアクション |
データベースイベント ::= | DELETE | INSERT | UPDATE | UPDATE OF カラムã®ä¸¦ã³ |
トリガーアクション ::= | [ FOR EACH ROW | FOR EACH STATEMENT ] [ WHEN è©•ä¾¡å¼ ] BEGIN トリガーステップ ; [ トリガーステップ ; ]* END |
トリガーステップ ::= | UPDATE文 | INSERT文 | DELETE文 | SELECT文 |
CREATE TRIGGER ステートメントã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚ーマã«å¯¾ã—ã¦ãƒˆãƒªã‚¬ã‚’ è¿½åŠ ã™ã‚‹ã®ã«ä½¿ã‚ã‚Œã¾ã™ã€‚トリガã¯ã€æŒ‡å®šã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¤ãƒ™ãƒ³ãƒˆ (データベースイベント)ãŒç™ºç”Ÿã—ãŸæ™‚ã«è‡ªå‹•çš„ã«å®Ÿè¡Œã•ã‚Œã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æ“作 (トリガーアクション)ã§ã™ã€‚
トリガã¯ã€ç‰¹å®šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã™ã‚‹ DELETE / INSERT / UPDATE ㌠行ã‚ã‚ŒãŸã‹ã€ã‚‚ã—ãã¯ã‚る特定ã®ãƒ†ãƒ¼ãƒ–ルã®ä¸ã®æŒ‡å®šã•ã‚ŒãŸï¼‘ã¤ä»¥ä¸Šã®ã‚«ãƒ©ãƒ ㌠UPDATE ã«ã‚ˆã‚Šæ›´æ–°ã•ã‚ŒãŸã‚¿ã‚¤ãƒŸãƒ³ã‚°ã§èµ·å‹•ã™ã‚‹ã‚ˆã†ã«ã§ãã¾ã™ã€‚
ç¾æ™‚点ã§ã¯ SQLite 㯠FOR EACH ROW トリガã®ã¿ã‚’サãƒãƒ¼ãƒˆã—〠FOR EACH STATEMENT トリガã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。 ãã®ãŸã‚明示的㫠FOR EACH ROW を書ãã®ã¯ã‚ªãƒ—ション扱ã„ã«ãªã£ã¦ã„ã¾ã™ã€‚ FOR EACH ROW ã¯ã€ãƒˆãƒªã‚¬ãƒ¼ã‚¹ãƒ†ãƒƒãƒ— ã¨ã—ã¦æŒ‡å®šã•ã‚ŒãŸ SQL æ–‡ãŒã€ INSERT / UPDATE / DELETE ã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã‚‹å„データベースã®è¡Œã«å¯¾ã—〠起動ã•ã‚ŒãŸãƒˆãƒªã‚¬ã®ç™ºç”ŸåŽŸå› ã¨ãªã£ãŸã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã«ã‚ˆã‚Šï¼ˆ WHEN å¥ã«å¾“ã£ã¦ï¼‰ 実行ã•ã‚Œã‚‹ã“ã¨ã‚’æš—ã«ç¤ºã—ã¦ã„ã¾ã™ã€‚
WHEN å¥ã¨ トリガーステップ ã¯ã€ã„ãšã‚Œã‚‚ INSERT / UPDATE / DELETE ã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã‚‹è¡Œã®è¦ç´ ã«ã€ãれらをå‚ç…§ã™ã‚‹ãŸã‚ã® "NEW.カラムå" 㨠"OLD.カラムå" ã¨ã„ã†æ›¸å¼ã‚’使ã£ã¦ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã“㧠カラムå ã¯ãƒˆãƒªã‚¬ãŒé–¢é€£ä»˜ã‘られã¦ã„るテーブルã®ã‚«ãƒ©ãƒ ã®åå‰ã§ã™ã€‚ OLD 㨠NEW å‚照㯠トリガーイベント ã®ã†ã¡ã®ã„ãšã‚Œã‹é©åˆ‡ãªå€‹æ‰€ï¼ˆä¸‹è¨˜ã‚’å‚照) ã®ã¿ã§ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
INSERT | NEW å‚ç…§ãŒæœ‰åŠ¹ |
UPDATE | NEW 㨠OLD å‚ç…§ãŒæœ‰åŠ¹ |
DELETE | OLD å‚ç…§ãŒæœ‰åŠ¹ |
WHEN å¥ãŒæŒ‡å®šã•ã‚ŒãŸå ´åˆã€ãƒˆãƒªã‚¬ãƒ¼ã‚¹ãƒ†ãƒƒãƒ— ã¨ã—ã¦æŒ‡å®šã•ã‚ŒãŸ SQL ステートメント㯠WHEN å¥ãŒçœŸã¨ãªã‚‹è¡Œã®ã¿ã§å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚WHEN å¥ãŒæŒ‡å®šã•ã‚Œãªã„å ´åˆã€ SQL ステートメントã¯ã™ã¹ã¦ã®è¡Œã§å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚
トリガータイミング(訳注:[ BEFORE | AFTER ])ã¯ã€é–¢é€£ã™ã‚‹è¡Œã¸ã®æŒ¿å…¥ã€æ›´æ–°ã€ 削除ã®å‰å¾Œã©ã¡ã‚‰ã§ãƒˆãƒªã‚¬ãƒ¼ã‚¹ãƒ†ãƒƒãƒ— を実行ã™ã‚‹ã®ã‹ã‚’指定ã—ã¾ã™ã€‚
INSERT ã¾ãŸã¯ UPDATE 㮠トリガーステップ ã®ä¸€éƒ¨ã¨ã—㦠ON CONFLICT å¥ã‚’指定ã§ãã¾ã™ã€‚ã—ã‹ã—ãªãŒã‚‰ã€å®Ÿè¡Œã•ã‚Œã‚‹ãƒˆãƒªã‚¬ã®è¦å› ã¨ãªã‚‹ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆ ã®æ–¹ã§ã‚‚ ON CONFLICT å¥ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã€å¾Œè€…ã®è¡çªå‡¦ç†ãƒãƒªã‚·ãƒ¼ã®æ–¹ãŒ 代ã‚ã‚Šã«ä½¿ã‚ã‚Œã¾ã™ã€‚
ã‚るテーブルãŒå‰Šé™¤ã•ã‚Œã‚‹ã¨ã€ãれらã«é–¢é€£ã™ã‚‹ãƒˆãƒªã‚¬ã‚‚自動的ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚
CREATE TRIGGER ステートメント㫠INSTEAD OF を指定ã™ã‚‹ã“ã¨ã§ã€ 通常ã®ãƒ†ãƒ¼ãƒ–ルã ã‘ã§ãªãビューã«å¯¾ã—ã¦ã‚‚トリガを定義ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã²ã¨ã¤ã®ãƒ“ューã«å¯¾ã—ã¦ï¼‘ã¤ä»¥ä¸Šã® ON INSERT / ON DELETE / ON UPDATE トリガを定義ã§ãã¾ã™ã€‚ã“ã†ã™ã‚‹ã¨ã€ãƒ“ューã«å¯¾ã—㦠INSERT / DELETE / UPDATE を実行ã—ã¦ã‚‚エラーã«ãªã‚Šã¾ã›ã‚“。ビューã«å¯¾ã™ã‚‹ INSERT / DELETE / UPDATE ãŒã€ ãã‚Œãžã‚Œã«é–¢é€£ã™ã‚‹ãƒˆãƒªã‚¬ã‚’èµ·å‹•ã™ã‚‹ã‚ˆã†ã«ãªã‚‹ã®ã§ã™ã€‚ãれらã®ãƒ“ューã®å…ƒã«ãªã‚‹ 実際ã®ãƒ†ãƒ¼ãƒ–ルã¯ï¼ˆãƒˆãƒªã‚¬å†…ã§æ˜Žç¤ºçš„ã«è¡Œã‚ãªã„é™ã‚Šï¼‰å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。
例:
"customers" テーブルã«é¡§å®¢ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒå…¥ã£ã¦ãŠã‚Šã€ãã®æ³¨æ–‡ãƒ¬ã‚³ãƒ¼ãƒ‰ãŒ "orders" テーブルã«å…¥ã£ã¦ã„ã‚‹ã¨ã—ã¾ã™ã€‚以下ã®ãƒˆãƒªã‚¬ã‚’定義ã—ã¦ã€é¡§å®¢ãŒè‡ªåˆ†ã®ä½æ‰€ã‚’ 変更ã—ãŸã¨ãã€é–¢é€£ã™ã‚‹ã™ã¹ã¦ã®æ³¨æ–‡ã®å®›åãŒæ›¸ãæ›ã‚るよã†ã«ã—ã¦ã¿ã¾ã—ょã†ï¼š
CREATE TRIGGER update_customer_address UPDATE OF address ON customers BEGIN UPDATE orders SET address = new.address WHERE customer_name = old.name; END;
ã“ã®ãƒˆãƒªã‚¬ã‚’インストールã—ã¦ã‹ã‚‰ã€ä»¥ä¸‹ã®ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã‚’実行ã™ã‚‹ã¨ï¼š
UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones';
以下ã®ã‚¯ã‚¨ãƒªãƒ¼ãŒè‡ªå‹•çš„ã«å®Ÿè¡Œã•ã‚Œã¾ã™ï¼š
UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';
注æ„:ç¾æ™‚点ã§ã¯ã€INTEGER PRIMARY KEY フィールドをæŒã¤ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã—ã¦ãƒˆãƒªã‚¬ã‚’ 定義ã™ã‚‹ã¨ã€å¦™ãªæŒ¯ã‚‹èˆžã„ã‚’ã™ã‚‹ã“ã¨ãŒã‚るよã†ã§ã™ã€‚トリガ起動ã®ãã£ã‹ã‘ã¨ãªã‚‹ ステートメントã«ã‚ˆã£ã¦äº‹å¾Œã«æ›´æ–°ã•ã‚Œã‚‹è¡Œã®ä¸ã® INTEGER PRIMARY KEY フィールドを BEFORE トリガãŒå¤‰æ›´ã™ã‚‹å ´åˆã€æ›´æ–°ãŒè¡Œã‚ã‚Œãªã„ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ ã“ã‚Œã¯ã€ãƒ†ãƒ¼ãƒ–ル定義ã®éš› INTEGER PRIMARY KEY ã§ã¯ãªã PRIMARY KEY ã§ã‚«ãƒ©ãƒ を定義ã—ã¦ãŠãã¨ã„ã†æ–¹æ³•ã§å›žé¿ã§ãã¾ã™ã€‚
トリガプãƒã‚°ãƒ©ãƒ ã«å¯¾ã—ã¦ã€ä»¥ä¸‹ã®æ›¸å¼ã«ã‚ˆã‚Šç‰¹åˆ¥ãª RAISE() ã¨ã„ㆠSQL 関数を 使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
RAISE関数 ::= | RAISE ( ABORT, エラーメッセージ ) | RAISE ( FAIL, エラーメッセージ ) | RAISE ( ROLLBACK, エラーメッセージ ) | RAISE ( IGNORE ) |
トリガプãƒã‚°ãƒ©ãƒ ã®å®Ÿè¡Œä¸ã«æœ€åˆã®ï¼“ã¤ã®æ›¸å¼ã®ã„ãšã‚Œã‹ãŒå‘¼ã³å‡ºã•ã‚Œã‚‹ã¨ã€ 指定ã•ã‚ŒãŸ ON CONFLICT 処ç†ï¼ˆABORT / FAIL / ROLLBACK ã®ã„ãšã‚Œã‹ï¼‰ãŒ 実行ã•ã‚Œã€ç¾åœ¨ã®ã‚¯ã‚¨ãƒªãƒ¼ã¯çµ‚了ã—ã¾ã™ã€‚ユーザã«ã¯æŒ‡å®šã•ã‚ŒãŸã‚¨ãƒ©ãƒ¼ メッセージã¨ã¨ã‚‚ã« SQLITE_CONSTRAINT ã®ã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ãŒè¿”ã•ã‚Œã¾ã™ã€‚
RAISE(IGNORE) ãŒå‘¼ã°ã‚Œã‚‹ã¨ã€ç¾åœ¨ã®ãƒˆãƒªã‚¬ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ®‹ã‚Šã®éƒ¨åˆ†ã€ 実行ã•ã‚ŒãŸãƒˆãƒªã‚¬ãƒ—ãƒã‚°ãƒ©ãƒ ã®èµ·å‹•è¦å› ã¨ãªã£ãŸã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã€ ãŠã‚ˆã³ã“ã‚Œã«ç¶šã実行ã•ã‚Œã‚‹ã¹ãã ã£ãŸãƒˆãƒªã‚¬ãƒ—ãƒã‚°ãƒ©ãƒ ã¯ä¸æ¢ã•ã‚Œã¾ã™ã€‚ データベースã®å¤‰æ›´ã¯ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã•ã‚Œã¾ã›ã‚“。 実行ã•ã‚ŒãŸãƒˆãƒªã‚¬ãƒ—ãƒã‚°ãƒ©ãƒ ã®èµ·å‹•è¦å› ã¨ãªã£ãŸã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆãれ自身㌠トリガプãƒã‚°ãƒ©ãƒ ã®ä¸€éƒ¨ã ã£ãŸå ´åˆã€ ãã®ãƒˆãƒªã‚¬ãƒ—ãƒã‚°ãƒ©ãƒ ã®å®Ÿè¡Œã¯ãã®æ¬¡ã®ã‚¹ãƒ†ãƒƒãƒ—ã‹ã‚‰å†é–‹ã•ã‚Œã¾ã™ã€‚
トリガを削除ã™ã‚‹ã«ã¯ DROP TRIGGER を使ã„ã¾ã™ã€‚ 接続ä¸ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ãƒ†ãƒ¼ãƒ–ルã«ä¸€æ™‚çš„ã§ãªã„トリガを定義ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
SQLコマンド ::= | CREATE [TEMP | TEMPORARY] VIEW ビューå AS SELECTæ–‡ |
CREATE VIEW コマンドã¯äº‹å‰ã«ãƒ‘ッケージã•ã‚ŒãŸ SELECT ステートメントã«åå‰ã‚’割り当ã¦ã¾ã™ã€‚ã„ã£ãŸã‚“ビューãŒä½œã‚‰ã‚Œã‚‹ã¨ã€ ãã‚Œã¯åˆ¥ã® SELECT ã® FROM å¥ã«ãŠã„ã¦ã€ãƒ†ãƒ¼ãƒ–ルåã®ä»£ã‚ã‚Šã«ä½¿ãˆã¾ã™ã€‚
ビューã«å¯¾ã™ã‚‹ COPY / DELETE / INSERT / UPDATE ã¯ã§ãã¾ã›ã‚“。 SQLite ã§ã¯ãƒ“ューã¯ãƒªãƒ¼ãƒ‰ã‚ªãƒ³ãƒªãƒ¼ã§ã™ã€‚ã—ã‹ã—ãªãŒã‚‰ã€å¤šãã®ã‚±ãƒ¼ã‚¹ã«ãŠã„ã¦ã¯ ビューã«å¯¾ã—㦠TRIGGER を使ã†ã“ã¨ã§åŒã˜ã“ã¨ã‚’å®Ÿç¾ ã§ãã¾ã™ã€‚ビュー㯠DROP VIEW コマンドã§å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ 接続ä¸ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ãƒ†ãƒ¼ãƒ–ルã«ä¸€æ™‚çš„ã§ãªã„ビューを定義ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
SQLステートメント ::= | DELETE FROM [データベースå .] テーブルå [WHERE 評価å¼] |
DELETE コマンドã¯ãƒ†ãƒ¼ãƒ–ルã‹ã‚‰ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’削除ã—ã¾ã™ã€‚書å¼ã¨ã—ã¦ã¯ã€"DELETE FROM" コマンドã«ç¶šã‘ã¦å‰Šé™¤ã—ãŸã„レコードをæŒã¤ãƒ†ãƒ¼ãƒ–ルåを指定ã—ã¾ã™ã€‚
WHERE å¥ã‚’ã¤ã‘ãªã„ã¨ã€ãã®ãƒ†ãƒ¼ãƒ–ルã®ã™ã¹ã¦ã®è¡ŒãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚ WHERE å¥ãŒæŒ‡å®šã•ã‚Œã‚‹ã¨ã€ãã®è©•ä¾¡å¼ã«ãƒžãƒƒãƒã™ã‚‹è¡Œã ã‘ãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚
SQLコマンド ::= | DETACH [DATABASE] データベースå |
ã“ã®ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã¯ ATTACH DATABASE ステートメントã«ã‚ˆã£ã¦ 以å‰ã«æŽ¥ç¶šã•ã‚ŒãŸè¿½åŠ ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’切り離ã™ã€‚åŒã˜ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ ファイルをé•ã†åå‰ã§è¤‡æ•°å›žæŽ¥ç¶šã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã‚ã‚Šã€ã‚るファイルã¸ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ 切り離ã—ã¦ã‚‚ã»ã‹ã®æŽ¥ç¶šã«ã¯å½±éŸ¿ã‚’与ãˆãªã„。
SQLite ãŒã¾ã トランザクションã®é€”ä¸ã ã£ãŸå ´åˆã€ã“ã®ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã¯å¤±æ•—ã™ã‚‹ã€‚
SQLコマンド ::= | DROP INDEX [データベースå .] index-name |
DROP INDEX ステートメント㯠CREATE INDEX ステートメントã§è¿½åŠ ã•ã‚ŒãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’削除ã—ã¾ã™ã€‚ 指定ã•ã‚ŒãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ãƒ‡ã‚£ã‚¹ã‚¯ã‹ã‚‰å®Œå…¨ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ インデックスを修復ã™ã‚‹å”¯ä¸€ã®æ–¹æ³•ã¯ã€é©åˆ‡ãª CREATE INDEX コマンドをå†åº¦æŠ•å…¥ã™ã‚‹ã“ã¨ã§ã™ã€‚ 接続ä¸ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã™ã‚‹ä¸€æ™‚çš„ã§ãªã„インデックスã¯å‰Šé™¤ã§ãã¾ã›ã‚“。
SQLコマンド ::= | DROP TABLE テーブルå |
DROP TABLE ステートメント㯠CREATE TABLE ステートメントã§è¿½åŠ ã•ã‚ŒãŸãƒ†ãƒ¼ãƒ–ルを削除ã—ã¾ã™ã€‚ åå‰ã«ã¯ãƒ†ãƒ¼ãƒ–ルåを指定ã—ã¾ã™ã€‚ ã“ã‚Œã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚ーマã¨ãƒ‡ã‚£ã‚¹ã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰å®Œå…¨ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ テーブルを修復ã™ã‚‹æ‰‹æ®µã¯ã‚ã‚Šã¾ã›ã‚“。 ãã®ãƒ†ãƒ¼ãƒ–ルã«é–¢é€£ã™ã‚‹ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚‚ã™ã¹ã¦å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ 接続ä¸ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ä¸€æ™‚çš„ã§ãªã„テーブルã¯å‰Šé™¤ã§ãã¾ã›ã‚“。
SQLステートメント ::= | DROP TRIGGER [データベースå .] トリガå |
DROP TRIGGER ステートメント㯠CREATE TRIGGER ステートメントã§ç”Ÿæˆã•ã‚ŒãŸãƒˆãƒªã‚¬ã‚’削除ã—ã¾ã™ã€‚ 指定ã•ã‚ŒãŸãƒˆãƒªã‚¬ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚ーマã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ 注æ„:トリガã¯ã€é–¢é€£ã™ã‚‹ãƒ†ãƒ¼ãƒ–ルãŒå‰Šé™¤ã•ã‚ŒãŸæ™‚ã€è‡ªå‹•çš„ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ 接続ä¸ã®ãƒ†ãƒ¼ãƒ–ルã§ã€ä¸€æ™‚çš„ã§ãªã„トリガã¯å‰Šé™¤ã§ãã¾ã›ã‚“。
SQLコマンド ::= | DROP VIEW ビューå |
DROP VIEW ステートメント㯠CREATE VIEW ステートメントã§ç”Ÿæˆã•ã‚ŒãŸãƒ“ューを削除ã—ã¾ã™ã€‚ åå‰ã«ã¯ãƒ“ューåを指定ã—ã¾ã™ã€‚ 指定ã•ã‚ŒãŸãƒ“ューã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¹ã‚ーマã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã™ãŒã€ å…ƒã«ãªã£ãŸãƒ†ãƒ¼ãƒ–ルã«ã‚る実データãŒå¤‰æ›´ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 接続ä¸ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ãŠã„ã¦ã€ä¸€æ™‚çš„ã§ãªã„ビューã¯å‰Šé™¤ã§ãã¾ã›ã‚“。
SQLステートメント ::= | EXPLAIN SQLステートメント |
EXPLAIN コマンド修飾åã¯éžæ¨™æº–ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ ã“ã®ã‚¢ã‚¤ãƒ‡ã‚¢ã¯ PostgreSQL ã®ä¼¼ãŸã‚ˆã†ãªã‚³ãƒžãƒ³ãƒ‰ã‹ã‚‰å¾—ã¦ã„ã¾ã™ãŒã€ ãã®å‹•ä½œã¯å…¨ãç•°ãªã‚Šã¾ã™ã€‚
SQLite ã® SQL コマンドã®å‰ã« EXPLAIN ã‚ーワードãŒç¾ã‚Œã‚‹ã¨ã€ 実際ã«ãã® SQL コマンドを実行ã™ã‚‹ä»£ã‚ã‚Šã«ã€SQLite ライブラリ㯠EXPLAIN ãŒãªã‘ã‚Œã°å®Ÿè¡Œã•ã‚Œã‚‹ã¯ãšã ã£ãŸä¸€é€£ã®ä»®æƒ³ãƒžã‚·ãƒ³å‘½ä»¤ã‚’å ±å‘Šã—ã¾ã™ã€‚ 仮想マシン命令ã«é–¢ã™ã‚‹è©³ç´°ã¯ã€ãã®ä»®æƒ³ãƒžã‚·ãƒ³ã«é–¢ã™ã‚‹ アーã‚テクãƒãƒ£ã®èª¬æ˜Ž(architecture description) ã¾ãŸã¯ 使用ã§ãるオペコード(available opcodes) ã‚’ã”覧下ã•ã„。
è©•ä¾¡å¼ ::= | è©•ä¾¡å¼ äºŒé …æ¼”ç®—å è©•ä¾¡å¼ | è©•ä¾¡å¼ LIKE演算å è©•ä¾¡å¼ | å˜é …演算å è©•ä¾¡å¼ | ( è©•ä¾¡å¼ ) | カラムå | テーブルå . カラムå | データベースå . テーブルå . カラムå | 定数値 | 関数å ( 評価å¼ã®ä¸¦ã³ | * ) | è©•ä¾¡å¼ (+) | è©•ä¾¡å¼ ISNULL | è©•ä¾¡å¼ NOTNULL | è©•ä¾¡å¼ [NOT] BETWEEN è©•ä¾¡å¼ AND è©•ä¾¡å¼ | è©•ä¾¡å¼ [NOT] IN ( 値ã®ä¸¦ã³ ) | è©•ä¾¡å¼ [NOT] IN ( SELECTæ–‡ ) | ( SELECTæ–‡ ) | CASE [評価å¼] ( WHEN è©•ä¾¡å¼ THEN è©•ä¾¡å¼ )+ [ELSE 評価å¼] END |
LIKE演算å ::= | LIKE | GLOB | NOT LIKE | NOT GLOB |
ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã¯ã»ã‹ã®ã‚‚ã®ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚ã“ã®ãƒ‰ã‚ュメントã®ä¸ã§ã€ ã»ã‹ã®ã»ã¨ã‚“ã©ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ç‰¹å®šã® SQL コマンドã«ã¤ã„ã¦è§£èª¬ã—ã¦ã„ã¾ã™ã€‚ ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯å˜ç‹¬ã®ã‚³ãƒžãƒ³ãƒ‰ã«ã¤ã„ã¦è¿°ã¹ã‚‹ã®ã§ã¯ãªã〠ã»ã‹ã®ã»ã¨ã‚“ã©ã®ã‚³ãƒžãƒ³ãƒ‰ã®ä¸€éƒ¨ã¨ãªã‚‹ã€Žè©•ä¾¡å¼ã€ã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚
SQLite ã¯ä»¥ä¸‹ã®äºŒé …演算åã‚’ç†è§£ã—ã¾ã™ã€‚ 上ã«ã‚ã‚‹ã‚‚ã®ã»ã©å„ªå…ˆé †ä½ãŒé«˜ããªã£ã¦ã„ã¾ã™ï¼š
|| * / % + - << >> & | < <= > >= = == != <> IN AND OR
サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å˜é …演算åã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼š
- + ! ~
SQLite ã®ã©ã‚“ãªå€¤ã§ã‚‚評価å¼ã®ä¸€éƒ¨ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 算術演算ã«ãŠã„ã¦ã¯æ•´æ•°ã¯æ•´æ•°ã¨ã—ã¦æ‰±ã‚ã‚Œã¾ã™ã€‚ æ–‡å—列ã¯ã¾ãš atof() ã§å®Ÿæ•°ã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ 比較演算åã«ãŠã„ã¦ã¯ã€æ•°å€¤ã¯æ•°å€¤ã¨ã—ã¦æ¯”較ã—〠文å—列ã®æ¯”較ã§ã¯ strcmp() 関数ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ ç‰å·ã¨ä¸ç‰å·ã«ã¯ãã‚Œãžã‚Œ 2 ã¤ã®ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ãŒã‚ã‚‹ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。 ç‰å·ã¯= ã¾ãŸã¯ == ã§ã™ã€‚ ä¸ç‰å·ã¯!= ã¾ãŸã¯ <> ã§ã™ã€‚ || 演算åã¯ã€Žæ–‡å—列ã®é€£çµã€ã§ã™ - オペランドã§ã‚ã‚‹ 2 ã¤ã®æ–‡å—列をçµåˆã—ã¾ã™ã€‚ % 演算åã¯å·¦è¾ºã‚’å³è¾ºã§å‰²ã£ãŸä½™ã‚Šã‚’出力ã—ã¾ã™ã€‚
LIKE 演算åã¯ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã«ã‚ˆã‚‹æ¯”較を行ã„ã¾ã™ã€‚ å³è¾ºã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã«ã¯ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’å«ã¿ã¾ã™ã€‚ å³è¾ºã®ä¸ã®ãƒ‘ãƒ¼ã‚»ãƒ³ãƒˆæ–‡å— % ã¯ã€ 左辺ã«ã‚ã‚‹ 0 個以上ã®ä»»æ„ã®æ–‡å—ã®ä¸¦ã³ã«ãƒžãƒƒãƒã—ã¾ã™ã€‚ å³è¾ºã®ä¸ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ _ ã¯ã€ 左辺ã«ã‚ã‚‹ 1 個ã®ä»»æ„ã®æ–‡å—ã«ãƒžãƒƒãƒã—ã¾ã™ã€‚ LIKE 演算åã¯å¤§æ–‡å—å°æ–‡å—を区別ã—ãªã„ã®ã§ã€ 片方ã«ã‚る大文å—ã¨å対å´ã®å°æ–‡å—ãŒãƒžãƒƒãƒã—ã¦ã—ã¾ã„ã¾ã™ã€‚ (ãƒã‚°ï¼šSQLite 㯠7 bit LATIN æ–‡å—ã®å ´åˆã®ã¿å¤§æ–‡å—å°æ–‡å—ã‚’ç†è§£ã—ã¾ã™ã€‚ ãŸã¨ãˆã° 'a' LIKE 'A' ã¨ã„ã†å¼ã¯çœŸã«ãªã‚Šã¾ã™ãŒ 'æ' LIKE 'Æ' ã¯å½ã«ãªã‚Šã¾ã™ã€‚) ä¸ç½®ã® LIKE 演算å㯠like(X,Y) ユーザ関数ã¨ã¯åˆ¥ç‰©ã§ã™ã€‚
GLOB 演算å㯠LILE ã«ä¼¼ã¦ã„ã¾ã™ãŒã€ ã“ã¡ã‚‰ã¯ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã« UNIX ファイルã®ã‚°ãƒãƒ“ングã®æ›¸å¼ã‚’使ã„ã¾ã™ã€‚ ã¾ãŸ GLOB 㯠LIKE ã¨ã¯ç•°ãªã‚Šå¤§æ–‡å—å°æ–‡å—を区別ã—ã¾ã™ã€‚ GLOB ã‚‚ LIKE ã‚‚é ã« NOT ã‚’ã¤ã‘ã‚Œã°æ¡ä»¶ã®æ„味ãŒå対ã«ãªã‚Šã¾ã™ã€‚ ä¸ç½®ã® GLOB 演算åã¯ãƒ¦ãƒ¼ã‚¶é–¢æ•° glob(X,Y) ã¨ã¯åˆ¥ç‰©ã§ã™ã€‚
カラムåã«ã¯ CREATE TABLE ステートメントã§å®šç¾©ã•ã‚ŒãŸåå‰ã®ã„ãšã‚Œã‹ã€ ã¾ãŸã¯ç‰¹æ®Šãªè˜åˆ¥åã§ã‚ã‚‹ "ROWID", "OID", "_ROWID_" ã®ã„ãšã‚Œã‹ã‚’指定ã—ã¾ã™ã€‚ã“れらã®ç‰¹æ®Šãªè˜åˆ¥åã¯ã€ã©ã‚Œã‚‚å„テーブルã®å„行㫠関連付ã‘られãŸãƒ¦ãƒ‹ãƒ¼ã‚¯ã§ãƒ©ãƒ³ãƒ€ãƒ ãªã‚ー("è¡Œã‚ー")を表ã—ã¾ã™ã€‚ CREATE TABLE ステートメントã§åŒã˜åå‰ã‚’æŒã¤å®Ÿéš›ã®ã‚«ãƒ©ãƒ を定義ã—ãªã„å ´åˆã€ ã“れらã®ç‰¹æ®Šãªè˜åˆ¥åã¯è¡Œã‚ーã ã‘ã‚’å‚ç…§ã—ã¾ã™ã€‚ è¡Œã‚ーã¯ãƒªãƒ¼ãƒ‰ã‚ªãƒ³ãƒªãƒ¼ã®ã‚«ãƒ©ãƒ ã®ã‚ˆã†ã«æŒ¯èˆžã„ã¾ã™ã€‚ è¡Œã‚ーã¯é€šå¸¸ã®ã‚«ãƒ©ãƒ を書ã‘ã‚‹ã¨ã“ã‚ã§ã‚ã‚Œã°ã©ã“ã§ã§ã‚‚使ãˆã¾ã™ã€‚ ãŸã ã—è¡Œã‚ーã®å€¤ã‚’ UPDATE ã‚„ INSERT ステートメントã§å¤‰æ›´ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 "SELECT * ..." ã§ã¯è¡Œã‚ーã®å€¤ã¯è¿”ã—ã¾ã›ã‚“。
SQLite 㯠Oracle8 ã®å¤–部çµåˆå‹•ä½œã‚’最å°é™ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ "カラムå" ã‚‚ã—ã㯠"テーブルå.カラムå" ã¨ã„ã†è©•ä¾¡å¼ã®å¾Œã«ç‰¹åˆ¥ã® "(+)" 演算åを付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ カラム評価å¼ã®ãƒ†ãƒ¼ãƒ–ルãŒçµåˆã«ãŠã„ã¦ï¼’番目もã—ãã¯å¾Œç¶šã®ãƒ†ãƒ¼ãƒ–ルã§ã‚ã‚‹å ´åˆã€ ãã®ãƒ†ãƒ¼ãƒ–ル㯠LEFT OUTER JOIN ã®å·¦è¾ºã®ãƒ†ãƒ¼ãƒ–ルã«ãªã‚Šã¾ã™ã€‚ ã“ã®ãƒ†ãƒ¼ãƒ–ルを使ã†è©•ä¾¡å¼ã¯ã€ã“ã®çµåˆã«é–¢ã™ã‚‹ ON å¥ã®ä¸€éƒ¨ã¨ãªã‚Šã¾ã™ã€‚ Oracle8 ã®æŒ¯ã‚‹èˆžã„ãŒå¿ 実ã«å®Ÿè£…ã•ã‚Œã¦ã„ã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€ SQLite 㨠Oracle åŒæ–¹ã§æ£ã—ã動作ã™ã‚‹ã‚¯ã‚¨ãƒªãƒ¼ã‚’構築ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã™ã€‚
評価å¼ã®ä¸ã® IN 演算åã®å³è¾ºã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚‚ã—ãã¯ã‚¹ã‚«ãƒ©ãƒ¼å€¤ã®ä¸¦ã³ã®ã¨ã“ã‚ã« SELECT ステートメントを書ãã“ã¨ãŒã§ãã¾ã™ã€‚ã„ãšã‚Œã®å ´åˆã«ãŠã„ã¦ã‚‚ã€ãã® SELECT ã§ã¯çµæžœã‚»ãƒƒãƒˆã«ã²ã¨ã¤ã®ã‚«ãƒ©ãƒ ã ã‘ã‚’æŒã¤ã‚ˆã†ã«ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 ã“ã“ã«ã¯ï¼ˆ UNION ã¾ãŸã¯ EXCEPT ã®ã‚ˆã†ãªã‚ーワードã§çµåˆã•ã‚ŒãŸï¼‰SELECT ã® åˆæˆç‰©ã‚’書ã„ã¦ã‚‚構ã„ã¾ã›ã‚“。評価å¼ã®ä¸ã® SELECT ã¯ã»ã‹ã®ã™ã¹ã¦ã®å‡¦ç†ãŒ è¡Œã‚れるå‰ã«ä¸€åº¦ã ã‘評価ã•ã‚Œã¾ã™ã®ã§ã€SELECT 自身ã®ä¸ã«æ›¸ã‹ã‚ŒãŸè©•ä¾¡å¼ã¯ ã©ã‚Œã‚‚å…¥ã£ã¦ã„る評価å¼ã®ä¸ã®ãƒ‡ãƒ¼ã‚¿ã‚’å‚ç…§ã—ã¾ã›ã‚“。
SELECT ㌠IN 演算åã®å³è¾ºã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®å ´åˆã€å·¦è¾ºã®è©•ä¾¡çµæžœãŒ SELECT ㌠生æˆã—ãŸå€¤ã®ã„ãšã‚Œã‹ã§ã‚ã‚Œã°çœŸãŒè¿”ã•ã‚Œã¾ã™ã€‚IN 演算åã®å‰ã« NOT ㌠置ã‹ã‚Œã‚‹ã¨ã€ãã®ãƒ†ã‚¹ãƒˆã®æ„味ãŒå対ã«ãªã‚Šã¾ã™ã€‚
SELECT ㌠IN 演算åã®å·¦è¾ºä»¥å¤–ã®è©•ä¾¡å¼ä¸ã«ç¾ã‚Œã‚‹ã¨ã€ãã® SELECT ã®çµæžœã® 最åˆã®è¡ŒãŒè©•ä¾¡å¼ã§ä½¿ã‚れる値ã«ãªã‚Šã¾ã™ã€‚SELECT ãŒè¤‡æ•°ã®è¡Œã‚’è¿”ã—ãŸå ´åˆã€ å…ˆé 行以外ã¯ã™ã¹ã¦ç„¡è¦–ã•ã‚Œã¾ã™ã€‚SELECT ãŒå…¨ã行を返ã•ãªã„å ´åˆã€ãã® SELECT ã®å€¤ã¯ NULL ã«ãªã‚Šã¾ã™ã€‚
関数ã«ã¤ã„ã¦ã¯å˜ç´”ãªã‚‚ã®ã€ãŠã‚ˆã³é›†ç´„ã•ã‚ŒãŸã‚‚ã®ã®ã„ãšã‚Œã‚‚サãƒãƒ¼ãƒˆã•ã‚Œã¦ ã„ã¾ã™ã€‚å˜ç´”ãªé–¢æ•°ã¯ã©ã®è©•ä¾¡å¼ã®ä¸ã§ã‚‚使ãˆã¾ã™ã€‚å˜ç´”ãªé–¢æ•°ã¯ã€ãã®å…¥åŠ› ã«å¿œã˜ã¦å³åº§ã«å€¤ã‚’è¿”ã—ã¾ã™ã€‚集約関数㯠SELECT ステートメントã®ä¸ã ã‘㧠使ã‚ã‚Œã¾ã™ã€‚集約関数ã¯çµæžœã‚»ãƒƒãƒˆã®è¡Œã™ã¹ã¦ã«ã¤ã„ã¦ã€ãれらã®çµæžœã‚’計算 ã—ã¾ã™ã€‚
以下ã®é–¢æ•°ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§æœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚ã¾ãŸè¿½åŠ ã®é–¢æ•°ã‚’ C ã§æ›¸ã〠sqlite_creat e_function() API を使ã£ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ³ã«è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
abs(X) | 引数 X ã®çµ¶å¯¾å€¤ã‚’è¿”ã—ã¾ã™ã€‚ |
coalesce(X,Y,...) | 引数ã®ã†ã¡ NULL ã§ãªã„最åˆã®ã‚‚ã®ã®ã‚³ãƒ”ーを返ã—ã¾ã™ã€‚ 引数ã®ã„ãšã‚Œã‚‚ NULL ã®å ´åˆã¯ NULL ãŒè¿”ã•ã‚Œã¾ã™ã€‚ å°‘ãªãã¨ã‚‚2個ã®å¼•æ•°ãŒå¿…è¦ã§ã™ã€‚ |
glob(X,Y) | ã“ã®é–¢æ•°ã¯ SQLite ã® "Y GLOB X" ã¨ã„ã†æ›¸å¼ã‚’ 実装ã™ã‚‹ã®ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ sqlite_create_function() インターフェースを使ãˆã°ã“ã®é–¢æ•°ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã§ãã‚‹ã®ã§ã€ GLOB 演算åã®æŒ¯ã‚‹èˆžã„を変ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ |
ifnull(X,Y) | 引数ã®ã†ã¡ NULL ã§ãªã„最åˆã®ã‚‚ã®ã®ã‚³ãƒ”ーを返ã—ã¾ã™ã€‚ 引数ã®ã„ãšã‚Œã‚‚ NULL ã®å ´åˆã¯ NULL ãŒè¿”ã•ã‚Œã¾ã™ã€‚å‰è¿°ã® coalesce() ã¨åŒã˜æŒ¯ã‚‹èˆžã„ã‚’ã—ã¾ã™ã€‚ |
last_insert_rowid() | ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ä»Šå›žã®æŽ¥ç¶šã«ãŠã„ã¦æœ€å¾Œã« INSERT ã•ã‚ŒãŸè¡Œã® ROWID ã‚’è¿”ã—ã¾ã™ã€‚ã“ã‚ŒãŒè¿”ã™å€¤ã¯ sqlite_last_insert_rowid() API 関数ã‹ã‚‰è¿”ã•ã‚Œã‚‹ã‚‚ã®ã¨åŒã˜ã§ã™ã€‚ |
length(X) | X ã®æ–‡å—列長を文å—æ•°ã§è¿”ã—ã¾ã™ã€‚SQLite ㌠UTF-8 サãƒãƒ¼ãƒˆä»˜ãã§æ§‹ç¯‰ã•ã‚Œã¦ã„ã‚Œã°ã€ãƒã‚¤ãƒˆæ•°ã§ã¯ãªã UTF-8 ã§ã®æ–‡å—æ•°ãŒè¿”ã‚Šã¾ã™ã€‚ |
like(X,Y) | ã“ã®é–¢æ•°ã¯ SQL ã® "Y LIKE X" ã¨ã„ã†æ›¸å¼ã‚’実装ã—ã¾ã™ã€‚ sqlite_create_function() インターフェースã¯ã“ã®é–¢æ•°ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—〠LIKE 演算åã®æŒ¯ã‚‹èˆžã„を変更ã—ã¾ã™ã€‚ |
lower(X) | æ–‡å—列 X ã‚’ã™ã¹ã¦å°æ–‡å—ã«å¤‰æ›ã—ã€ãã®ã‚³ãƒ”ーを返ã—ã¾ã™ã€‚ 変æ›å‡¦ç†ã«ã¯ C ライブラリ㮠tolower() ルーãƒãƒ³ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ã¤ã¾ã‚Šã€ ã“ã®é–¢æ•°ã¯ UTF-8 æ–‡å—列ã«å¯¾ã—ã¦ã¯ã†ã¾ãåƒã‹ãªã„ã§ã—ょã†ã€‚ |
max(X,Y,...) | 引数ã®ã†ã¡æœ€å¤§ã®ã‚‚ã®ã‚’è¿”ã—ã¾ã™ã€‚引数ã«ã¯æ•°å€¤ã ã‘ã§ãªã æ–‡å—列も指定ã§ãã¾ã™ã€‚最大値ã¯é€šå¸¸ã®ã‚½ãƒ¼ãƒˆé †ã«ã‚ˆã‚Šæ±ºã‚られã¾ã™ã€‚注æ„: max() ã¯ï¼’ã¤ä»¥ä¸Šã®å¼•æ•°ã‚’å–ã‚‹å ´åˆã¯å˜ç´”ãªé–¢æ•°ã§ã™ãŒã€å¼•æ•°ãŒã²ã¨ã¤ã ã‘ ã®å ´åˆã¯é›†ç´„関数ã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ |
min(X,Y,...) | 引数ã®ã†ã¡æœ€å°ã®ã‚‚ã®ã‚’è¿”ã—ã¾ã™ã€‚引数ã«ã¯æ•°å€¤ã ã‘ã§ãªã æ–‡å—列も指定ã§ãã¾ã™ã€‚最å°å€¤ã¯é€šå¸¸ã®ã‚½ãƒ¼ãƒˆé †ã«ã‚ˆã‚Šæ±ºã‚られã¾ã™ã€‚注æ„: min() ã¯ï¼’ã¤ä»¥ä¸Šã®å¼•æ•°ã‚’å–ã‚‹å ´åˆã¯å˜ç´”ãªé–¢æ•°ã§ã™ãŒã€å¼•æ•°ãŒã²ã¨ã¤ã ã‘ ã®å ´åˆã¯é›†ç´„関数ã«å¤‰æ›ã•ã‚Œã¾ã™ã€‚ |
nullif(X,Y) | 引数ãŒç•°ãªã‚‹å ´åˆã¯æœ€åˆã®å¼•æ•°ã‚’è¿”ã—ã€ãã†ã§ãªã‘れ㰠NULL ã‚’è¿”ã—ã¾ã™ã€‚ |
random(*) | -2147483648 㨠+2147483647 ã®é–“ã§æ•´æ•°ã®ä¹±æ•°ã‚’è¿”ã—ã¾ã™ã€‚ |
round(X) round(X,Y) |
数値 X を少数以下 Y æ¡ã§å››æ¨äº”å…¥ã—ã¾ã™ã€‚ 引数 Y ã‚’çœç•¥ã™ã‚‹ã¨ 0 ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚ |
soundex(X) | æ–‡å—列 X ã® soundex エンコーディング計算ã—ã¾ã™ã€‚ 引数㌠NULL ã®å ´åˆã¯æ–‡å—列 "?000" ãŒè¿”ã•ã‚Œã¾ã™ã€‚SQLite ã§ã¯ã€ã“ã®é–¢æ•°ã¯ デフォルトã§ã¯çµ„ã¿è¾¼ã¾ã‚Œã¾ã›ã‚“。SQLite ã®ãƒ“ルドã®éš›ã« -DSQLITE_SOUNDEX=1 コンパイルオプションを指定ã—ãŸå ´åˆã®ã¿ä½¿ç”¨ã§ãã¾ã™ã€‚ |
sqlite_version(*) | 動作ä¸ã® SQLite ライブラリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å—列を返ã—ã¾ã™ã€‚ 例:"2.8.0" |
substr(X,Y,Z) | 入力文å—列 X ã® Y æ¡ç›®ã‹ã‚‰å§‹ã¾ã‚‹ Z æ–‡å—分ã®éƒ¨åˆ†æ–‡å—列を返ã—ã¾ã™ã€‚X ã®æœ€å°æ–‡å—数㯠1 ã§ã™ã€‚ Y ãŒè² ã®æ•°ã®å ´åˆã€éƒ¨åˆ†æ–‡å—列ã®æœ€åˆã®æ–‡å—㯠左å´ã‹ã‚‰ã§ã¯ãªãå³å´ã‹ã‚‰æ•°ãˆã‚‰ã‚Œã¾ã™ã€‚SQLite ㌠UTF-8 サãƒãƒ¼ãƒˆä»˜ã㧠構築ã•ã‚Œã¦ã„ã‚‹å ´åˆã€æ–‡å—ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¯ãƒã‚¤ãƒˆå˜ä½ã§ã¯ãªã実際㮠UTF-8 æ–‡å—を指ã—ã¾ã™ã€‚ |
typeof(X) | è©•ä¾¡å¼ X ã®åž‹ã‚’è¿”ã—ã¾ã™ã€‚è¿”ã•ã‚Œã‚‹å€¤ã¯ "numeric" ã‹ "text" ã®ã„ãšã‚Œã‹ã—ã‹ã‚ã‚Šã¾ã›ã‚“。SQLite ã®ãƒ‡ãƒ¼ã‚¿åž‹ã®æ‰±ã„ã«ã¤ã„ã¦ã¯ Datatypes in SQLite(訳注:ã¾ã 英語ã®ã¾ã¾ï¼‰ã«è§£èª¬ãŒã‚ã‚Šã¾ã™ã€‚ |
upper(X) | æ–‡å—列 X ã‚’ã™ã¹ã¦å¤§æ–‡å—ã«å¤‰æ›ã—ã¾ã™ã€‚ 変æ›å‡¦ç†ã«ã¯ C ライブラリ㮠toupper() ルーãƒãƒ³ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ã¤ã¾ã‚Šã€ ã“ã®é–¢æ•°ã¯ UTF-8 æ–‡å—列ã«å¯¾ã—ã¦ã¯ã†ã¾ãåƒã‹ãªã„ã§ã—ょã†ã€‚ |
以下ã®é›†ç´„関数ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ä½¿ç”¨å¯èƒ½ã«ãªã£ã¦ã„ã¾ã™ã€‚C ã§æ›¸ã‹ã‚ŒãŸè¿½åŠ 㮠集約関数㌠sqlite_create_aggregate() API を使ã£ã¦è¿½åŠ å¯èƒ½ã§ã™ã€‚
avg(X) | グループã®ä¸ã§ã™ã¹ã¦ã® X ã®å€¤ã®å¹³å‡ã‚’è¿”ã—ã¾ã™ã€‚ |
count(X) count(*) |
最åˆã®æ›¸å¼ã¯ã€ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¸ã«ãŠã„㦠NULL ã§ãªã„ X ã®æ•°ã‚’è¿”ã—ã¾ã™ã€‚ 2番目ã®æ›¸å¼ï¼ˆå¼•æ•°ãªã—)ã¯ã€ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ãŠã‘ã‚‹è¡Œã®ç·æ•°ã‚’è¿”ã—ã¾ã™ã€‚ |
max(X) | ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ãŠã‘ã‚‹ã™ã¹ã¦ã®å€¤ã®ã†ã¡æœ€å¤§ã®ã‚‚ã®ã‚’è¿”ã—ã¾ã™ã€‚ 最大値ã¯é€šå¸¸ã®ã‚½ãƒ¼ãƒˆé †ã§æ±ºã‚られã¾ã™ã€‚ |
min(X) | ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ãŠã‘ã‚‹ã™ã¹ã¦ã®å€¤ã®ã†ã¡æœ€å°ã®ã‚‚ã®ã‚’è¿”ã—ã¾ã™ã€‚ 最å°å€¤ã¯é€šå¸¸ã®ã‚½ãƒ¼ãƒˆé †ã§æ±ºã‚られã¾ã™ã€‚ |
sum(X) | ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ãŠã‘ã‚‹ã™ã¹ã¦ã®å€¤ã®åˆè¨ˆã‚’è¿”ã—ã¾ã™ã€‚ |
SQLステートメント ::= | INSERT [OR è¡çªæ™‚アルゴリズム] INTO [データベースå .] テーブルå [(カラムã®ä¸¦ã³)] VALUES(値ã®ä¸¦ã³) | INSERT [OR è¡çªæ™‚アルゴリズム] INTO [データベースå .] テーブルå [(カラムã®ä¸¦ã³)] SELECTæ–‡ |
INSERT ステートメントã«ã¯ï¼’ã¤ã®åŸºæœ¬çš„ãªæ›¸å¼ãŒã‚ã‚Šã¾ã™ã€‚("VALUES" ã‚ーワード を書ã)最åˆã®æ›¸å¼ã§ã¯ã€æ—¢å˜ã®ãƒ†ãƒ¼ãƒ–ルã«å˜ä¸€ã®æ–°ã—ã„行を作æˆã—ã¾ã™ã€‚ カラムã®ä¸¦ã³ãŒæŒ‡å®šã•ã‚Œãªã„å ´åˆã€å€¤ã®æ•°ãŒãã®ãƒ†ãƒ¼ãƒ–ルã®ã‚«ãƒ©ãƒ æ•°ã¨ç‰ã—ã ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。カラムã®ä¸¦ã³ãŒæŒ‡å®šã•ã‚ŒãŸå ´åˆã€å€¤ã®æ•°ãŒæŒ‡å®šã•ã‚ŒãŸ カラム数ã¨åˆã£ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。テーブルã®ã‚«ãƒ©ãƒ ãŒã‚«ãƒ©ãƒ 並ã³ã« ç¾ã‚Œãªã„å ´åˆã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒã‚»ãƒƒãƒˆã•ã‚Œã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„ å ´åˆã«ã¯ NULL ãŒã‚»ãƒƒãƒˆã•ã‚Œã¾ã™ã€‚
INSERT ステートメントã®ï¼’番目ã®æ›¸å¼ã¯ã€SELECT ステートメントã‹ã‚‰ã® データをå–ã‚Šè¾¼ã¿ã¾ã™ã€‚ SELECT çµæžœã®ã‚«ãƒ©ãƒ æ•°ã¯ã€ã‚«ãƒ©ãƒ 並ã³ã«ãŠã‘ã‚‹ カラム数ã«åˆè‡´ã—ã¦ã„ã‚‹ã‹ã€ã‚‚ã—ãã¯ã‚«ãƒ©ãƒ ã®ä¸¦ã³ã‚’指定ã—ãªã„å ´åˆã€ 対象テーブルã®ã‚«ãƒ©ãƒ æ•°ã¨å®Œå…¨ã«ä¸€è‡´ã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 SELECT ã¯ã‚·ãƒ³ãƒ—ルãªã‚‚ã®ã§ã‚‚複åˆçš„ãªã‚‚ã®ã§ã‚‚構ã„ã¾ã›ã‚“。 ã‚‚ã—ãã® SELECT ステートメント㫠ORDER BY å¥ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã§ã‚‚〠ORDER BY ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚
オプション㮠CONFLICT å¥ã‚’指定ã™ã‚‹ã¨ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ã†å ´åˆã«é™ã£ã¦ä½¿ã‚れる〠代替ã®åˆ¶ç´„ã¨ãªã‚‹è¡çªæ™‚解決アルゴリズムを指定ã§ãã¾ã™ã€‚詳細㯠ON CONFLICTã®ã‚¿ã‚¤ãƒˆãƒ«ã®ã¤ã„ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’見ã¦ãã ã•ã„。 パーサã§ã¯ MySQL ã¨ã®äº’æ›æ€§ã®ãŸã‚ã« "INSERT OR REPLACE" ã®åˆ¥åã¨ã—ã¦ã® REPLACE ã¨ã„ã†ã‚ーワードをèªã‚ã¦ã„ã¾ã™ã€‚
CONFLICT å¥ ::= | ON CONFLICT è¡çªæ™‚アルゴリズム|
è¡çªæ™‚アルゴリズム::= | ROLLBACK | ABORT | FAIL | IGNORE | REPLACE |
ON CONFLICT å¥ã¯ç‹¬ç«‹ã—㟠SQL コマンドã§ã¯ã‚ã‚Šã¾ã›ã‚“。 ã“ã‚Œã¯ã»ã‹ã®å¤šãã® SQL コマンドã®ä¸ã«ç¾ã‚Œã¦ã‚‚よã„ã€éžæ¨™æº–ã®å¥ã§ã™ã€‚ ã“ã‚Œã¯æ¨™æº– SQL ã®ä¸€éƒ¨ã§ã¯ãªã〠ãれゆãˆã‚ã¾ã‚Šãªã˜ã¿ãŒãªã„ã¨æ€ã‚ã‚Œã¾ã™ã®ã§ã€ ã“ã®æ–‡æ›¸ã§ã‚‚一ã¤ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’割ã„ã¦è§£èª¬ã‚’è¡Œã£ã¦ã„ã¾ã™ã€‚
ON CONFLICT å¥ã®æ›¸å¼ã«ã¤ã„ã¦ã¯å‰è¿°ã® CREATE TABLE, CREATE INDEX, ãŠã‚ˆã³ BEGIN TRANSACTION コマンドã®ã¨ã“ã‚ã§ã™ã§ã«è¿°ã¹ã¦ã„ã¾ã™ã€‚ COPY, INSERT, UPDATE コマンドã«ã¤ã„ã¦ã¯æ›¸å¼ã‚’より自然ã«ã™ã‚‹ãŸã‚〠"ON CONFLICT" ã¨ã„ã†ã‚ーワード㯠"OR" ã§ç½®ãæ›ãˆã‚‰ã‚Œã¦ã„ã¾ã™ã€‚ ã—ã‹ã—ã€ã©ã¡ã‚‰ã§ã‚‚å¥ã®æ„味自体ã«å¤‰ã‚ã‚Šã¯ã‚ã‚Šã¾ã›ã‚“。
ON CONFLICT å¥ã¯ã€åˆ¶ç´„è¡çªã‚’解決ã™ã‚‹ãŸã‚ã«ä½¿ã‚れるアルゴリズムを指定ã—ã¾ã™ã€‚ é¸æŠžè‚¢ã¨ã—ã¦ã¯ã€ROLLBACK, ABORT, FAIL, IGNORE, REPLACE ã®ï¼•ã¤ãŒã‚ã‚Šã¾ã™ã€‚ デフォルトã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 㯠ABORT ã§ã™ã€‚ãã‚Œãžã‚Œã®æ„味ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼š
制約é•åãŒèµ·ã“ã£ãŸã‚‰å³åº§ã« ROLLBACK ã—ã¾ã™ã€‚ã¤ã¾ã‚Šã€ ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’終了ã•ã›ã€ コマンド㯠SQLITE_CONSTRAINT コードを返ã—ã¾ã™ã€‚ (å„コマンドã«ã‚ˆã‚Šç”Ÿæˆã•ã‚Œã‚‹æš—é»™ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’除ã„ã¦ï¼‰ トランザクションãŒå®Ÿè¡Œä¸ã§ãªã‘ã‚Œã°ã€ ã“ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 㯠ABORT ã¨åŒã˜ã‚ˆã†ã«å‹•ãã¾ã™ã€‚
制約é•åãŒèµ·ã“ã£ãŸã‚‰ã€ãã®ã‚³ãƒžãƒ³ãƒ‰ãŒãã‚Œã¾ã§ã«è¡Œã£ãŸå¤‰æ›´æ“作ã¯å–り消ã•ã‚Œã€ ãã®ã‚³ãƒžãƒ³ãƒ‰ã¯ SQLITE_CONSTRAINT コードを返ã—ã¾ã™ã€‚ ãŸã ã— ROLLBACK ãŒè¡Œã‚れるã‚ã‘ã§ã¯ãªã„ã®ã§ã€ åŒã˜ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å†…ã§å®Ÿè¡Œã•ã‚ŒãŸãれ以å‰ã®ã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè¡Œçµæžœã¯ä¿æŒã•ã‚Œã¾ã™ã€‚ ã“ã‚Œã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æŒ¯ã‚‹èˆžã„ã§ã™ã€‚
制約é•åãŒèµ·ã“ã£ãŸã‚‰ã€ã‚³ãƒžãƒ³ãƒ‰ã¯ SQLITE_CONSTRAINT コードを返ã—ã¾ã™ã€‚ ãŸã ã—ã€ãã®ã‚³ãƒžãƒ³ãƒ‰ãŒåˆ¶ç´„é•åã¨ãªã‚‹å‰ã«è¡Œã‚ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®å¤‰æ›´ã¯ä¿æŒã•ã‚Œã€ å–り消ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。ãŸã¨ãˆã°ã€UPDATE コマンドãŒæ›´æ–°ã‚’è¡Œã£ã¦ 100 行目ã§åˆ¶ç´„é•åãŒèµ·ã“ã£ãŸå ´åˆã€æœ€åˆã‹ã‚‰ 99 行目ã¾ã§ã®å¤‰æ›´ã¯æœ‰åŠ¹ã«ãªã‚Šã€ 100 行目以é™ã¸ã®å¤‰æ›´ã¯è¡Œã‚ã‚Œã¾ã›ã‚“。
制約é•åãŒèµ·ã“ã£ãŸã‚‰ã€åˆ¶ç´„é•åã®åŽŸå› ã¨ãªã£ãŸãã®ï¼‘è¡Œã«ã¤ã„ã¦ã¯ INSERT ã‚„ UPDATE ãŒè¡Œã‚ã‚Œã¾ã›ã‚“。ãŸã ã—ã€ãã®ã‚³ãƒžãƒ³ãƒ‰ã¯ãれ以é™ã‚‚æ£å¸¸ã«å®Ÿè¡Œã‚’続ã‘ã¾ã™ã€‚ 制約é•åãŒèµ·ã“ã£ãŸãã®è¡Œä»¥å¤–è¡Œã¯é€šå¸¸é€šã‚Š INSERT ã‚„ UPDATE ãŒè¡Œã‚ã‚Œã¾ã™ã€‚ エラーã¯è¿”ã•ã‚Œã¾ã›ã‚“。
UNIQUE 制約é•åãŒèµ·ã“ã£ãŸå ´åˆã€åˆ¶ç´„é•åã®åŽŸå› ã¨ãªã£ãŸæ—¢å˜ã®è¡Œã¯ã€ ç¾åœ¨è¡Œã® INSERT ã‚„ UPDATE ã«å…ˆç«‹ã£ã¦å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ãã®ãŸã‚〠INSERT ã‚„ UPDATE ã¯å¸¸ã«è¡Œã‚ã‚Œã€ã‚³ãƒžãƒ³ãƒ‰ã¯é€šå¸¸å‹•ä½œã‚’続ã‘ã¾ã™ã€‚ エラーã¯è¿”ã•ã‚Œã¾ã›ã‚“。 NOT NULL 制約é•åãŒèµ·ã“ã£ãŸå ´åˆã€ãã® NULL 値ã¯ãã®ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã« ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚ãã®ã‚«ãƒ©ãƒ ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒè¨å®šã•ã‚Œã¦ã„ãªã‹ã£ãŸå ´åˆã«ã¯ ABORT アルゴリズムãŒé©ç”¨ã•ã‚Œã¾ã™ã€‚
ã“ã®è¡çªè§£æ±ºæ–¹æ³•ãŒã€åˆ¶ç´„動作を満足ã•ã›ã‚‹ãŸã‚ã«è¡Œã‚’削除ã™ã‚‹å ´åˆã€ ãã®è¡Œã«ã¤ã„ã¦ã¯å‰Šé™¤ãƒˆãƒªã‚¬ãŒèµ·å‹•ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。 ã—ã‹ã—ã“ã®å‹•ä½œã¯å°†æ¥å¤‰æ›´ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
è¡çªè§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã¯ä»¥ä¸‹ã®ä½ç½®ã«æŒ‡å®šã§ãã¾ã™ã€‚ãªãŠã€ 優先度ã®æœ€ã‚‚低ã„ã‚‚ã®ã‹ã‚‰æœ€ã‚‚高ã„ã‚‚ã®ã®é †ã«ç¤ºã—ã¦ã„ã¾ã™ï¼š
CREATE TABLE ã‚„ CREATE INDEX ã®ä¸ã§ã€å€‹åˆ¥ã®åˆ¶ç´„æ¡ä»¶ã¨ã—ã¦ã€‚
BEGIN TRANSACTION コマンド。
COPY, INSERT, UPDATE コマンド㮠OR å¥ã€‚
COPY, INSERT, UPDATE コマンド㮠OR å¥ã§æŒ‡å®šã•ã‚ŒãŸã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 㯠BEGIN TRANSACTION コマンドã§æŒ‡å®šã•ã‚ŒãŸã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ をオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—〠BEGIN TRANSACTION コマンドã§æŒ‡å®šã•ã‚ŒãŸã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 㯠CREATE TABLE ã‚„ CREATE INDEX ã®ä¸ã§æŒ‡å®šã•ã‚ŒãŸã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ をオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¾ã™ã€‚ アルゴリズムãŒå…¨ã指定ã•ã‚Œãªã„å ´åˆã€ABORT アルゴリズムãŒä½¿ã‚ã‚Œã¾ã™ã€‚
SQLステートメント ::= | PRAGMA åå‰ [= 値] | PRAGMA 関数(引数) |
PRAGMA コマンド㯠SQLite ライブラリã®å‹•ä½œã‚’変更ã™ã‚‹ãŸã‚ã«ä½¿ã‚ã‚Œã¾ã™ã€‚ プラグマコマンドã¯å®Ÿé¨“çš„ãªã‚‚ã®ãªã®ã§ã€SQLite ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ç‰¹å®šã® プラグマステートメントãŒãªããªã£ãŸã‚Šã€æ–°ãŸã«è¿½åŠ ã•ã‚ŒãŸã‚Šã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ã†éš›ã«ã¯æ³¨æ„ãŒå¿…è¦ã§ã™ã€‚
整数値をå–ã‚‹ PRAGMA ã«ã¯ã€ã‚·ãƒ³ãƒœãƒ«åを指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ æ–‡å—列 "on", "true", "yes" 㯠1 ã¨åŒã˜ã§ã™ã€‚ æ–‡å—列 "off", "false", "no" 㯠0 ã¨åŒã˜ã§ã™ã€‚ ã“れらã®æ–‡å—列ã¯å¤§æ–‡å—å°æ–‡å—を区別ã›ãšã€ã¾ãŸå¼•ç”¨ç¬¦ã§æ‹¬ã‚‹å¿…è¦ã‚‚ã‚ã‚Šã¾ã›ã‚“。 èªè˜ã§ããªã„æ–‡å—列㯠1 ã¨ã—ã¦æ‰±ã‚ã‚Œã€ã‚¨ãƒ©ãƒ¼ã«ã¯ãªã‚Šã¾ã›ã‚“。 値 ãŒè¿”ã•ã‚Œã‚‹å ´åˆã€ãã®å€¤ã¯æ•´æ•°ã¨ã—ã¦è¿”ã•ã‚Œã¾ã™ã€‚
ç¾åœ¨ã®å®Ÿè£…ã§ã¯ä»¥ä¸‹ã®ãƒ—ラグマãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ï¼š
PRAGMA cache_size;
PRAGMA cache_size = ページ数;
SQLite ãŒãƒ¡ãƒ¢ãƒªä¸Šã§ä¸€åº¦ã«ç¢ºä¿ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‡ã‚£ã‚¹ã‚¯ãƒšãƒ¼ã‚¸ã®æœ€å¤§æ•°ã‚’ å‚ç…§ã¾ãŸã¯å¤‰æ›´ã—ã¾ã™ã€‚å„ページã§ã¯ãŠã‚ˆã 1.5K ã®ãƒ¡ãƒ¢ãƒªã‚’消費ã—ã¾ã™ã€‚ デフォルトã®ã‚ャッシュサイズ㯠2000 ã§ã™ã€‚データベースã®å¤§é‡ã®è¡Œã‚’変更ã™ã‚‹ UPDATE ã¾ãŸã¯ DELETE ã‚’è¡Œã†éš›ã« SQLite ãŒã‚ˆã‚Šå¤šãã®ãƒ¡ãƒ¢ãƒªã‚’消費ã—ã¦ã‚‚構ã‚ãªã„ å ´åˆã€ã‚ャッシュサイズを増やã—ã¦ã‚„ã‚Œã°é€Ÿåº¦çš„ã«æœ‰åˆ©ã«ãªã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚
cache_size プラグã¾ã§ã‚ャッシュサイズã®å¤‰æ›´ã‚’ã—ã¦ã‚‚ã€å¤‰æ›´ã¯ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ ã«ã®ã¿é©ç”¨ã•ã‚Œã¾ã™ã€‚データベースãŒé–‰ã˜ã‚‰ã‚Œãã®å¾Œå†åº¦ã‚ªãƒ¼ãƒ—ンã•ã‚ŒãŸæ™‚点㧠ã‚ャッシュサイズã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«æˆ»ã‚Šã¾ã™ã€‚永続的ãªã‚ャッシュサイズをãƒã‚§ãƒƒã‚¯ ã™ã‚‹ã«ã¯ default_cache_size を使ã„ã¾ã™ã€‚
PRAGMA count_changes = ON; (1)
PRAGMA count_changes = OFF; (0)
ON ã®å ´åˆã€DELETE, INSERT, UPDATE ãŒè¡Œã‚れるãŸã³ã« COUNT_CHANGES 㯠一度ã¥ã¤ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã‚’呼ã³å‡ºã—ã¾ã™ã€‚引数ã¯å¤‰æ›´ã•ã‚ŒãŸè¡Œæ•°ã§ã™ã€‚
ã“ã®ãƒ—ラグマ㯠SQLite ã®å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ãªããªã‚‹å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ã€‚ sqlite_changes() API 関数ã®ä½¿ç”¨ã‚’検討ã—ã¦ã¿ã¦ãã ã•ã„。
PRAGMA database_list;
å„データベースをオープンã™ã‚‹ã”ã¨ã«ã€ãã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«é–¢ã™ã‚‹æƒ…å ±ã‚’å…ƒã« ä¸€åº¦ã¥ã¤ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ãŒå‘¼ã°ã‚Œã¾ã™ã€‚引数ã«ã¯æŽ¥ç¶šã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã® åå‰ã¨ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒå«ã¾ã‚Œã¾ã™ã€‚最åˆã®è¡Œã¯ãƒ¡ã‚¤ãƒ³ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãŸã‚ã®ã‚‚ã®ã§ã™ã€‚ 2番目ã®è¡Œã¯ä¸€æ™‚çš„ãªãƒ†ãƒ¼ãƒ–ãƒ«ã‚’æ ¼ç´ã™ã‚‹ã®ã«ä½¿ã‚れるデータベースã®ãŸã‚ã®ã‚‚ã®ã§ã™ã€‚
PRAGMA default_cache_size;
PRAGMA default_cache_size = ページ数;
SQLite ãŒãƒ¡ãƒ¢ãƒªä¸Šã§ä¸€åº¦ã«ç¢ºä¿ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒ‡ã‚£ã‚¹ã‚¯ãƒšãƒ¼ã‚¸ã®æœ€å¤§æ•°ã‚’ å‚ç…§ã¾ãŸã¯å¤‰æ›´ã—ã¾ã™ã€‚å„ページã§ã¯ãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã§ 1K ãã—ã¦ãƒ¡ãƒ¢ãƒªä¸Šã§ã¯ 1.5K を消費ã—ã¾ã™ã€‚ã“ã®ãƒ—ラグマ㯠cache_size ã¨åŒã˜ã‚ˆã†ã«åƒãã¾ã™ãŒã€ã•ã‚‰ã«æ°¸ç¶šçš„ãªã‚ャッシュサイズを変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®ãƒ—ラグマã§ä¸€åº¦ã‚ャッシュサイズを変更ã™ã‚‹ã¨ãã®å¤‰æ›´å†…容ã¯ä¿æŒã•ã‚Œã€ ãã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’å†åº¦ã‚ªãƒ¼ãƒ—ンã™ã‚‹ãŸã³ã«ãã®å€¤ãŒå†åˆ©ç”¨ã•ã‚Œã¾ã™ã€‚
PRAGMA default_synchronous;
PRAGMA default_synchronous = FULL; (2)
PRAGMA default_synchronous = NORMAL; (1)
PRAGMA default_synchronous = OFF; (0)
データベース㮠"synchronous(åŒæœŸï¼‰" フラグをå‚ç…§ã¾ãŸã¯å¤‰æ›´ã—ã¾ã™ã€‚
最åˆã®ï¼ˆå•ã„åˆã‚ã›ã®ï¼‰å½¢å¼ã§ã¯è¨å®šå€¤ã‚’æ•´æ•°ã§è¿”ã—ã¾ã™ã€‚
synchronous ㌠FULL(2) ã®å ´åˆã€SQLite データベースエンジンã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒ
実際ã«ãƒ‡ã‚£ã‚¹ã‚¯è¡¨é¢ã«æ›¸ãè¾¼ã¾ã‚Œã‚‹ã¾ã§ç¢ºå®Ÿã«å¾…ã¡åˆã‚ã›ã‚’è¡Œã„ã€ãã‚Œã‹ã‚‰æ¬¡ã®
処ç†ã«é€²ã¿ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ãŒã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã—ãŸã‚Š
é›»æºãŒè½ã¡ãŸã‚Šã—ãŸå ´åˆã€ãƒªãƒ–ート後ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒæ•´åˆã‚’ä¿ã¤ã“ã¨ã‚’ä¿è¨¼ã—ã¾ã™ã€‚
FULL synchronous ã¯ã¨ã¦ã‚‚安全ã§ã™ãŒã€ãã®åˆ†é…ã„ã§ã™ã€‚
synchronous ㌠NORMAL(1:デフォルト値)ã®å ´åˆã€SQLite データベースエンジンã¯
データベースãŒå®Ÿéš›ã«ãƒ‡ã‚£ã‚¹ã‚¯è¡¨é¢ã«æ›¸ãè¾¼ã¾ã‚Œã‚‹ã¾ã§ã®ä¸ã®éžå¸¸ã«é‡è¦ãªéƒ¨åˆ†ã®ã¿
å¾…ã¡åˆã‚ã›ã‚’è¡Œã„ã¾ã™ãŒã€FULL モードã»ã©é•·ãã¯å¾…ã¡ã¾ã›ã‚“。NORMAL モードã§ã¯ã€
é›»æºæ–ãŒç™ºç”Ÿã—ãŸå ´åˆã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒå£Šã‚Œã‚‹ã‚¿ã‚¤ãƒŸãƒ³ã‚°ãŒã‚ãšã‹ãªãŒã‚‰
(ã—ã‹ã—ï¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“)å˜åœ¨ã—ã¾ã™ã€‚ãŸã 実際ã®ã¨ã“ã‚ã€ãƒ‡ã‚£ã‚¹ã‚¯éšœå®³ã‚„
復旧ä¸èƒ½ãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢éšœå®³ã§æ‚©ã‚€ã“ã¨ã®æ–¹ãŒã€ç¢ºçŽ‡çš„ã«ã¯ã‚ˆã‚Šå¤§ãã„ã§ã—ょã†ã€‚
ã“ã®ãŸã‚ NORMAL ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒ¢ãƒ¼ãƒ‰ã¨ãªã£ã¦ã„ã¾ã™ã€‚
synchronous ㌠OFF(0) ã®å ´åˆã€ãƒ‡ãƒ¼ã‚¿ã‚’オペレーティングシステムã«æ¸¡ã—ãŸå¾Œã€
SQLite ã¯ä¸€åˆ‡å¾…ã¡åˆã‚ã›ã‚’è¡Œã„ã¾ã›ã‚“。SQLite ãŒå‹•ã„ã¦ã„るアプリケーションãŒ
クラッシュã—ãŸå ´åˆãªã‚‰ãƒ‡ãƒ¼ã‚¿ã¯ç„¡äº‹ã§ã™ãŒã€ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ãŒã‚¯ãƒ©ãƒƒã‚·ãƒ¥
ã—ãŸã‚Šã€ãƒ‡ãƒ¼ã‚¿ãŒãƒ‡ã‚£ã‚¹ã‚¯ã®è¡¨é¢ã«æ›¸ã‹ã‚Œã‚‹ã¾ã§ã«é›»æºæ–ãŒèµ·ã“ã£ãŸå ´åˆã€
データベースãŒæå‚·ã™ã‚‹å ´åˆãŒã‚ã‚Šå¾—ã¾ã™ã€‚ãã®ä»£ã‚ã‚Š synchronous OFF ã«ã™ã‚‹ã¨ã€
オペレーティグシステムã«ã‚ˆã£ã¦ã¯ 50 å€ä»¥ä¸Šé«˜é€ŸåŒ–ã•ã‚Œã¾ã™ã€‚
ã“ã®ãƒ—ラグマã¯åŒæœŸãƒ¢ãƒ¼ãƒ‰ã‚’æ’常的ã«å¤‰æ›´ã—ã¾ã™ã€‚ã„ã£ãŸã‚“変更ã•ã‚Œã‚‹ã¨ã€ データベースを閉ã˜ã¦å†åº¦ã‚ªãƒ¼ãƒ—ンã—ã¦ã‚‚ã€ãã®ãƒ¢ãƒ¼ãƒ‰ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。 synchronous ã§ã‚‚åŒã˜ã“ã¨ãŒã§ãã¾ã™ãŒã€ ã“ã®å ´åˆã¯ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®è¨å®šã ã‘ã«é©ç”¨ã•ã‚Œã¾ã™ã€‚
PRAGMA default_temp_store;
PRAGMA default_temp_store = DEFAULT; (0)
PRAGMA default_temp_store = MEMORY; (2)
PRAGMA default_temp_store = FILE; (1)
データベース㮠"temp_store" フラグをå‚ç…§ã¾ãŸã¯å¤‰æ›´ã—ã¾ã™ã€‚temp_store ㌠DEFAULT (0) ã®å ´åˆã€ä¸€æ™‚çš„ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã¯ã‚³ãƒ³ãƒ‘イル時ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒ é©ç”¨ã•ã‚Œã¾ã™ã€‚temp_store ㌠FILE (1) ã®å ´åˆã€ãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã®ä¸€æ™‚データベース ファイルãŒä½¿ã‚ã‚Œã¾ã™ã€‚ライブラリã®ã‚³ãƒ³ãƒ‘イル時オプションã«ã‚ˆã‚Šã“ã®è¨å®šã‚’ オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。ã„ã£ãŸã‚“一時 データベースãŒä½¿ã‚れるã¨ã€ãã®å ´æ‰€ã‚’変更ã§ããªããªã‚Šã¾ã™ã€‚
ã“ã®ãƒ—ラグマ㯠temp_store モードをæ’ä¹…çš„ã«å¤‰æ›´ã—ã¾ã™ã€‚ã„ã£ãŸã‚“変更ã•ã‚Œã‚‹ã¨ã€ データベースを閉ã˜ã¦å†åº¦ã‚ªãƒ¼ãƒ—ンã—ã¦ã‚‚ã€ã“ã®ãƒ¢ãƒ¼ãƒ‰ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。 temp_store ã§ã‚‚åŒã˜ã“ã¨ãŒã§ãã¾ã™ãŒã€ ã“ã®å ´åˆã¯ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®è¨å®šã ã‘ã«é©ç”¨ã•ã‚Œã¾ã™ã€‚
PRAGMA empty_result_callbacks = ON; (1)
PRAGMA empty_result_callbacks = OFF; (0)
ON ã®å ´åˆã€EMPTY_RESULT_CALLBACKS プラグマã¯çµæžœã‚»ãƒƒãƒˆãŒç©ºã§ã‚るよã†ãª クエリーãŒç™ºè¡Œã•ã‚Œã‚‹ãŸã³ã«ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã‚’呼ã³å‡ºã—ã¾ã™ã€‚ コールãƒãƒƒã‚¯é–¢æ•°ã«å¯¾ã™ã‚‹ï¼“番目ã®ãƒ‘ラメータ "argv" ã«ã¯ å ±å‘Šã™ã‚‹ã¹ãデータãŒãªã„ã®ã§ NULL ãŒã‚»ãƒƒãƒˆã•ã‚Œã¾ã™ã€‚ãŸã ã—2番目㮠"argc" ã¨ï¼”番目㮠"columnNames" パラメータã¯æœ‰åŠ¹ã§ã‚り〠ã“れらã«ã‚ˆã‚Šçµæžœã‚»ãƒƒãƒˆã«ãŠã„ã¦ç©ºã§ã¯ãªã„カラムã®æ•°ã‚„åå‰ã‚’決定ã™ã‚‹ã®ã« 使ã‚ã‚Œã¾ã™ã€‚
PRAGMA full_column_names = ON; (1)
PRAGMA full_column_names = OFF; (0)
SQLite ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã§å ±å‘Šã•ã‚Œã‚‹ã‚«ãƒ©ãƒ åã¯ã€"テーブルå.カラムå" ã®å½¢å¼ãŒä½¿ã‚ã‚Œãªã„é™ã‚Šã€å˜ã«ã‚«ãƒ©ãƒ ã®åå‰ãã®ã‚‚ã®ã§ã™ã€‚ã—ã‹ã— full_column_names ㌠ON ã«ã•ã‚Œã‚‹ã¨ã€å˜ç´”ãªã‚¯ã‚¨ãƒªãƒ¼ã«ãŠã„ã¦ã‚‚カラムå㯠常㫠"テーブルå.カラムå" å½¢å¼ã§å ±å‘Šã•ã‚Œã¾ã™ã€‚
PRAGMA index_info(インデックスå);
指定ã•ã‚ŒãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒå‚ç…§ã™ã‚‹å„カラムã«ã¤ã„ã¦ã€ãã®ã‚«ãƒ©ãƒ ã®åå‰ã¨ 番å·ã‚’å«ã‚€æƒ…å ±ã‚’ä¼´ã„ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ãŒå‘¼ã°ã‚Œã¾ã™ã€‚
PRAGMA index_list(テーブルå);
指定ã•ã‚ŒãŸãƒ†ãƒ¼ãƒ–ルã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«ã¤ã„ã¦ã€ãã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã«é–¢ã™ã‚‹ æƒ…å ±ã‚’ä¼´ã„ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ãŒå‘¼ã°ã‚Œã¾ã™ã€‚引数ã«ã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹å㨠ãã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒãƒ¦ãƒ‹ãƒ¼ã‚¯ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’示ã™ãƒ•ãƒ©ã‚°ã‚’å«ã¾ã‚Œã¾ã™ã€‚
PRAGMA integrity_check;
ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å…¨ä½“ã®æ•´åˆæ€§ãƒã‚§ãƒƒã‚¯ã‚’è¡Œã„ã¾ã™ã€‚ é †åºãŒèª¤ã£ã¦ã„るレコードや見ã¤ã‹ã‚‰ãªã„ページã€ä¸æ£ãªãƒ¬ã‚³ãƒ¼ãƒ‰ã‚„ インデックスを探ã—ã€ä½•ã‚‰ã‹ã®å•é¡ŒãŒè¦‹ã¤ã‹ã‚Œã°å•é¡Œã®å†…容を示ã™æ–‡å—列を è¿”ã—ã¾ã™ã€‚ã™ã¹ã¦ãŒæ£ã—ã‘れ㰠"ok" ãŒè¿”ã•ã‚Œã¾ã™ã€‚
PRAGMA parser_trace = ON; (1)
SQLite ライブラリ内部ã«ãŠã‘ã‚‹ SQL パーサã®ãƒˆãƒ¬ãƒ¼ã‚¹æ©Ÿèƒ½ã‚’ ON / OFF ã—ã¾ã™ã€‚ ã“ã‚Œã¯ãƒ‡ãƒãƒƒã‚°ç›®çš„ã§ä½¿ã‚ã‚Œã¾ã™ã€‚ã“れ㯠NDEBUG マクãƒã‚’指定ã—ãªã„㧠コンパイルã•ã‚ŒãŸãƒ©ã‚¤ãƒ–ラリã®å ´åˆã«ã®ã¿ä½¿ãˆã¾ã™ã€‚
PRAGMA show_datatypes = ON; (1)
PRAGMA show_datatypes = OFF; (0)
ON ã®å ´åˆã€SHOW_DATATYPES プラグマ㯠sqlite_exec() コールãƒãƒƒã‚¯ 関数ã®ç¬¬ï¼”引数 ("columnNames") ã«è¿½åŠ ã•ã‚Œã‚‹ã€ã‚«ãƒ©ãƒ 㮠データ型 ã®åå‰ã‚’å«ã‚€ç‰¹åˆ¥ãªã‚¨ãƒ³ãƒˆãƒªã‚’作りã¾ã™ã€‚ OFF ã®å ´åˆã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã¸ã®ç¬¬ï¼”引数ã«ã¯ã‚«ãƒ©ãƒ åã ã‘ãŒå…¥ã‚Šã¾ã™ã€‚ テーブルã®ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ¼ã‚¿åž‹ã¯ã€ãƒ†ãƒ¼ãƒ–ルを定義ã™ã‚‹ãŸã‚ã® CREATE TABLE ステートメントã‹ã‚‰æŒã£ã¦ãã¾ã™ã€‚データ型ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„カラムã«ã¯ "NUMERIC" データ型ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã€è©•ä¾¡å¼ã®çµæžœã«ã¯ãã®è©•ä¾¡å¼ã«å¾“ã„ "TEXT" ã¾ãŸã¯ "NUMERIC" データ型ãŒè¿”ã•ã‚Œã¾ã™ã€‚ 以下ã«ã€"SELECT 'xyzzy', 5, NULL AS empty " ã¨ã„ã†ã‚¯ã‚¨ãƒªãƒ¼ã‚’発行ã—ãŸ å ´åˆã®é•ã„を示ã—ã¾ã™ï¼š
show_datatypes=OFF show_datatypes=ON azCol[0] = "xyzzy";
azCol[1] = "5";
azCol[2] = "empty";
azCol[3] = 0;azCol[0] = "xyzzy";
azCol[1] = "5";
azCol[2] = "empty";
azCol[3] = "TEXT";
azCol[4] = "NUMERIC";
azCol[5] = "TEXT";
azCol[6] = 0;
PRAGMA synchronous;
PRAGMA synchronous = FULL; (2)
PRAGMA synchronous = NORMAL; (1)
PRAGMA synchronous = OFF; (0)
ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æŽ¥ç¶šã«ãŠã‘ã‚‹ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã® "synchronous" フラグをå‚ç…§ã¾ãŸã¯å¤‰æ›´ã—ã¾ã™ã€‚データベースãŒé–‰ã˜ã‚‰ã‚Œå†åº¦ã‚ªãƒ¼ãƒ—ンã•ã‚Œã‚‹ã¨ã€ synchronous フラグã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«æˆ»ã‚Šã¾ã™ã€‚synchronous フラグã«é–¢ã™ã‚‹ 詳細㯠default_synchronous プラグマã®èª¬æ˜Žã‚’ã”覧下ã•ã„。
PRAGMA table_info(テーブルå);
指定ã•ã‚ŒãŸãƒ†ãƒ¼ãƒ–ルã®ãã‚Œãžã‚Œã®ã‚«ãƒ©ãƒ ã«ã¤ã„ã¦ã€ã‚«ãƒ©ãƒ ã®åå‰ã€ãƒ‡ãƒ¼ã‚¿åž‹ã€ カラム㌠NULL 値を許ã™ã‹ã©ã†ã‹ã€ãã®ã‚«ãƒ©ãƒ ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¨ã„ã£ãŸæƒ…å ± ã‚’å«ã‚€å€¤ã‚’ä¼´ã„ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã‚’一度ã¥ã¤å‘¼ã³å‡ºã—ã¾ã™ã€‚
PRAGMA temp_store;
PRAGMA temp_store = DEFAULT; (0)
PRAGMA temp_store = MEMORY; (2)
PRAGMA temp_store = FILE; (1)
ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æŽ¥ç¶šã«å½±éŸ¿ã‚’与ãˆã‚‹ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã® "temp_store" フラグをå‚ç…§ã¾ãŸã¯å¤‰æ›´ã—ã¾ã™ã€‚データベースãŒé–‰ã˜ã‚‰ã‚Œå†åº¦ã‚ªãƒ¼ãƒ—ンã•ã‚Œã‚‹ã¨ã€ temp_store フラグã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«æˆ»ã‚Šã¾ã™ã€‚temp_store フラグã«é–¢ã™ã‚‹ 詳細㯠default_temp_store プラグマã®èª¬æ˜Žã‚’ã”覧下ã•ã„。
PRAGMA vdbe_trace = ON; (1)
PRAGMA vdbe_trace = OFF; (0)
SQLite 内部ã®ä»®æƒ³ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ³ã®ãƒˆãƒ¬ãƒ¼ã‚¹æ©Ÿèƒ½ã‚’ ON / OFF ã—ã¾ã™ã€‚ ã“ã‚Œã¯ãƒ‡ãƒãƒƒã‚°ç”¨ã«ä½¿ã‚れるもã®ã§ã™ã€‚詳細㯠VDBE documentation ã‚’ã”覧下ã•ã„。
未定義ã®ãƒ—ラグマãŒç™ºè¡Œã•ã‚Œã¦ã‚‚エラーメッセージã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。 未定義ã®ãƒ—ラグマã¯å˜ã«ç„¡è¦–ã•ã‚Œã¾ã™ã€‚
SQLステートメント ::= | REPLACE INTO [データベースå .] テーブルå [( カラムã®ä¸¦ã³ )] VALUES ( 値ã®ä¸¦ã³ ) | REPLACE INTO [データベースå .] テーブルå [( カラムã®ä¸¦ã³ )] SELECTæ–‡ |
REPLACE コマンド㯠INSERT コマンドã®ä»²é–“ã§ã‚ã‚‹ "INSERT OR REPLACE" ã®åˆ¥åã§ã™ã€‚ã“れ㯠MySQL ã¨ã®äº’æ›æ€§ã®ãŸã‚ã«æä¾› ã•ã‚Œã¦ã„ã¾ã™ã€‚詳細㯠INSERT コマンドã®èª¬æ˜Žã‚’ ã”覧下ã•ã„。
SQLステートメント ::= | SELECT [ALL | DISTINCT] çµæžœã‚»ãƒƒãƒˆ [FROM テーブル並ã³] [WHERE 評価å¼] [GROUP BY 評価å¼ã®ä¸¦ã³] [HAVING 評価å¼] [åˆæˆæ¼”ç®—å SELECTå¥]* [ORDER BY SORT評価å¼ã®ä¸¦ã³] [LIMIT æ•´æ•° [( OFFSET | , ) æ•´æ•°]] |
çµæžœã‚»ãƒƒãƒˆ ::= | çµæžœã®ã‚«ãƒ©ãƒ [, çµæžœã®ã‚«ãƒ©ãƒ ]* |
resultçµæžœã®ã‚«ãƒ©ãƒ ::= | * | テーブルå . * | è©•ä¾¡å¼ [ [AS] æ–‡å—列 ] |
テーブル並㳠::= | テーブルå [çµåˆæ¼”ç®—å テーブルå çµåˆæ™‚ã®å¼•æ•°]* |
テーブルå ::= | テーブルå [AS 別å] | ( SELECTå¥ ) [AS 別å] |
çµåˆæ¼”ç®—å ::= | , | [NATURAL] [LEFT | RIGHT | FULL] [OUTER | INNER | CROSS] JOIN |
çµåˆæ™‚ã®å¼•æ•° ::= | [ON 評価å¼] [USING ( IDã®ä¸¦ã³ )] |
ソート評価å¼ã®ä¸¦ã³ ::= | è©•ä¾¡å¼ [ã‚½ãƒ¼ãƒˆé †] [, è©•ä¾¡å¼ [ã‚½ãƒ¼ãƒˆé †]]* |
sort-order ::= | ASC | DESC |
åˆæˆæ¼”ç®—å ::= | UNION | UNION ALL | INTERSECT | EXCEPT |
SELECT ステートメントã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®å•ã„åˆã‚ã›ã‚’è¡Œã„ã¾ã™ã€‚SELECT ã®çµæžœã¯ ï¼å€‹ä»¥ä¸Šã®è¡Œã‹ã‚‰ãªã‚Šã€ãã‚Œãžã‚Œã®è¡Œã¯ä¸€å®šã®å€‹æ•°ã®ã‚«ãƒ©ãƒ ã§æ§‹æˆã•ã‚Œã¾ã™ã€‚ çµæžœã‚»ãƒƒãƒˆä¸ã®ã‚«ãƒ©ãƒ 数㯠SELECT 㨠FROM ã‚ーワードã®é–“ã®è©•ä¾¡å¼ã®ä¸¦ã³ã«ã‚ˆã‚Š 指定ã•ã‚Œã¾ã™ã€‚çµæžœã‚»ãƒƒãƒˆã«ã¯ä»»æ„ã®è©•ä¾¡å¼ã‚’指定ã§ãã¾ã™ã€‚çµæžœã‚»ãƒƒãƒˆã®è©•ä¾¡å¼ã« * を指定ã™ã‚‹ã¨ã€ãã®ï¼‘ã¤ã®è©•ä¾¡å¼ã¯ 指定ã•ã‚ŒãŸã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒ–ルã®ã™ã¹ã¦ã®ã‚«ãƒ©ãƒ ã§ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚評価å¼ã§ãƒ†ãƒ¼ãƒ–ルå ã®å¾Œã« .* を指定ã™ã‚‹ã¨ã€ãã®ï¼‘ã¤ã® テーブルã®ã™ã¹ã¦ã®ã‚«ãƒ©ãƒ を指定ã—ãŸã“ã¨ã«ãªã‚Šã¾ã™ã€‚
DISTINCT ã‚ーワードを指定ã™ã‚‹ã¨ã€çµæžœã®ã‚µãƒ–セットã§ã‚ã‚‹è¿”ã•ã‚Œã‚‹è¡ŒãŒã€ ãã‚Œãžã‚Œç•°ãªã£ãŸå€¤ã‚’æŒã¤ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚NULL 値ã¯ãã‚Œãžã‚Œç•°ãªã£ãŸå€¤ã¨ã¯ 見ãªã•ã‚Œã¾ã›ã‚“。デフォルトã®å‹•ä½œã§ã¯ã™ã¹ã¦ã®è¡ŒãŒè¿”ã•ã‚Œã¾ã™ãŒã€ã“れを ã‚ーワード ALL ã«ã‚ˆã‚Šæ˜Žç¤ºã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
クエリー㯠FROM ã‚ーワードã®å¾Œã«æŒ‡å®šã•ã‚ŒãŸï¼‘ã¤ä»¥ä¸Šã®ãƒ†ãƒ¼ãƒ–ルã«å¯¾ã—ã¦è¡Œã‚ã‚Œã¾ã™ã€‚ 複数ã®ãƒ†ãƒ¼ãƒ–ルåãŒã‚«ãƒ³ãƒžã§åŒºåˆ‡ã£ã¦æŒ‡å®šã•ã‚Œã¦ã„ãŸå ´åˆã€ã‚¯ã‚¨ãƒªãƒ¼ã¯ãã‚Œãžã‚Œã® テーブルã®ç›´ç©(cross join)ã«å¯¾ã—ã¦è¡Œã‚ã‚Œã¾ã™ã€‚çµåˆã®æŒ‡å®šã«ã¤ã„ã¦ã¯ã€å®Œå…¨ãª SQL92 ã«ãŠã‘ã‚‹ JOIN ã®æ›¸å¼ã‚’使ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚FROM å¥ã®ä¸ã«ã¯ã€ ä»»æ„ã®ãƒ†ãƒ¼ãƒ–ルåを使ã£ã¦æ‹¬å¼§ã§æ‹¬ã£ãŸå‰¯å•ã„åˆã‚ã›ã‚’書ãã“ã¨ã‚‚ã§ãã¾ã™ã€‚ FROM å¥å…¨ä½“ã‚’çœç•¥ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã“ã®å ´åˆçµæžœã‚»ãƒƒãƒˆã¯è¡Œã‹å¼ã®ä¸¦ã³ã®å€¤ã‹ã‚‰ 構æˆã•ã‚Œã‚‹å˜ä¸€è¡Œã¨ãªã‚Šã¾ã™ã€‚
WHERE å¥ã‚’使ã£ã¦ã€ã‚¯ã‚¨ãƒªãƒ¼ã®å®Ÿè¡Œã«é–¢ã™ã‚‹çµæžœã®è¡Œæ•°ã‚’制é™ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
GROUP BY å¥ã‚’使ã†ã¨ã€çµæžœã‚»ãƒƒãƒˆã®ä¸ã®ï¼‘ã¤ä»¥ä¸Šã®è¡Œã‚’çµåˆã—ã€å‡ºåŠ›æ™‚ã«ï¼‘è¡Œã¨ã™ã‚‹ ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã‚Œã¯çµæžœã‚»ãƒƒãƒˆã®ä¸ã«é›†ç´„関数ãŒã‚ã‚‹å ´åˆã€ç‰¹ã«æœ‰ç”¨ã§ã™ã€‚ GROUP BY å¥ã®ä¸ã®è©•ä¾¡å¼ã«ã¯ã€çµæžœã‚»ãƒƒãƒˆã«ç¾ã‚Œã‚‹è©•ä¾¡å¼ãŒå«ã¾ã‚Œã¾ã›ã‚“。 HAVING å¥ã¯ WHERE å¥ã¨åŒã˜ã‚ˆã†ã«ä½¿ã¤ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚°ãƒ«ãƒ¼ãƒ”ングãŒè¡Œã‚ã‚ŒãŸå¾Œã§ é©ç”¨ã•ã‚Œã‚‹ã¨ã“ã‚ãŒç•°ãªã‚Šã¾ã™ã€‚HAVING å¼ã¯ã€é›†ç´„関数ã«ã¤ã„ã¦ã‚‚ãã®å€¤ã‚’å‚ç…§ã—〠çµæžœã®ä¸ã«ã¯ç¾ã‚Œã¾ã›ã‚“。
ORDER BY å¥ã‚’使ã†ã¨ã€å‡ºåŠ›è¡Œã¯ã‚½ãƒ¼ãƒˆã•ã‚Œã¾ã™ã€‚ORDER BY ã®å¼•æ•°ã¯è©•ä¾¡å¼ã®ä¸¦ã³ã§ã‚り〠ã“ã‚ŒãŒã‚½ãƒ¼ãƒˆæ™‚ã®ã‚ーã¨ã—ã¦ä½¿ã‚ã‚Œã¾ã™ã€‚ã“ã®è©•ä¾¡å¼ã¯å˜ç´”㪠SELECT ã®çµæžœã®ä¸€éƒ¨ ã‚’å«ã¿ã¾ã›ã‚“ãŒã€è¤‡åˆ SELECT ã«ãŠã„ã¦ã¯ãã‚Œãžã‚Œã®ã‚½ãƒ¼ãƒˆè©•ä¾¡å¼ã¯çµæžœã®ã‚«ãƒ©ãƒ 㫠完全ã«ä¸€è‡´ã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。ソート評価å¼ã®å¾Œã«ã‚ªãƒ—ション㧠ASC ã¾ãŸã¯ DESC を指定ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã‚½ãƒ¼ãƒˆé †ã‚’指定ã§ãã¾ã™ã€‚
LIMIT å¥ã¯çµæžœã‚»ãƒƒãƒˆã¨ã—ã¦è¿”ã•ã‚Œã‚‹è¡Œæ•°ã®ä¸Šé™ã‚’è¨å®šã—ã¾ã™ã€‚ LIMIT ã«è² 数をセットã™ã‚‹ã¨ã€ä¸Šé™ãªã—ã¨ã„ã†æ„味ã«ãªã‚Šã¾ã™ã€‚ LIMIT ã®å¾Œã‚ã«ã€çµæžœã‚»ãƒƒãƒˆã®å…ˆé ã‹ã‚‰ã‚¹ã‚ップã™ã‚‹è¡Œæ•°ã‚’ OFFSET オプションã§æŒ‡å®šã§ãã¾ã™ã€‚ 複åˆã‚¯ã‚¨ãƒªãƒ¼ã«ãŠã„ã¦ã¯ LIMIT å¥ã¯æœ€å¾Œã® SELECT ステートメントã®ã¿ã«ç¾ã‚Œã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚ 制é™å€¤ã¯ã‚¯ã‚¨ãƒªãƒ¼å…¨ä½“ã«å¯¾ã—ã¦é©ç”¨ã•ã‚Œã€ LIMIT ã«çµã³ã¤ã„ã¦ã„る個々㮠SELECT ステートメントã«ã¯é©ç”¨ã•ã‚Œã¾ã›ã‚“。
è¤‡åˆ SELECT ã¯ï¼’ã¤ä»¥ä¸Šã®å˜ç´” SELECT ㌠UNION, UNION ALL, INTERSECT, EXCEPT ã®ã„ãšã‚Œã‹ã®æ¼”ç®—åã«ã‚ˆã‚Šçµåˆã•ã‚ŒãŸå½¢å¼ã§ã™ã€‚è¤‡åˆ SELECT ã«ãŠã„ã¦ã¯ã€ 後続ã®ã™ã¹ã¦ã® SELECT ã§åŒã˜æ•°ã®çµæžœã‚«ãƒ©ãƒ を指定ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 è¤‡åˆ SELECT ã®æœ€å¾Œã«ã²ã¨ã¤ã® ORDER BY å¥ã‚’書ãã“ã¨ãŒã§ãã¾ã™ã€‚ UNION ãŠã‚ˆã³ UNION ALL 演算åã¯ã€ 複数㮠SELECT ã®çµæžœã‚’å³å´ã¾ãŸã¯å·¦å´ã«å¯¾ã—ã¦çµåˆã—〠ã²ã¨ã¤ã®å¤§ããªãƒ†ãƒ¼ãƒ–ルを作りã¾ã™ã€‚ é•ã„ã¯ã€UNION ã§ã¯ã™ã¹ã¦ã®çµæžœè¡Œã¯ãã‚Œãžã‚Œãƒ¦ãƒ‹ãƒ¼ã‚¯ã«ãªã‚Šã¾ã™ãŒã€ UNION ALL ã§ã¯é‡è¤‡è¡ŒãŒç¾ã‚Œã¾ã™ã€‚ INTERSECT 演算åã¯å·¦å´ã¨å³å´ã® SELECT çµæžœã®äº¤å·®ã‚’å–ã‚Šã¾ã™ã€‚ EXCEPT ã¯å·¦å´ã® SELECT çµæžœã‹ã‚‰å³å´ã® SELECT çµæžœã‚’å–り去りã¾ã™ã€‚ 3ã¤ä»¥ä¸Šã® SELECT ãŒåˆã‚ã•ã£ãŸå ´åˆã€ ãれらã¯å·¦å´ã‹ã‚‰å³å´ã«å‘ã‹ã£ã¦ã‚°ãƒ«ãƒ¼ãƒ—化ã•ã‚Œã¾ã™ã€‚
SQLステートメント ::= | UPDATE [ OR è¡çªæ™‚アルゴリズム] [データベースå .] テーブルå SET ä»£å…¥å¼ [, 代入å¼]* [WHERE 評価å¼] |
ä»£å…¥å¼ ::= | カラムå = è©•ä¾¡å¼ |
UPDATE ステートメントã¯ãƒ†ãƒ¼ãƒ–ルä¸ã®é¸æŠžã•ã‚ŒãŸè¡Œã«ã¤ã„ã¦ã€ã‚«ãƒ©ãƒ ã®å€¤ã‚’変更ã—ã¾ã™ã€‚ UPDATE ã«ãŠã‘ã‚‹ãã‚Œãžã‚Œã®ä»£å…¥å¼ã¯ç‰å·ã®å·¦è¾ºã«ã‚«ãƒ©ãƒ åã€å³è¾ºã«ä»»æ„ã®è©•ä¾¡å¼ã‚’指定ã—ã¾ã™ã€‚ 評価å¼ã«ã¯åˆ¥ã®ã‚«ãƒ©ãƒ ã®å€¤ãŒç¾ã‚Œã¦ã‚‚構ã„ã¾ã›ã‚“。 評価å¼ã¯ã™ã¹ã¦ä»£å…¥ãŒè¡Œã‚れるå‰ã«è©•ä¾¡ã•ã‚Œã¾ã™ã€‚ WHERE å¥ã‚’使ã£ã¦ UPDATE 対象ã®è¡Œã‚’制é™ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
オプション㮠CONFLICT å¥ã‚’指定ã—ã¦ã€ã“ã®ä¸€ã¤ã®ã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè¡Œæ™‚ã«ãŠã‘ã‚‹ 制約é•å発生時ã«ãŠã‘る代替ã®è§£æ±ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 詳細㯠ON CONFLICT ã¨ã„ã†ã‚¿ã‚¤ãƒˆãƒ«ã®ã¤ã„ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’ å‚ç…§ã—ã¦ãã ã•ã„。
SQLステートメント ::= | VACUUM [インデックスã¾ãŸã¯ãƒ†ãƒ¼ãƒ–ルå] |
VACUUM コマンド㯠PostgreSQL ã«ãŠã‘ã‚‹åŒæ§˜ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’モデルã«ã—㟠SQLite ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚VACUUM ãŒãƒ†ãƒ¼ãƒ–ルã¾ãŸã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åã‚’ä¼´ã£ã¦å®Ÿè¡Œã•ã‚Œã‚‹ã¨ã€ 指定ã•ã‚ŒãŸãƒ†ãƒ¼ãƒ–ルã¾ãŸã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’æ•´ç†ã™ã‚‹ã‚‚ã®ã¨è¦‹ãªã—ã¾ã™ã€‚ SQLite ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0 ã§ã¯ VACUUM コマンド㯠gdbm_reorganize() を呼ã³å‡ºã—ã¦ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ•´ç†ã—ã¾ã™ã€‚
SQLite ãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0 ã«ãªã£ã¦ GDBM ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒé™¤åŽ»ã•ã‚ŒãŸã“ã¨ã«ã‚ˆã‚Šã€ VACUUM ãŒä½•ã‚‚ã—ãªã„よã†ã«å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚ã—ã‹ã—ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.8.1 㧠VACUUM ã¯å†å®Ÿè£…ã•ã‚Œã¾ã—ãŸã€‚ã“ã‚Œã¯ç¾åœ¨ã§ã¯ä¸€æ™‚データベースファイルã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã® 内容をコピーã—ã€ãã®ã‚³ãƒ”ーã‹ã‚‰ã‚ªãƒªã‚¸ãƒŠãƒ«ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’å†ãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚ ã“ã‚Œã«ã‚ˆã‚Šè§£æ”¾ã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã‚„継続ã•ã‚Œã‚‹ã‚¢ãƒ©ã‚¤ãƒ³ãƒ†ãƒ¼ãƒ–ルã®ãƒ‡ãƒ¼ã‚¿ãªã©ãŒé™¤åŽ»ã•ã‚Œã€ データベースファイルã®æ§‹é€ ãŒæ•´ç†ã•ã‚Œã¾ã™ã€‚インデックスやテーブルå㯠ç¾æ™‚点ã§ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚
活動ä¸ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚ã‚‹å ´åˆã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯å®Ÿè¡Œã«å¤±æ•—ã—ã¾ã™ã€‚ ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ãƒ¡ãƒ¢ãƒªä¸Šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«å¯¾ã—ã¦ã¯æ„味をæŒã¡ã¾ã›ã‚“。
以下ã®ã‚ーワード㯠SQLite ã«ã‚ˆã‚Šä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚ ã»ã¨ã‚“ã©ã®ã‚‚ã®ã¯ SQL-92 ã§äºˆç´„語ã¨ãªã£ã¦ã„ã‚‹ã‹ã€ 予約語ã¨ãªã‚Šå¾—ã‚‹ã‚‚ã®ã¨ã—ã¦ãƒªã‚¹ãƒˆã‚¢ãƒƒãƒ—ã•ã‚Œã¦ã„ãŸã‚‚ã®ã§ã™ã€‚ ã“れらã¯ã‚¤ã‚¿ãƒªãƒƒã‚¯ä½“ã§ã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。 ã™ã¹ã¦ã®å˜èªžãŒå®Ÿéš›ã« SQLite ã§ä½¿ã‚ã‚Œã¦ã„ã‚‹ã¨ã¯é™ã‚Šã¾ã›ã‚“。 SQLite ã§ã¯ã‚ーワードã¯äºˆç´„ã•ã‚Œã¦ã„ã¾ã›ã‚“。 ã©ã‚“ãªã‚ーワードã§ã‚ã£ã¦ã‚‚ SQLite オブジェクト(カラムã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã€ インデックスã€ãƒˆãƒªã‚¬ã€ãƒ“ューãªã©ï¼‰ã®è˜åˆ¥åã¨ã—ã¦ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ãŒã€ 一般的ã«ã¯ãƒ‘ーサãŒæ··ä¹±ã—ãªã„よã†ã«ãƒ–ラケットや引用符ã§æ‹¬ã£ã¦ãŠã‹ãªã‘れ㰠ãªã‚Šã¾ã›ã‚“。SQLite ã«ãŠã‘ã‚‹ã‚ーワードマッãƒãƒ³ã‚°ã§ã¯å¤§æ–‡å—å°æ–‡å—㯠区別ã•ã‚Œã¾ã›ã‚“。
'ã‚ーワード' | æ£ã—ã„æ–‡å—列ã®ã‚³ãƒ³ãƒ†ã‚ストã§ç¾ã‚Œã‚Œã°æ–‡å—列定数ã¨ã—ã¦ã€ ãã†ã§ãªã‘ã‚Œã°è˜åˆ¥åã¨ã—ã¦è§£é‡ˆã•ã‚Œã¾ã™ã€‚ |
"ã‚ーワード" | 既知ã®è˜åˆ¥åã¨ã—ã¦ãƒžãƒƒãƒã™ã‚‹ã‹ã€ ã‚‚ã—ãã¯æ£ã—ã„è˜åˆ¥åã®ã‚³ãƒ³ãƒ†ã‚ストã§ç¾ã‚Œã‚Œã°è˜åˆ¥åã¨ã—ã¦ã€ ãã†ã§ãªã‘ã‚Œã°æ–‡å—列ã¨ã—ã¦è§£é‡ˆã•ã‚Œã¾ã™ã€‚ |
[ã‚ーワード] | 常ã«è˜åˆ¥åã¨ã—ã¦è§£é‡ˆã•ã‚Œã¾ã™ (ã“ã®æ›¸å¼ã¯ MS Acess ã‚„ SQL Server ã®ã‚‚ã®ã§ã™ï¼‰ã€‚ |
以下ã®ã‚ーワード㯠SQLite ã§è˜åˆ¥åã¨ã—ã¦ä½¿ãˆã¾ã™ã€‚ãã®éš›ãƒ‡ãƒªãƒŸã‚¿ã¯ä¸è¦ã§ã™ã€‚
ABORT AFTER ASC ATTACH BEFORE BEGIN DEFERRED CASCADE CLUSTER CONFLICT COPY CROSS DATABASE DELIMITERS DESC DETACH EACH END EXPLAIN FAIL FOR FULL IGNORE IMMEDIATE INITIALLY INNER INSTEAD KEY LEFT MATCH NATURAL OF OFFSET OUTER PRAGMA RAISE REPLACE RESTRICT RIGHT ROW STATEMENT TEMP TEMPORARY TRIGGER VACUUM VIEW
ã“れらã®ã‚ーワード㯠SQLite オブジェクトã®è˜åˆ¥åã¨ã—ã¦ä½¿ãˆã¾ã™ãŒã€ SQLite ãŒè˜åˆ¥åã¨ã—ã¦èªè˜ã§ãるよã†ã«ãƒ–ラケットã¾ãŸã¯å¼•ç”¨ç¬¦ã§ 括ã£ã¦ã‚„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
ALL AND AS BETWEEN BY CASE CHECK COLLATE COMMIT CONSTRAINT CREATE DEFAULT DEFERRABLE DELETE DISTINCT DROP ELSE EXCEPT FOREIGN FROM GLOB GROUP HAVING IN INDEX INSERT INTERSECT INTO IS ISNULL JOIN LIKE LIMIT NOT NOTNULL NULL ON OR ORDER PRIMARY REFERENCES ROLLBACK SELECT SET TABLE THEN TRANSACTION UNION UNIQUE UPDATE USING VALUES WHEN WHERE
SQLite ã§ã¯ä»¥ä¸‹ã®ã‚‚ã®ã¯ã‚ーワードã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€ システムオブジェクトåã¨ã—ã¦ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚ ã“れらã¯ç•°ãªã£ãŸã‚¿ã‚¤ãƒ—ã®ã‚ªãƒ–ジェクトè˜åˆ¥åã¨ã—ã¦ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
_ROWID_ MAIN OID ROWID SQLITE_MASTER SQLITE_TEMP_MASTER