データベースとSQLの考え方:表・行・列と、SQLでできること|マーケターのためのSQL入門 第1回

田中 磨生

監修田中 磨生株式会社Abin 代表取締役

株式会社Abin代表取締役。AI SaaSの上場企業やHR系ベンチャーのマーケティング責任者を経て、2023年BtoBマーケティング特化のコンサルティング会社株式会社Abinを設立。創業から30社以上のBtoBマーケティングの戦略立案から実行までを行う。2025年には株式会社プロベルの役員に就任。NYマーケティング株式会社の執行役員も務める。

プロフィールを見る →

執筆Abin編集部

データベースとSQLの考え方:表・行・列と、SQLでできること|マーケターのためのSQL入門 第1回

この回で分かること:①データベースとは何か、Excelやスプレッドシートと何が違うのか、②表・行・列・キーといった、SQLを書く前に知っておきたい基本の言葉、③SQLという言語の特徴と、1つの文がどんな順番で処理されるのか。最初の回なので、細かい書き方よりも「データベースの中がどうなっていて、SQLで何を頼むのか」という全体像をつかむことに集中します。

顧客の表と注文の表という2つの表がデータベースの中にあり、人がSQLで「欲しいデータ」を頼むと、データベースが条件に合う結果の表を返す関係を示した図
図1:SQLは、データベースに「欲しい表」を頼むための言葉

データベースとは、整理された表の集まり

マーケティングの仕事では、顧客の一覧、注文の記録、サイトの閲覧ログ、広告の配信実績など、たくさんのデータを扱います。こうしたデータを、あとから探したり集計したりしやすいように整理して保存しておく仕組みが、データベースです。

多くの会社で使われているのは「リレーショナルデータベース」と呼ばれる種類で、データを表(テーブル)の形で保存します。顧客の表、注文の表、商品の表……というように、テーマごとに表が分かれていて、それらが「顧客ID」などの共通の項目でつながっています。この講座で「データベース」と言うときは、このリレーショナルデータベースのことを指します。

Excelやスプレッドシートとの違い

表の形でデータを持つという点では、Excelやスプレッドシートと似ています。実際、表計算ソフトを使ったことがある人なら、データベースの表のイメージはすぐにつかめるはずです。ただし、使いどころは次のように違います。

比べる点 表計算ソフト(Excel・スプレッドシート) データベース
得意なデータの量 数万行くらいまでが快適 数百万〜数十億行でも扱える
データの見方 画面で直接見て、セルを編集する SQLで「欲しい形」を頼んで、結果を受け取る
複数の表 シートを行き来して、VLOOKUPなどでつなぐ 共通の項目で表をつなぐのが基本の使い方
同時に使う人 同じファイルを複数人で編集すると壊れやすい 多くの人やシステムが同時に読み書きできる
手順の再現 手作業の操作は記録に残りにくい SQLの文を保存すれば、同じ集計を何度でも再現できる

たとえるなら、表計算ソフトは「自分の机の上のノート」、データベースは「会社の資料室」です。ノートは手軽に書き込めますが、量が増えると探すのが大変です。資料室は棚ごとに整理されていて、決まった手続き(SQL)で頼めば、必要な資料をすぐに出してもらえます。

よくある誤解:「SQLはエンジニアだけのもの」

SQLというと、プログラミングの一種で、エンジニアだけが使うものと思われがちです。しかし、データを取り出して集計するSQLは、英語に近い短い文で書けます。たとえば「顧客の表から、東京都の顧客を全部出して」は、次のように書きます。

SELECT *
FROM customers
WHERE prefecture = '東京都';

「SELECT(選んで)」「FROM(この表から)」「WHERE(この条件で)」と、ほぼ日本語の語順をそのまま英単語に置き換えた形です。表計算ソフトの関数を使ったことがある人なら、十分に読み書きできるようになります。マーケターがSQLを使えると、「データを出してもらうのを待つ時間」がなくなり、気になったことをその場で確かめられるようになります。

表・行・列・キー:SQLの前に知っておきたい言葉

この講座の第2回から第5回では、架空の通販「ツギノテ雑貨店」のデータを使います。ここでは、そのうち2つの表を見ながら、基本の言葉を確認しましょう。データはすべて説明のために作った架空のものです。

顧客の表(customers)の一部:

customer_id prefecture signup_date channel
C001 東京都 2026-04-03 検索広告
C002 大阪府 2026-04-10 自然検索
C003 東京都 2026-04-18 SNS

注文の表(orders)の一部:

