データベース ・ Chapter 3

SELECTで取り出す

記事 ・ 冒頭を無料公開中

ここからSQLを本格的に学びます。最初はSELECT——テーブルからデータを取り出す命令です。実務で書くSQLの大半はSELECTです(書き込みは1日数回でも、読み取りは何千回と走ります)。この章で「条件で絞る・並べる・件数を切る」まで身につければ、データベースへの依頼文の骨格は完成です。

概要

シードを見てください。前の章を終えたあなたなら、もう全部読めるはずです。usersテーブルを作り(id は自動採番の主キー、name は NOT NULL、age と city は NULL 許容)、6人分のデータがあります。

SELECT——どの列を、どの表から

SELECT 列1, 列2 FROM テーブル名;

SELECTの直後に欲しい列、FROMの後にテーブル名。全列なら * です。

▶ 実行してみよう

name, age を * に変えたり、name だけにしたりして、返る表の形が変わることを確かめてください。

WHEREで行を絞る

列を選ぶのがSELECTの直後なら、行を絞るのがWHEREです。

SELECT * FROM users WHERE age >= 20;

比較に使える記号は、プログラミングとほぼ同じです。

記号意味
=等しい(イコール1つ)
!=等しくない(<> とも書ける)
>=以上
<=以下
>より大きい
<より小さい

注意は1点、等しいは = 1つです(== ではありません)。文字列の値はシングルクォートで囲みます: WHERE city = '東京'。

▶ 実行してみよう

条件を city != '東京' に変えて実行してみてください。東京以外のはずが、佐藤さん(cityがNULL)がいません。NULLは != の判定にもかからないのです。この件は、この後すぐ扱います。

AND / OR——条件を組み合わせる

SELECT * FROM users WHERE age >= 20 AND city = '東京';   -- 両方満たす
SELECT * FROM users WHERE city = '東京' OR city = '大阪'; -- どちらか満たす

▶ 書き換えてみよう

次の欄で「20歳以上かつ40歳以下」の人を取り出してください(ヒント: AND で age の条件を2つ)。田中・佐藤・伊藤の3人が出れば正解です。

NULLの探し方——IS NULL

「ageが未登録の人」を探したいとします。素直に書くと——

このチャプターの続きは受講生限定です

本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。

料金プランを見る