SQLite | データの検索 | SELECT文でデータを取得する

テーブルに保存されたデータはSELECT文で取得します。ここでは基本的な構文を説明します。

SELECT文でデータを取得する

テーブルのデータを取得するにはSELECTを使います。基本構文は次のとおりです。

SELECT カラム1, カラム2, ... FROM テーブル名;

FROMの後にテーブル名、SELECTの後に取得するカラムを記述します。複数のカラムはカンマで区切ります。

条件を指定しない場合はすべての行を取得します。条件に合う行だけを取得するにはWHERE句を使います。

例として次のテーブルを作成します。

create table user (id integer, name text, address text);
sqlite> create table user (id integer, name text, address text);
sqlite> 

テーブルにデータを追加します。

insert into user values (1, 'devkuma', 'Seoul');
insert into user values (2, 'kimkc', 'Busan');
insert into user values (3, 'araikuma', 'Seoul');
insert into user values (4, 'happykuma', 'Seoul');
insert into user values (5, 'mykuma', 'Daejeon');
sqlite> insert into user values (1, 'devkuma', 'Seoul');
sqlite> insert into user values (2, 'kimkc', 'Busan');
sqlite> insert into user values (3, 'araikuma', 'Seoul');
sqlite> insert into user values (4, 'happykuma', 'Seoul');
sqlite> insert into user values (5, 'mykuma', 'Daejeon');
sqlite> 

userテーブルのidnameを取得します。

select id, name from user;

指定したテーブルから目的のカラムを取得できました。

sqlite> select id, name from user;
1|devkuma
2|kimkc
3|araikuma
4|happykuma
5|mykuma

SQLite CLIコマンドで結果の表示形式を変更できます。以降の例では次の設定を使います。

.header on
.mode column
sqlite> .header on
sqlite> .mode column
sqlite> 
sqlite> select id, name from user;
id          name      
----------  ----------
1           devkuma   
2           kimkc     
3           araikuma  
4           happykuma 
5           mykuma    
sqlite> 

すべてのカラムを取得する

すべてのカラムを取得するには、SELECTに各カラムを列挙できます。

select id, name, address from user;
sqlite> select id, name, address from user;
id          name        address   
----------  ----------  ----------
1           devkuma     Seoul     
2           kimkc       Busan     
3           araikuma    Seoul     
4           happykuma   Seoul     
5           mykuma      Daejeon   
sqlite> 

また、アスタリスク(*)を使うと、すべてのカラムをテーブル順に取得できます。

SELECT * FROM テーブル名;

*を使ってuserテーブルを検索します。

select * from user;

すべてのカラムを取得できました。

sqlite> select * from user;
id          name        address   
----------  ----------  ----------
1           devkuma     Seoul     
2           kimkc       Busan     
3           araikuma    Seoul     
4           happykuma   Seoul     
5           mykuma      Daejeon   
sqlite> 

rowidのような特殊値は*に含まれません。必要な場合は、アスタリスクとは別に指定します。

select *, rowid from user;

結果には通常の全カラムに加えて、明示したrowidも含まれます。

sqlite> select *, rowid from user;
id          name        address     rowid     
----------  ----------  ----------  ----------
1           devkuma     Seoul       1         
2           kimkc       Busan       2         
3           araikuma    Seoul       3         
4           happykuma   Seoul       4         
5           mykuma      Daejeon     5         
sqlite>