【えすきゅーえる】

SQL とは?

最終更新:
💡 表のデータに「これを探して」と伝える言葉

表形式のデータを扱うリレーショナルデータベースなどで使う言語。条件に合うデータの検索、追加・更新・削除、テーブルの作成などを指示する。共通する基本構文があるが、製品ごとに構文や機能の違いもある。

📌 このページのポイント
SQL — 条件に合う行と列を取り出すproducts(架空の商品表)ペン:50円 ノート:100円かばん:300円SELECT nameFROM productsWHERE price >= 100;name(商品名)を取り出すノート・かばん
架空の価格を使うSELECTとWHEREの例。ORDER BYがないため結果の並び順は保証されない。
ひよこ ひよこ
SQLって、何をお願いできるの?
ペンギン先生 ペンギン先生
たとえば商品の表から、価格が100円以上の商品の名前を探せるよ。データの検索はSELECT、追加はINSERT、更新はUPDATE、削除はDELETEで指示する。データを操作するほかに、CREATE TABLEで新しい表を作ることなどもできるんだ。
ひよこ ひよこ
SELECTとWHEREを、どう読むの?
ペンギン先生 ペンギン先生
「SELECT name FROM products WHERE price >= 100;」なら、「productsという表から、priceが100以上の行のnameを取り出す」と読めるよ。SELECTは取り出す列、FROMは対象の表、WHEREは行を選ぶ条件なんだ。結果の並びを指定したいときはORDER BYを使うよ。
ひよこ ひよこ
JOINは、表を横に並べるだけ?
ペンギン先生 ペンギン先生
指定した条件に合う行同士を組み合わせるんだ。たとえば注文のユーザーIDと、ユーザーのIDを結び付けると、注文者の名前も取得できる。INNER JOINは条件に合う組だけを返す。LEFT JOINは左の表の行を残し、右に対応する行がなければ右側の値をNULLにするよ。条件や行数によって、結果の数も変わるんだ。
ひよこ ひよこ
どのデータベースでも同じSQLが使えるの?
ペンギン先生 ペンギン先生
SELECTやWHEREなどの基本は共通しているけれど、使える型や関数、件数制限の書き方などには違いがあるよ。練習でも、使う製品の公式チュートリアルで確認しよう。まず小さな架空の表で検索や並べ替えを試すとよいね。UPDATEやDELETEは意図より広い範囲を変更しないよう、条件と対象を確かめることも大切だよ。
ひよこ ひよこ
SQLインジェクションを防ぐには?
ペンギン先生 ペンギン先生
ユーザーの入力を文字列連結でSQLの命令に組み込むと、意図しない操作をされる危険があるよ。値はパラメータ化クエリで渡し、命令とデータを分けよう。テーブル名など、値のパラメータにできない部分は、あらかじめ許可した候補から選ぶなどの対策が必要だね。ORMやフレームワークを使っていても、危険な組み立て方をすれば安全とは限らないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SQL」って出てきたら「データベースの表を検索・操作する言葉」と思えばだいたいOK!
📖 おまけ:英語の意味
「Structured Query Language」 = 構造化問い合わせ言語
💬 Structured(構造化された)Query(問い合わせ)Language(言語)だよ

参考資料

← 用語集にもどる