LPIC-1 102 の SQL 学習法 その3
- カテゴリ:
- Linux
データを更新するには update を使います。下記の例では update でテーブル lpi を指定し、set で price の値を800に更新しています。where を使わないと、すべての price が800になってしまうので注意。select で結果を確認しました。
sqlite> update lpi set price=800 where name = 'apple';
sqlite> select name,price from lpi where name = 'apple';
apple|800
apple|800
join はちょっと分かりづらいです。このコマンドを使うと異なるテーブルのデータを連結させることが出来ますが、分かりやすくするために2つのテーブル、first と second を追加します。両方のテーブルに共通する column id を作っています。
sqlite> create table first(id int, name varchar(10));
sqlite> insert into first values(1,'apple');
sqlite> insert into first values(2,'bnana');
sqlite> insert into first values(3,'lemon');
sqlite> create table second(id int, price int);
sqlite> insert into second values(1,150);
sqlite> insert into second values(1,130);
sqlite> insert into second values(2,90);
sqlite> insert into second values(2,95);
sqlite> insert into second values(3,230);
sqlite> select * from first;
1|apple
2|bnana
3|lemon
sqlite> select * from second;
1|150
1|130
2|90
2|95
3|230
ここで join を使ってみます。select でテーブル first を指定し left を指定しています。この left により左側(最初に指定した first)が優先されて表示されます。join に続き2つ目のテーブル second を指定しています。最後に on に続いてデータを共通化させる id を指定しています。
sqlite> select * from first left join second on first.id = second.id;
1|apple|1|150
1|apple|1|130
2|bnana|2|90
2|bnana|2|95
3|lemon|3|230
見づらいので少し修正してみました。
sqlite> select name,price from first
...> left join second
...> on first.id = second.id;
apple|150
apple|130
bnana|90
bnana|95
lemon|230
最後に削除です。データを行単位で削除するには delete コマンドを使います。where で指定をしないと、すべての行が削除されてしまうので注意が必要。
sqlite> delete from lpi where number = 1;
テーブルを削除するには drop コマンドを使います。下記の例ではテーブル lpi を削除しました。SQLite であれば .schema コマンドで結果を確認することが可能です。
sqlite> drop table lpi;
このあたりがさらさら出来れば、LPI 102 の試験は問題ないでしょう…。