sqlite3初心者のテキトーなメモ

ヘルプ

sqlite3 -helpか、sqlite3実行後に.help

DBファイルを作る

PS$sqlite3 .\practice.db
SQLite version 3.7.3
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main             C:\hoge\piyo\fuga\practice.db
sqlite>

.databasesってやると0バイトのこのファイルが生成される。何もせずに.exitだと何も作られない。

テーブル作ってなんかやる

sqlite> create table prac (date_time text);
sqlite> .tables
prac
sqlite> begin;
sqlite> insert into prac values('日付 ' || strftime('%Y-%m-%d %H:%M:%S', datetime('now', 'localtime')));
sqlite> select * from prac;
日付 2013-10-06 16:08:42
sqlite> 

begin;しないとトランザクションが始まらない。
begin;して何か操作するとprac.db-journalというのが作られて、commit; rollback; end;するとなくなる。
endするとcommitされる。
commit/rollbackするとendしなくてもトランザクションが終わる。sqlplusのつもりでやってはいけない。

データをファイル出力する

select文の結果が見づらいのでね。

sqlite> .output test.txt
sqlite> select * from prac;
sqlite> 

単にSQL実行結果の出力先を標準出力からファイルに向けただけ。
標準出力に戻すには

sqlite> .output stdout
sqlite> select * from prac;
日付 2013-10-06 16:08:42
sqlite> 

select文の結果を見やすくする

はじめからこれが出来ていればいいんですよ。。

sqlite> .header on
sqlite> .mode column
sqlite> .width 30
sqlite> select * from prac;
date_time
------------------------------
日付 2013-10-06 16:08:42

カラム幅をいちいち指定しないとデフォルトでぶつ切り表示されてしまうのが困りもの。

sqlite3起動パラメータでも指定可能。

PS$sqlite3.exe -header -column .\practice.db
SQLite version 3.7.3
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from prac;
date_time
----------
日付 2013-

カラム幅は指定できません。。

外部ファイルに記述したSQLを実行する

sqlite> .read aiueo.txt
date_time
------------------------------
日付 2013-10-06 16:08:42

alterが貧弱ゥ

alter table hoge add column piyo;

でカラムを追加するか

alter table hoge rename to piyo;

でテーブル名を変更するしかできない。

カラム名を変更したい場合は地道な作業が必要。
って、え。。railsのsqlite3アダプタってマイグレーションカラム名変える時本当にそんなことやってんの。。

参考

などなど。