【独学】はじめてのWebプログラミング – 7.4 データベースの基礎④(Mac)

データの様々な抽出方法

まずはターミナルで以下を順に実行し、データを拡張しておきます。

delete from student;

alter table student add age int;

insert into student (number,name,create_datetime,update_datetime,age) values (1,”鈴木一郎”,NOW(),NOW(),18);

insert into student (number,name,create_datetime,update_datetime,age) values (2,”鈴木二郎”,NOW(),NOW(),32);

insert into student (number,name,create_datetime,update_datetime,age) values (3,”鈴木三郎”,NOW(),NOW(),22);

insert into student (number,name,create_datetime,update_datetime,age) values (4,”鈴木四郎”,NOW(),NOW(),51);

insert into student (number,name,create_datetime,update_datetime,age) values (5,”鈴木五郎”,NOW(),NOW(),47);

実行後にレコードを取得すると、以下のようになっています。

ターミナル

COUNT

データの件数を取得する命令です。
ターミナルで以下のSQLを実行します。

select count(*) from student;

ターミナル

「count(*)」の「(*)」はすべてのデータ(レコード)という意味で、「count(*)」は「すべてのレコードの数」という意味になります。
ここでは、studentテーブルにはデータ(レコード)は5つあるので、「5」と表示されています。

MAX、MIN

レコードが増えていくと、その中の最大値・最小値のデータを取得したい場合があります。その場合にMAX、MINを使います。
ターミナルで以下のSQLを実行します。

select max(age) from student;

ターミナル
データベースの説明

「max(age)」は「ageというカラムの値の内、最大値を取得する」という意味です。
ここでは「51」が取得できました。

次に最小値を取得します。

select min(age) from student;

ターミナル
データベースの説明

ORDER BY

データの順番を並び替えるには、ORDER BYを使用します。
ターミナルで以下のSQLを実行します。

select * from student order by age;

ターミナル

「order by age」は「ageカラムの値を(昇順に)並び替える」という意味になります。ageのデータが「18」「22」「32」「47」「51」のように昇順になっていますね。

降順にするには、以下のように実行します。

select * from student order by age desc;

ターミナル

降順にするには「desc」を付けます。ageのデータが「51」「47」「32」「22」「18」のように降順になっていますね。

AND

「~かつ…」のようにAND条件でデータを抽出することができます。
ターミナルで以下のSQLを実行します。

select * from student where number >= 2 and age < 40;

ターミナル

「where」は「~の場合に(レコードを抽出する)」という意味でした。
ここでは「numberカラムの値が2以上」かつ「ageカラムの値が40未満」のレコードを抽出する、という意味になります。

OR

「~または…」のようにOR条件でデータを抽出することができます。
ターミナルで以下のSQLを実行します。

select * from student where number = 2 or age < 40;

ターミナル

「where」は「~の場合に(レコードを抽出する)」という意味でした。
ここでは「numberカラムの値が2」または「ageカラムの値が40未満」のレコードを抽出する、という意味になります。

BETWEEN

範囲指定をしてデータを抽出することができます。
ターミナルで以下のSQLを実行します。

select * from student where age between 20 and 40;

ターミナル

「where」は「~の場合に(レコードを抽出する)」という意味でした。
次の「age between 20 and 40」は、「カラムageについて20~40の間のデータを抽出する」という意味になります。

LIKE

指定した文字で検索してデータを抽出することができます。
ターミナルで以下のSQLを実行します。

select * from student where name like ‘%三%’;

ターミナル

「where」は「~の場合に(レコードを抽出する)」という意味でした。
次の「name like」は、「カラムnameの値が~のようであれば」という意味です。
それに続く「’%三%’」は、部分一致で「三」という文字があるかを検索しています。「%」で囲むと部分一致を示します。
つなげると「カラムnameの値が(部分一致で)’三’を含む場合に、そのレコードを抽出する」という意味になります。

LIMIT

LIMITを指定すると、取得するレコード件数に制限をかけることができます。
ターミナルで以下のSQLを実行します。

select * from student limit 2;

ターミナル

レコードは5つありますが、「limit 2」を指定することで、2件のみ抽出できていることが分かります。

OFFSET

OFFSETを指定することで、取得するレコードの開始位置を指定することができます。
ターミナルで以下のSQLを実行します。

select * from student limit 2 offset 2;

ターミナル

offsetを指定しないと、numberが1の鈴木一郎さんから取得できますが、「offset 2」を付けることで開始位置を2つ後ろにずらし、numberが3の鈴木三郎さんから取得できていることが分かります。あわせて「limit 2」を指定しているので、2つのデータのみを取得しています。

データベースの説明

本節の説明は以上になります。

トップページ <<前のカリキュラムへ戻る 次のカリキュラムへ進む>>

タイトルとURLをコピーしました