LPIC-1 102 の SQL 学習法 その2
- カテゴリ:
- Linux
前回で SQLite を起動しましたが、まだ何のデータもありませんので作っていきます。
name | price | number |
---|---|---|
apple | 200 | 3 |
orange | 300 | 5 |
banana | 200 | 2 |
apple | 200 | 4 |
orange | 300 | 2 |
lemon | 250 | 3 |
banana | 200 | 4 |
こんな感じのデータにしてみましょう。ちなみに表全体を table、各列を column、各行を record と言います。テーブルを作成するには create コマンドを使いますが、102の試験ではテーブルの作成は出ないようです。ここでは table を lpi とし name にはテキスト、price と number は数字を利用するという形で指定しています。
sqlite> create table lpi(name varchar(10), price smallint, number smallint);
ちなみに最後に";"(セミコロン)が付いていますが、これはコマンドの終了を表しています。言い換えると、このセミコロンがないとコマンドは終了せず続きのコマンドを待ちつづけます。
sqlite> create table lpi(name varchar(10), price smallint, number smallint)
...> ;
プロンプトが ...> となっているのが、引き続きコマンドを待っている状態を表しています。単純に最後にセミコロンを入れ忘れたときは、上記の様にセミコロンのみを入力すれば大丈夫。
次にこのテーブルに実際のデータを追加します。insert というコマンドを使いますが、これ以降はテストの対象コマンドです。
sqlite> insert into lpi values('apple',200,3);
insert コマンドの後、into に続きテーブル名(ここでは lpi)を指定します。その後 values に続き () の中にそれぞれのデータを "," で区切って代入します。apple の様な文字列は ' ' で括る必要があります。
sqlite> insert into lpi values('orange',300,5);
sqlite> insert into lpi values('lemon',250,1);
sqlite> insert into lpi values('banana',200,2);
sqlite> insert into lpi values('apple',200,4);
sqlite> insert into lpi values('orange',300,2);
sqlite> insert into lpi values('lemon',250,3);
sqlite> insert into lpi values('banana',200,4);
このようにしていけばデータが必要な分だけ入力できます。では次に入力したデータを確認してみましょう、select というコマンドを使いますが非常に重要です。
sqlite> select * from lpi;
apple|200|3
orange|300|5
lemon|250|1
banana|200|2
apple|200|4
orange|300|2
lemon|250|3
banana|200|4
上記コマンドでデータの一覧が表示されました。select コマンドの後の "*" は表示する column の指定で、"*" とするとすべて(name, price, number)を意味します。from の後に table を指定します。下記の様に表示する column を指定することもできます。
sqlite> select name,number from lpi;
データを表示する際に並べ替えるには order by を利用します。
sqlite> select * from lpi order by name;
apple|200|3
apple|200|4
banana|200|2
banana|200|4
lemon|250|1
lemon|250|3
orange|300|5
orange|300|2
by の後を name としたことで apple, bnana, lemon, orange の順に並んだことが分かります。もちろん price や number を指定することも出来ます。
同じ column の値をまとめるには group by を使います。Linux コマンドでの uniq のようなものです。下記の例では column の name のみを指定することにより重複しない形で name だけを表示しています。order by を続けて指定することも可能です。
sqlite> select name from lpi group by name;
apple
banana
lemon
orange
where を使うとデータの抽出が可能です。下記の例では name が apple のデータを指定しています。文字列を指定するときは 'apple' の様に括らないとエラーになるので注意。
sqlite> select * from lpi where name = 'apple';
apple|200|3
apple|200|4
下記の例では number が3より大きいものを指定していますが、併せて name と number のみを表示の対象とし、order by で並べ替えています。長くなるので3行に分けて実行しました。
sqlite> select name,number from lpi
...> where number > 3
...> order by name;
apple|4
banana|4
orange|5
コメント
コメント一覧 (1)