order_id customer_id order_date category amount
O101 C001 2026-04-05 食器 3200
O102 C002 2026-04-12 雑貨 1800
O103 C001 2026-04-28 インテリア 8600
  • 表(テーブル):テーマごとにまとめたデータの入れ物です。ここでは customers と orders の2つです。
  • 列(カラム):表の縦の並びで、データの項目を表します。customers なら customer_id(顧客ID)、prefecture(都道府県)、signup_date(会員登録日)、channel(最初に来た流入元)の4つです。
  • 行(レコード):表の横の並びで、1件分のデータです。customers の1行は「1人の顧客」、orders の1行は「1件の注文」を表します。
  • データ型:列ごとに、入るデータの種類が決まっています。文字(テキスト)、数(整数・小数)、日付などです。amount(金額)は整数、order_date(注文日)は日付、といった具合です。
注文の表を例に、縦の並びが列で項目を表し、横の並びが行で1件の注文を表すこと、各列にはデータ型があることを示した図
図2:列は「項目」、行は「1件分のデータ」

1行が何を表すか(粒度)を必ず確かめる

表を見るとき、最初に確かめてほしいのが「この表の1行は何を表しているか」です。これを粒度(りゅうど)と呼びます。customers は1行=1人の顧客、orders は1行=1件の注文です。

粒度を取り違えると、集計を大きく間違えます。たとえば orders の行数を数えて「顧客数」と報告すると、同じ人が何度も注文していれば、その分だけ多く数えてしまいます。実際、サンプルデータでは注文は15件ありますが、注文した顧客は8人です。「何を数えたいのか」と「表の1行が何か」が合っているかを、いつも意識しましょう。この数え方の違いは、第3回で実際にSQLで確かめます。

キー:表と表をつなぐ「合言葉」

customers の customer_id は、顧客1人ひとりに1つずつ振られ、同じ値が2回出てくることはありません。このように、表の中で1行を特定できる列を主キーと呼びます。orders では order_id が主キーです。

一方、orders にも customer_id の列があります。これは「この注文をしたのは、customers のどの顧客か」を指し示すための列で、外部キーと呼びます。customer_id という共通の列があるおかげで、「検索広告から来た顧客の注文の合計」のように、2つの表をつないだ分析ができます。表をつなぐ書き方(JOIN)は第4回で扱います。

顧客の表の主キーであるcustomer_idと、注文の表の外部キーであるcustomer_idが線で結ばれ、1人の顧客に複数の注文がつながる関係を示した図
図3:主キーと外部キーで、表と表がつながる

注文の表(orders)の行数を数えると15件でした。この数字の説明として正しいものはどれでしょう?

  1. 注文した顧客の人数が15人である
  2. 注文の件数が15件である
  3. 会員登録している顧客の人数が15人である
答えと解説

正解は2です。orders の1行は「1件の注文」なので、行数は注文の件数です。同じ顧客が何度も注文していれば、注文した人数は15人より少なくなります。表の1行が何を表すか(粒度)を確かめることが大切です。

なぜ表を分けるのか

「顧客の情報も注文の表に全部入れてしまえば、つなぐ手間がいらないのでは?」と思うかもしれません。たしかに、注文の行ごとに都道府県や流入元を書いておけば、1つの表で済みます。

しかし、そうすると同じ顧客の情報が、注文の数だけくり返し記録されます。C001さんが引っ越して都道府県が変わったら、C001さんの注文の行をすべて書き換えなければなりません。1か所でも書き換え忘れると、データが食い違います。表を分けておけば、顧客の情報は customers の1行を直すだけで済みます。データベースが「テーマごとに表を分けて、キーでつなぐ」形をとるのは、このためです。

FREE MEMBER

無料会員なら、講座が受け放題・AI比較が1日5回

40以上の講座を最後まで読めて、学びの進み具合も記録できます。登録は30秒・無料です。

無料で会員登録する →

SQLの特徴:「やり方」ではなく「欲しい結果」を書く

SQLは、データベースに対して「こういうデータが欲しい」と頼むための言語です。ほとんどのリレーショナルデータベースで使えるため、一度覚えれば、会社の基幹システムでも、クラウドのデータ基盤でも同じ考え方で使えます。

SQLの大きな特徴は、「どうやって探すか」ではなく「何が欲しいか」を書くことです。料理の注文にたとえると、SQLは「卵2個のオムレツをください」という注文票で、厨房でどの順番に卵を割り、どの火加減で焼くかは、データベース(料理人)が考えてくれます。私たちは、欲しい結果を正確に伝えることに集中すればよいのです。

SQLでできること・この講座で扱うこと

SQLの文には、大きく分けて次の種類があります。

種類 代表的な命令 やること
データを取り出す SELECT 表から、条件に合うデータを取り出したり、集計したりする
データを書き換える INSERT・UPDATE・DELETE 行を追加する・値を書き換える・行を削除する
表そのものを作る・変える CREATE・ALTER・DROP 表を作る・列を追加する・表を削除する

