アマテラスの crew テーブルの中身を、乗組員全員分まるごと見たいとき、SQLでどう指示を出せばいいと思いますか?
「全部見せて」という日本語を、そのままSQLの形に変換するだけです。実は、この講座で最初に覚えるSQL文は、たったの1行なんです。
SELECT文の基本形
いよいよSQLを実際に書いていきます。データを取り出すための基本形は、次の1文です。
SELECT * FROM crew;
これを実行すると、crew テーブルの中身が、すべての行・すべての列でそのまま返ってきます。
| id | name | role | age | home | salary |
|---|---|---|---|---|---|
| 1 | ユミ | エンジニア | 24 | 地球 | 320000 |
| 2 | ケンジ | パイロット | 35 | 火星 | 400000 |
| 3 | サクラ | 医師 | 41 | 地球 | 520000 |
| 4 | ハルト | 医師 | 33 | 月 | 450000 |
| 5 | レイ | 研究員 | 29 | 火星 | 380000 |
| 6 | ミドリ | パイロット | 27 | 地球 | 360000 |
| 7 | ソラ | エンジニア | 45 | 月 | 470000 |
| 8 | トウマ | 研究員 | 24 | NULL | 270000 |
| 9 | アカリ | エンジニア | 31 | 火星 | 350000 |
| 10 | リョウ | パイロット | 38 | NULL | 440000 |
たった1行のSQL文で、テーブルの中身をまるごと見ることができました。まずはこの形を、しっかり指で覚えてしまいましょう。
句の読み方 ― SELECT句とFROM句
SELECT * FROM crew; は、実は2つの「句(く)」に分けて読むことができます。
- SELECT \* ― 「すべての列を選ぶ」という意味。
*(アスタリスク)は「全部」を表す記号 - FROM crew ― 「
crewテーブルから」という意味。データの取り出し元を指定している
つまりこの文は「crew テーブルから、すべての列を選んで取り出す」と読めます。日本語の語順とは逆になりますが、「どこから(FROM)」「何を(SELECT)」という2つの部品の組み合わせだと考えると、ぐっと読みやすくなります。
STAGE 02が進むにつれて、WHERE や ORDER BY のような句がどんどん増えていきますが、基本の形はいつも「句を1つずつ積み重ねていく」というシンプルな作りです。
セミコロンで文を終える
SQL文の最後についている ;(セミコロン)にも意味があります。これは「ここでこのSQL文は終わりです」という区切りの合図です。
英語の文がピリオドで終わるように、SQL文はセミコロンで終わる、と覚えておくとよいでしょう。1つのSQL文であれば省略できる場面もありますが、この講座では常にセミコロンを書く習慣をつけていきます。複数のSQL文を続けて書くときには、この区切りがないと、どこまでが1つの命令なのかコンピューターが判断できなくなってしまうからです。
SELECT * FROM crew; というSQL文を、句ごとに分けて説明するとどうなるでしょう?
答えを見る
SELECT * は「すべての列を選ぶ」、FROM crew は「crew テーブルから」という意味です。合わせて「crew テーブルから、すべての列を取り出す」という命令になります。文末の ; は、SQL文の終わりを示す区切りです。
SELECT ・ FROM ・ ; の3点セット、頭では分かっても、実際に自分の指で打ってみないと本当には身につきません。SQL DIVERを開いて、SELECT * FROM crew; を自分の手で入力し、結果が返ってくる感覚を確かめてみましょう。
SQLの一番シンプルな形、SELECT * FROM テーブル名;。これがすべての土台になるよ。次は「全部」じゃなくて「必要な列だけ」を選ぶ方法を見ていこう!