どうもニコイチです。「データベース」って聞くとなんだか難しそうに感じるかもしれませんが、じつは私たちが普段使っているSNSやネットショップも、その裏側ではデータベースが大活躍しています。もし、そのデータベースから必要な情報をサッと取り出せたらどうでしょう? たとえば「こんな本が欲しいな」「あの映画のデータはどうなっているんだろう」と思ったときに、すぐに答えを手に入れられたらとても便利ですよね。そんな夢のような操作を実現してくれるのがSQLです。この記事では、SQLの基本である「SELECT」「FROM」「DISTINCT」を、初心者の方でもわかるようにやさしく解説していきます。ぜひ一緒に、データの世界をのぞいてみましょう!具体例としては、booksテーブル(書籍の情報を持つテーブル)を使って説明します。
目次
SELECT句とFROM句の基本
● SELECT句とは?
- SELECT句は、データベースから欲しい「列(カラム)」を指定して取り出すための命令です。
- 書き方は、次のようになります。
SELECT 列名 FROM テーブル名;
- 例:
SELECT Name FROM books;
上記の例では、booksテーブルから「Name」という列だけを取り出して表示します。
● FROM句とは?
- FROM句は、データを取り出す元となるテーブル(またはビュー)を指定する命令です。
- 上記の例でいうと、
FROM books
がそれにあたります。
● すべての列を取り出す(SELECT *
)
- テーブルの全ての列を取り出したい場合は、列名の代わりに
*
(アスタリスク)を使います。SELECT * FROM books;
*
は「そのテーブルにあるすべての列」を意味します。
単一カラムの取得
● 特定の列だけを取得
- 必要な列が1つだけのときは、次のように書きます。
SELECT 列名 FROM テーブル名;
- 例:booksテーブルの「書籍名」だけを取得したい場合
SELECT Name FROM books;
- このようにすると、Name列(書籍の名前)だけが一覧で表示されます。
3. 複数カラムの取得
● 取り出したい列が複数ある場合
- コンマで区切って列名を書きます。
SELECT 列名1, 列名2, 列名3 FROM テーブル名;
- 例:booksテーブルから「Name(書籍名)」「Price(価格)」「Year(発行年)」をまとめて取り出す
SELECT Name, Price, Year FROM books;
- このように複数列の指定をすると、指定した列の組み合わせで結果が表示されます。
DISTINCTで重複をなくす
● DISTINCT句とは?
- ある列の中に、同じ値が重複して入っていることがあります。DISTINCTを使うと、そういった重複した値をまとめて1つとして取り出すことができます。
- 書き方は、次のとおりです。
SELECT DISTINCT 列名 FROM テーブル名;
- 例:booksテーブルの「Genre(ジャンル)」の一覧を、重複なく取得したい場合
SELECT DISTINCT Genre FROM books;
- これで、同じジャンル名が何回出てきても1回ずつしか表示されなくなります。
実際の書き方のまとめ
下表にサンプルクエリをまとめておきます。どのように書き分ければ良いか、必要に応じて確認してみてください。
やりたいこと | サンプルクエリ | 説明 |
---|---|---|
すべての列を取得したい | SELECT * FROM books; | 全列を一度に確認したいとき |
特定の1列だけを取得したい | SELECT Name FROM books; | 書籍名だけを見たいなど、1つだけの列が必要なとき |
複数列を取得したい | SELECT Name, Price, Year FROM books; | 書籍名、価格、発行年など、複数の列が必要なとき |
重複を取り除いた値だけを取得 | SELECT DISTINCT Genre FROM books; | ジャンルなど、重複を除いてユニークな値だけを抽出したいとき |
ちょっとしたポイント
- 列の順番に気をつける
SELECT 列名1, 列名2
のようにした場合は、出力される列の順番も指定した順になります。必要に応じて並びを変えましょう。
- 必要最小限の列を取得する
SELECT *
を使うと簡単ですが、テーブルが大きくなると不要な情報まで持ってきてしまうので、複数の列を指定して必要な情報だけを取り出すのが望ましいです。- たとえば、大量データを扱う企業のシステムなどでは、パフォーマンス上の理由から「本当に必要な列だけ指定して取得する」ことがよくあります。
- DISTINCTの注意点
DISTINCT
は「指定した列が全て同じものをまとめて1つにする」という動きです。- もし複数列を同時に
DISTINCT
したい場合は、複数列すべての組み合わせが同じ行だけがまとめられます。列が多いと重複が減りにくいこともあります。
参考データ
Stack Overflowが毎年行っている開発者調査(Stack Overflow Developer Survey)によると、多くのエンジニアが日常的にSQLを使用していると回答しています。SQLはデータ分析やウェブアプリなどさまざまな分野で使われているため、最初に理解しておくと今後とても役立ちます。
コメント