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 文をどのように入力するかについて説明しました。