まずsql構文で、category Tableを作成して、情報を追加する。

CREATE TABLE category(
	id INTERGER PRIMARY KEY AUTOINCREMENT,
	name VARCHAR(8)
);
sqlite> INSERT INTO category(name) VALUES('tanpopo');
sqlite> INSERT INTO category(name) VALUES('asagao');
sqlite> INSERT INTO category(name) VALUES('himawari');
sqlite> SELECT * FROM category;
1|tanpopo
2|asagao
3|himawari

次に前回作成したuserテーブルにALTAR文を使ってcategoryのフィールドを追加してみる。

SQLiteでデータを取り出してみる


sqlite> ALTER TABLE users ADD COLUMN category INTERGER;

確認してみると、usersの最後にcategoryのfieldが追加された。

sqlite> .schema

CREATE TABLE users( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(8), fname VARCHAR(8), gender CHAR(1) , category INTERGER);


次に、usersのuskosanにcategoryのid=1のtanpopoを追加する。

sqlite> UPDATE users SET category=1 WHERE id=3; 
sqlite> SELECT * FROM users;
1|ryoko|saito|f|
2|kuma|kumasann|m|
3|usa|usakosan|f|1
4|paopom|zousan|m|
5|dorachan|doradora|m|

同様に、usersに情報を追加する。

sqlite> UPDATE users SET category=2 WHERE id=2;
sqlite> UPDATE users SET category=3 WHERE id=1;
sqlite> UPDATE users SET category=1 WHERE id=4;
sqlite> SELECT * FROM users;
1|ryoko|saito|f|3
2|kuma|kumasann|m|2
3|usa|usakosan|f|1
4|paopom|zousan|m|1

この中で、category1だけの情報を取得するには、

sqlite> SELECT * FROM users WHERE category=1;
3|usa|usakosan|f|1
4|paopom|zousan|m|1

これをcategoryのidの数値でなくて、categoryテーブルのnameで検索して表示したい場合は、INNER JOIN で連結する。

sqlite> SELECT * FROM users INNER JOIN category ON users.category=category.id;
1|ryoko|saito|f|3|3|himawari
2|kuma|kumasann|m|2|2|asagao
3|usa|usakosan|f|1|1|tanpopo
4|paopom|zousan|m|1|1|tanpopo

上記の中でtanpopoだけを取得したい場合は、WHEREを使用する。

sqlite> SELECT * FROM users INNER JOIN category ON users.category=category.id WHERE category.name='tanpopo';
3|usa|usakosan|f|1|1|tanpopo
4|paopom|zousan|m|1|1|tanpopo