たとえるなら

このサイトのマスコット、帽子をかぶった青い小鳥のルートンが旗を振っている

図書館の司書さんに渡すリクエスト用紙です。「今年出版された料理の本を、新しい順に10冊」と決まった書式で書いて渡せば、書庫の並び方を知らなくても、その通りに揃えて持ってきてくれます。

アプリ・人 問い合わせる側 データベース データの保管庫 SQLで「先月の売上は?」 条件に合うデータを返す
決まった書式のリクエスト用紙(SQL)を渡せば、データベースが結果を揃えて返してくれる。

もう少しくわしく

SQL(エスキューエル)は、データベースを操作するための専用言語です。データを「取り出す」「追加する」「書き換える」「削除する」といった指示を、決まった文法で書きます。読み方は「エスキューエル」が一般的ですが、「シークエル」と呼ぶ人もいます。

覚えるべき土台は4つの命令だけです。取り出すSELECT、追加するINSERT、書き換えるUPDATE、消すDELETE。このうち日常的にいちばん使うのはSELECTで、集計や調査の用途ならSELECTだけでもかなりのことができます。

SQLの面白いところは、「何がほしいか」だけを書けばよいことです。たとえば「注文データの中から、先月の分だけを、金額の大きい順に」と条件を書けば、どうやって探すかはデータベース側が自分で考えて、最短の方法で結果を返してくれます。手順を細かく指示しなくてよいので、文法の種類も比較的少なく、学び始めやすい言語です。

実際の文は、英語の文章に近い形をしています。「どの列がほしいか(SELECT)」「どの表から(FROM)」「どんな条件で(WHERE)」「どう並べるか(ORDER BY)」を順に書くだけです。読むだけなら、プログラミング経験がなくても意味を推測できる——これがSQLの大きな特徴で、非エンジニアにも広まっている理由です。

少し進むと集計結合が出てきます。集計は「県ごとの申し込み件数」のようにまとめて数える機能、結合は「注文」の表と「会員」の表をつなげて、注文者の名前も一緒に取り出す機能です。この2つが使えるようになると、実務で必要な調査のほとんどをこなせるようになります。

気をつけたいのは、UPDATEとDELETEは取り返しがつかないことです。条件を書き忘れると全件を書き換えたり消したりしてしまいます。実務では、まず同じ条件でSELECTして対象を確認してから実行する、本番のデータを触る前にバックアップを取る、といった手順が必ず踏まれます。

SQLを使うのはエンジニアだけではありません。データ分析の担当者や企画職の人が、売上の集計やユーザー動向の調査のためにSQLを書く会社も多くあります。データベースが使われ続けるかぎり必要とされる、息の長いスキルと言われています。

現場での使われ方

「ちょっとSQL書いて調べてみますね」

データベースに直接問い合わせて、実際のデータがどうなっているか確認します、という意味。調査や問い合わせ対応の定番フレーズです。

「このSQL、重くて時間かかってるみたい」

書いた問い合わせの効率が悪く、結果が返るまでに時間がかかっている、という意味。書き方を工夫して速くする改善もエンジニアの仕事です。

「WHERE を付け忘れないでくださいね」

条件なしで UPDATE や DELETE を流すと全件が対象になる、という警告。本番データを扱うときの合言葉です。

「その集計、SQLで出せますか?」

資料のために欲しい数字を、データベースから直接取り出せるか尋ねる質問。企画職からエンジニアへの依頼でよく出ます。

よくある質問

SQLはプログラミング言語ですか?

広い意味では仲間ですが、アプリを丸ごと作れる汎用のプログラミング言語とは違い、データベースの操作に特化した言語です。その分だけ覚えることが絞られており、プログラミング未経験の人が最初に学ぶ言語としても人気があります。

SQLの読み方はどれが正しいですか?

日本の現場では「エスキューエル」が一般的です。英語圏では「シークエル」と読む人も多く、どちらも間違いではありません。相手の読み方に合わせておけば問題ありません。

SELECT / INSERT / UPDATE / DELETE の違いは何ですか?

SELECTは取り出す、INSERTは新しく追加する、UPDATEは既にあるデータを書き換える、DELETEは消す、です。調査や集計で使うのはほぼSELECTだけで、残り3つはデータを変えるため慎重に扱われます。

非エンジニアでも学ぶ価値はありますか?

大いにあります。「先月の申し込みを県別に知りたい」といった集計を、毎回エンジニアに頼まず自分で出せるようになります。SELECTと集計だけなら、学習の負担も比較的軽い部類です。

MySQLやPostgreSQLとは何が違うのですか?

MySQLやPostgreSQLはデータベース製品の名前で、SQLはそれらに指示を出すための言語です。基本の文法は共通ですが、製品ごとに独自の書き方が少しずつ違います。まずは共通部分を覚えれば、乗り換えても困りません。

関連用語

関連する記事

エンジニア職種図鑑

この言葉を使って働く人たちの仕事を、7つの職種で

ITの学び方ガイド

もっと知りたくなったら。教材の選び方を3ステップで