SQLite | SQLite の基礎知識 | コマンドラインツールで SQL 文とコマンドを入力する方法
SQLite では、コマンドラインツールを使ってデータベースを作成したり、データを検索したりできます。ここでは、SQLite コマンドラインツールを使用するときに、どのように入力すればよいかを説明します。
コマンドを実行する
SQLite コマンドラインツールを実行するには、コマンドプロンプトを起動したあと、sqlite3 をインストールしたディレクトリへ移動し、次のように実行します。ツールが起動し、引数に指定したデータベースに接続します。
sqlite3 データベース名
今回は、以前作成した sample.sqlite3 データベースに接続するため、次のように実行します。以前作成したファイルを削除していたり、存在しなかったりしても接続コマンド自体は実行できます。
$ sqlite3 sample.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>
コマンドラインツールでは、コマンドラインツールの設定を行う SQLite コマンドなどを実行したり、任意の SQL 文を実行したりできます。
SQLite コマンド .show を実行してみましょう。コマンドは、必要に応じて引数を入力し、Enter キーを押すと実行されます。
$ sqlite3 sample.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> .show
echo: off
eqp: off
explain: auto
headers: off
mode: list
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: sample.sqlite3
sqlite>
SQL 文を実行する
次に、簡単な SQL 文を実行してみます。SQL 文の場合、最後にセミコロン (;) を入力するまでが1つの SQL 文として処理されます。; まで入力したあと Enter キーを押すと実行されます。
sqlite> create table user(id, name);
sqlite> insert into user(id, name) values (1, 'devkuma');
sqlite> insert into user(id, name) values (2, 'araikuma');
sqlite> select * from user;
1|devkuma
2|araikuma
sqlite>
以前作成した user テーブルがすでに存在する場合、最初の行は実行しなくてもかまいません。
長い SQL 文を分割して入力する
SQL 文では、1つの文が長くなることがあります。すべての文を一度に入力しようとすると、入力しづらかったり、どこまで入力したのかわかりにくかったりする場合があります。
sqlite> select id as user_id, name as user_name from user where id = 1 and name = 'devkuma' order by name desc;
1|devkuma
sqlite>
このように長い場合、コマンドラインツールでは分割して入力することもできます。入力途中で Enter キーを押します。
sqlite> select id as user_id, name as user_name
...>
SQL 文は、最後に ; が現れるまでが1つの文として判断されます。; が入力されていない状態で Enter キーを押した場合、まだ入力途中だと判断され、続けて入力できます。
それでは残りをすべて入力してみましょう。先ほどと同じように、適切なタイミングで Enter キーを押します。
sqlite> select id as user_id, name as user_name
...> from user
...> where id = 1 and name = 'devkuma'
...> order by name desc
...>
Enter キーを押すときに、空白を1つ入れておく必要はありません。コマンドの途中で Enter キーを押すと、前後の文は自動的に別の単語として処理されます。
SQL 文の場合、; を含む行を入力して Enter キーを押した時点で、文の入力が完了したと判断され、SQL 文が実行されます。
sqlite> select id as user_id, name as user_name
...> from user
...> where id = 1 and name = 'devkuma'
...> order by name desc
...> ;
1|devkuma
sqlite>
文を1行で入力した場合も、分割して入力した場合も、結果は同じです。状況に応じて使い分けてください。
–
ここまで、SQLite コマンドラインツールでコマンドや SQL 文をどのように入力するかについて説明しました。