Webコンテンツ(貴重なおこづかい源)ネタ漁りを兼ねて
しばらく漬け込んでたSQLiteをほぢくりだして遊んでます。
もうね、胸張ってDBオンチなのよ。
インストールも満足にできん僕にはサーバ要らずのSQLiteがお似合いです。
SQLiteから実行形式拾ってきてSQLスクリプトを書く。
---- test.sql ----
-- テーブルを作る
DROP TABLE IF EXISTS cashbox;
CREATE TABLE cashbox
( key INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
summary TEXT,
income INTEGER,
outgo INTEGER,
note TEXT
);
-- インデクスを作る
DROP INDEX IF EXISTS index_date;
CREATE INDEX index_date ON cashbox ( date );
-- レコードをいくつか挿入
INSERT INTO cashbox
( date, summary, outgo )
VALUES ( '08/02/29', 'leftover', 380);
INSERT INTO cashbox
( date, summary, income )
VALUES ( '08/03/01', 'carryover', 380);
INSERT INTO cashbox
( date, summary, income )
VALUES ( '08/03/01', 'from-mama', 5000);
INSERT INTO cashbox
( date, summary, outgo )
VALUES ( '08/03/03', 'comic', 410);
INSERT INTO cashbox
( date, summary, outgo )
VALUES ( '08/03/02', 'potato-chips', 147);
INSERT INTO cashbox
( date, summary, income )
VALUES ( '08/03/04', 'from-granpa', 1000);
-- 全部出力してみる
SELECT * FROM cashbox ORDER BY date;
-- 三月の収支
SELECT sum(income), sum(outgo), sum(income)-sum(outgo)
FROM cashbox
WHERE date LIKE '08/03/%';
ぢっこーしてみゆ。
>sqlite3 test.db < test.sql
1|08/02/29|leftover||380|
2|08/03/01|carryover|380||
3|08/03/01|from-mama|5000||
5|08/03/02|potato-chips||147|
4|08/03/03|comic||410|
6|08/03/04|from-granpa|1000||
6380|557|5823
こんだけで大喜び♪
[おしえてえらいひと]
income(収入)とoutgo(支出)の一方はNULL/他方はNULLでない!
って条件を与えたいんすけど、CREATEんとこになんて書くですか?
# あるいはINSET/UPDATEんときにガードかけたいんですけど。