マーケターが分析で使うのは、ほとんどが1つ目のSELECTです。この講座でも、SELECTだけを扱います。書き換えや削除の命令は、間違えるとデータそのものが失われるおそれがあります。分析のために使うアカウントには、データを読むだけの権限を付けてもらうのが安全です。権限の考え方は、第6回で詳しく扱います。

SQLの文の書く順番がSELECT・FROM・WHERE・GROUP BY・HAVING・ORDER BY・LIMITであるのに対し、データベースが考える順番はFROM・WHERE・GROUP BY・HAVING・SELECT・ORDER BY・LIMITであることを、上下に並べて対比した図
図4:SQLは「書く順番」と「処理される順番」が違う

書く順番と、処理される順番

SELECTの文は、決まった順番で書きます。この講座で学ぶ部品を全部使うと、次のようになります。

SELECT   列や集計          -- 何を出すか
FROM     表               -- どの表から
WHERE    行の条件          -- どの行を使うか
GROUP BY まとめる単位      -- 何ごとにまとめるか
HAVING   まとめた後の条件   -- まとめた結果をどう絞るか
ORDER BY 並べ替え          -- どの順に並べるか
LIMIT    件数             -- 何件まで出すか

「–」から行の終わりまではコメントで、SQLとしては無視されます。メモを残すのに便利です。

ただし、データベースが考える順番は、書く順番と同じではありません。考え方の上では、次の順で処理されると理解しておくと、エラーや思わぬ結果の原因が分かりやすくなります。

  1. FROM:どの表を使うかを決める(表をつなぐJOINもここ)
  2. WHERE:条件に合わない行を取り除く
  3. GROUP BY:残った行を、指定した単位でまとめる
  4. HAVING:まとめた結果を、条件で絞る
  5. SELECT:出す列や計算を決める
  6. ORDER BY:並べ替える
  7. LIMIT:上から決まった件数だけ残す

たとえば、WHEREはSELECTより先に処理されるので、SELECTの中で付けた別名(あだ名)をWHEREで使うと、標準的なSQLの考え方ではエラーになります(データベースによっては独自の機能として使えるものもありますが、頼らないほうが安全です)。「なぜこの書き方はダメなのか」と迷ったら、この順番を思い出してください。

SQLの文の考え方の上での処理順について、正しいものはどれでしょう?

  1. 書いた順番どおり、SELECTが最初に処理される
  2. ORDER BYで並べ替えてから、WHEREで行を絞る
  3. FROMで表を決め、WHEREで行を絞ってから、SELECTで出す列を決める
答えと解説

正解は3です。考え方の上では、FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMITの順に処理されます。書く順番はSELECTが先頭ですが、処理はFROMから始まります。

方言:データベースごとの小さな違い

SQLには国際規格がありますが、実際のデータベースはそれぞれ独自の機能や書き方を足しています。これを方言と呼びます。SELECT・WHERE・GROUP BY・JOINといった基本はほぼ共通ですが、日付の計算や文字の扱いなどは、データベースによって関数の名前が違うことがあります。

この講座では、共通の書き方を中心に説明し、方言が出る部分はその都度補足します。第5回までの実行結果は、手元で手軽に動かせるSQLiteというデータベースで確かめたものです。第6回では、マーケティングの現場でよく使われるGoogleのBigQueryに合わせた書き方を紹介します。

実務ではこう使う

SQLを覚えたら、まず「自分の会社のどこに、どんなデータがあるか」を確かめることから始めましょう。いきなり複雑な分析をするより、次の順で進めると迷いにくくなります。

  1. データの地図を作る:どの表に何が入っているか、各表の1行が何を表すか、主キーと表どうしのつながりを書き出す
  2. 小さく取り出してみる:表の中身を10行だけ出して、列の名前と値の形(日付の書き方、金額の単位など)を確かめる
  3. 普段見ている数字と照合する:管理画面やレポートの数字と、SQLで出した数字が合うかを確かめる。合わないときは、粒度や期間の定義が違っていることが多い
  4. よく使う集計を保存する:うまくいったSQLは、説明のコメントを付けて保存し、次からそのまま使えるようにする
SQLを実務で使い始めるときの4つの手順、データの地図を作る・小さく取り出す・普段の数字と照合する・よく使う集計を保存する、を左から右へ並べた図
図5:SQLを使い始めるときの4つの手順

手を動かして練習する場所がほしい場合は、BigQueryの「サンドボックス」が使えます。Googleの公式ドキュメントによると、クレジットカードの登録や請求先アカウントを作らずに使え、ストレージは10GiB、クエリは毎月1TiBまで処理できます。ただし、作った表は60日で自動的に消えるなどの制限があります(2026年11月時点)。

