データベース ・ 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が未登録の人」を探したいとします。素直に書くと——
このチャプターの続きは受講生限定です
本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。