まず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> 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