社内のデータをどこにためるかを検討している場合は、DWHおすすめ比較で主なサービスを同じ基準で比べています。

FOR BUSINESS

マーケティング・DXの発注先選びに迷ったら

ツギノテを運営する株式会社Abinは、BtoBマーケティングに特化したコンサルティング会社です。創業から30社以上のBtoBマーケティングを支援してきました。

相談無料ツギノテ編集部に相談する

無料会員登録(講座受け放題・AI比較)/セミナーと資料を見る

この回のまとめ

  • データベースは、テーマごとの表をキーでつないで整理したデータの集まりで、大量のデータや複数の表を扱うのが得意です。
  • 表は列(項目)と行(1件分のデータ)でできていて、列ごとにデータ型があります。表の1行が何を表すか(粒度)を必ず確かめます。
  • 主キーは表の中で1行を特定する列、外部キーはほかの表の行を指し示す列で、これで表と表がつながります。
  • SQLは「欲しい結果」を書く言語で、分析ではSELECTを使います。書き換えや削除の命令は扱わず、読むだけの権限で使うのが安全です。
  • SELECTの文は、FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMITの順に処理されると考えると理解しやすくなります。

確認テスト

表の中で1行を特定できる列(たとえば顧客の表の customer_id)を何と呼ぶでしょう?

  1. 主キー
  2. 外部キー
  3. データ型
答えと解説

正解は1です。主キーは、表の中で同じ値が2回出てこない、1行を特定するための列です。外部キーは、ほかの表の主キーを指し示す列です。

顧客の情報(都道府県など)を、注文の表の各行にくり返し書かずに、顧客の表に分けて持つ主な理由はどれでしょう?

  1. 表の数を増やすほど、データベースが速くなるから
  2. SQLは1つの表しか扱えないから
  3. 顧客の情報が変わったとき、1か所を直すだけで済み、データの食い違いを防げるから
答えと解説

正解は3です。同じ情報を何か所にも書くと、書き換え忘れでデータが食い違うおそれがあります。表を分けてキーでつなげば、顧客の情報は顧客の表の1行を直すだけで済みます。

マーケターが分析にSQLを使うときの考え方として、本文の内容に最も近いものはどれでしょう?

  1. 分析にはUPDATEやDELETEも欠かせないので、強い権限をもらっておく
  2. 分析では主にSELECTを使い、データを読むだけの権限で使うのが安全
  3. SQLはエンジニアの言語なので、マーケターは結果だけを受け取ればよい
答えと解説

正解は2です。分析で使うのはほとんどがSELECTです。書き換えや削除の命令は、間違えるとデータが失われるおそれがあるので、分析用のアカウントは読むだけの権限にしておくのが安全です。

SELECTの中で付けた列の別名を、WHEREの条件で使ったところエラーになりました。理由として最も適切なものはどれでしょう?

  1. 別名には日本語しか使えないから
  2. WHEREは必ず最後に書かなければならないから
  3. 考え方の上ではWHEREがSELECTより先に処理されるので、その時点では別名がまだ決まっていないから
答えと解説

正解は3です。処理の順番はFROM→WHERE→…→SELECTなので、WHEREの時点ではSELECTで付けた別名はまだ存在しません。迷ったときは、処理の順番を思い出すのが近道です。

次回予告

次回は、いよいよSELECTを使って、表から必要な列と行を取り出します。列の選び方、WHEREでの条件の組み立て方(AND・OR・IN・BETWEEN・LIKE)、ORDER BYでの並べ替えとLIMITを、ツギノテ雑貨店のデータで実際の結果を見ながら学びます。

NEXT|第2回SELECT・WHERE・ORDER BY:必要な行と列を取り出す次の回へ進む →

参考資料

  • Google Cloud「BigQuery サンドボックスを使用する」(確認日:2026年11月12日)https://docs.cloud.google.com/bigquery/docs/sandbox

この記事は役に立ちましたか?

いま読まれている記事ランキング

    ランキングをもっと見る →

    この記事の内容について

    掲載している情報の修正や削除をご希望の場合は、こちらからご連絡ください。

    修正・削除の依頼
    この講座は第2回まで無料。無料会員なら全6回、最後まで読めます。講座が受け放題・AI比較が1日5回・学びの記録も残せる → 無料で会員登録

    NEXTあわせて読みたい

    ツギノテの記事一覧へ

    編集方針

    • 各社の公式サイトを、確認日を書いて調べています
    • 掲載企業から報酬は受け取っていません
    • 有償の掲載がある場合は「PR」と明記します

    運営:株式会社Abin

    © Abin Co., Ltd.