前回の記事SQLiteでデータを入れて取り出してみるで、TABLEを作成した。

今回は、TABLEの中で、sql構文で部分的なデータを取得する。

まずは、名前だけを取得したい時は、

sqlite> SELECT name FROM users;
ryoko
kuma
usa
paopom
dorachan

名前と苗字の両方を取得したい時は、nameとfnameの間に','を入れる。

sqlite> SELECT name, fname FROM users;
ryoko|saito
kuma|kumasann
usa|usakosan
paopom|zousan
dorachan|doradora

ryokoという名前の人のデータを全部取得するときは、取得したいfield=で指定する。

sqlite> SELECT * FROM users WHERE name = 'ryoko';
1|ryoko|saito|f

次に、fnameからsanだけがあるものを取得するときは、%を用いる。

sqlite> SELECT * FROM users WHERE fname LIKE '%san';
3|usa|usakosan|f
4|paopom|zousan|m

これだと、kumasannが取得できない。sanの前後に文字を含むを条件に入れたい時は、%を'san'の前後につける。

sqlite> SELECT * FROM users WHERE fname LIKE '%san%'; 
2|kuma|kumasann|m
3|usa|usakosan|f
4|paopom|zousan|m

fnameでsanを含みかつ性別がmを取得したい時は、ANDを用いる。

sqlite> SELECT * FROM users WHERE fname LIKE '%san%' AND gender = 'f';
3|usa|usakosan|f

逆に、fnameでsanを含むが、性別がm以外を取得したい時は、!=を用いる。

sqlite> SELECT * FROM users WHERE fname LIKE '%san%' AND gender != 'm';
3|usa|usakosan|f

sanを含まず、性別がm以外を取得したい時は、NOT LIKEを用いる。

sqlite> SELECT * FROM users WHERE fname NOT LIKE '%san%' AND gender != 'm';
1|ryoko|saito|f