1. ホーム
  2. 個人向けサービス
  3. キカガク技術ブログ
  4. ChatGPT×SQL ではじめるデータ取得入門
2024年8月6日

ChatGPT×SQL ではじめるデータ取得入門

こんにちは、キカガクでエンジニアをしている高橋です。

エンジニアではなくても SQL が使えるとビジネスに便利というのを聞いたことがあるけど、なんだか難しそうで手をつけられていない…そんな方も多いのではないでしょうか?

私は普段 SQL を書いていますが ChatGPT をはじめとした生成 AI の発展により、SQL が非常に扱いやすくなりました。また、これから SQL を学びたいという方も、ある一定 ChatGPT を SQL を書けば仕組みなどが理解しやすいようになったと感じています。

この記事では ChatGPT を活用して SQL でデータ取得する方法を紹介します!

SQL とは

SQL はデータベースを操作するための言語です。データの検索、追加、更新、削除などができますが、今回はデータの検索をメインに紹介します。

SQL についての基礎知識は以下もご覧いただくとスムーズです。

データ取得してみる

今回はデータベースが顧客テーブル、売上テーブルと分かれている前提で進めていきます。

例:顧客テーブル

id

name

gender

birthday

1

Alice

F

1990-01-01

2

Bob

M

1985-05-12

3

Carol

F

1992-07-23

例:売上テーブル

id

user_id

amount

date

1

1

100

2023-01-01

2

2

150

2023-02-01

3

3

200

2023-03-01

顧客情報を取得する

まずは User というテーブルから name, gender, birthday を取得する SQL 文を書くようにお願いしてみましょう。理解を進めるために解説しながら進めてもらうようにします。

ChatGPT に送信

SQLを書いてください。 私はSQLが始めてなので書いてくれたものを解説しながら進めてください。 Userテーブルから 名前、性別、誕生日を取得したい。

ChatGPT からの返答

SQL の基本的な SELECT 文を使って、User テーブルから名前、性別、誕生日を取得する方法を説明します。

以下がその SQL 文です:

SELECT name, gender, birthday FROM User;

では、文を一行ずつ解説します。

  • SELECT:

    これは SQL クエリの中で、取得したい列を指定する部分です。この場合、name、gender、birthday の 3 つの列を選択しています。

  • name, gender, birthday:

    これは SELECT の後に続く部分で、取得したい具体的な列の名前をカンマで区切って列挙しています。これにより、ユーザーテーブルからこれらの列のデータを取得します。

  • FROM User:

    これはデータを取得するテーブルの名前を指定します。この場合、User テーブルからデータを取得しています。

この SQL 文を実行すると、User テーブルの中から、名前、性別、誕生日の列のデータが返されます。

例として、User テーブルのデータが以下のようになっているとします:

id

name

gender

birthday

1

Alice

F

1990-01-01

2

Bob

M

1985-05-12

3

Carol

F

1992-07-23

この SQL 文を実行すると、以下のような結果が返されます:

name

gender

birthday

Alice

F

1990-01-01

Bob

M

1985-05-12

Carol

F

1992-07-23

できましたね!SELECT と FROM の意味についてもなんとなくわかったのではないでしょうか。

ただ、これだけだと活用できている気がしないと思います。次のステップに進みましょう!

売上情報とそれに紐づく顧客情報を取得する

次は売上情報を取得します。売上情報を売上テーブルから取得するだけでは、「誰が」というのがわからないので、先ほどの顧客テーブルと結合します。

ChatGPT に送信

Userに紐づいているSalesを取得したいです。それぞれをidで結合してください。

ChatGPT からの返答

Sales テーブルが User テーブルと user_id で紐づいていると仮定して、User テーブルの情報とそれに紐づく Sales テーブルの情報を取得する SQL 文を書いてみましょう。ここでは、User テーブルの名前、性別、誕生日と、それに関連する Sales テーブルのすべての列を取得する方法を説明します。

SELECT User.name, User.gender, User.birthday, Sales.* FROM User INNER JOIN Sales ON User.id = Sales.user_id;

この SQL 文を一行ずつ解説します。

  • SELECT User.name, User.gender, User.birthday, Sales.*:

これは SELECT の後に、取得したい列を指定します。ここでは User テーブルの name、gender、birthday 列と、Sales テーブルのすべての列 (Sales.*) を選択しています。

  • FROM User:

データを取得するテーブルの名前を指定します。ここでは、User テーブルを基にしています。

  • INNER JOIN Sales ON User.id = Sales.user_id:

INNER JOIN は 2 つのテーブルを結合するための句です。この場合、User テーブルと Sales テーブルを結合しています。

ON User.id = Sales.user_id は、結合条件を指定します。ここでは、User テーブルの id 列と Sales テーブルの user_id 列が一致する行を結合しています。

例として、User テーブルと Sales テーブルが以下のようになっているとします:

User テーブル:

id

name

gender

birthday

1

Alice

F

1990-01-01

2

Bob

M

1985-05-12

3

Carol

F

1992-07-23

Sales テーブル:

id

user_id

amount

date

1

1

100

2023-01-01

2

1

150

2023-02-01

3

2

200

2023-03-01

この SQL 文を実行すると、以下のような結果が返されます:

name

gender

birthday

id

user_id

amount

date

Alice

F

1990-01-01

1

1

100

2023-01-01

Alice

F

1990-01-01

1

1

150

2023-02-01

Bob

M

1985-05-12

3

2

200

2023-03-01

このようにして、User テーブルと Sales テーブルを id と user_id で結合し、両方のテーブルの情報を取得できます。


かなりそれっぽくなってきましたね。JOIN を活用して売上データと顧客データを紐づけることができました。次は支払金額が一定以上のものだけ取得するようにしましょう。

条件を指定して取得する

次は条件を指定してみましょう。売上金額が一定以上の場合のみ取得するようにします。

ChatGPT に送信

では次は支払金額が130以上のものだけ取得してください。

ChatGPT からの返答

支払金額(amount)が 130 以上のものだけを取得するためには、先ほどのクエリに WHERE 句を追加します。以下の SQL 文では、User テーブルと Sales テーブルを結合し、支払金額が 130 以上のレコードだけを取得します。

SELECT User.name, User.gender, User.birthday, Sales.* FROM User INNER JOIN Sales ON User.id = Sales.user_id WHERE Sales.amount >= 130;
  • この SQL 文を一行ずつ解説します。

SELECT User.name, User.gender, User.birthday, Sales.*:

取得したい列を指定しています。ここでは、User テーブルの name、gender、birthday 列と、Sales テーブルのすべての列 (Sales.*) を選択しています。

  • FROM User:

データを取得する基となるテーブルを指定します。ここでは、User テーブルです。

  • INNER JOIN Sales ON User.id = Sales.user_id:

INNER JOIN 句で User テーブルと Sales テーブルを結合しています。結合条件は、User テーブルの id 列と Sales テーブルの user_id 列が一致する行を結合しています。

  • WHERE Sales.amount >= 130:

WHERE 句でフィルタ条件を指定しています。ここでは、Sales テーブルの amount 列が 130 以上のレコードだけを取得しています。

例として、User テーブルと Sales テーブルが以下のようになっているとします:

User テーブル:

id

name

gender

birthday

1

Alice

F

1990-01-01

2

Bob

M

1985-05-12

3

Carol

F

1992-07-23

Sales テーブル:

id

user_id

amount

date

1

1

100

2023-01-01

2

1

150

2023-02-01

3

2

200

2023-03-01

この SQL 文を実行すると、以下のような結果が返されます:

name

gender

birthday

id

user_id

amount

date

Alice

F

1990-01-01

2

1

150

2023-02-01

Bob

M

1985-05-12

3

2

200

2023-03-01

このようにして、支払金額が 130 以上のレコードだけを取得できます。質問があればどうぞ!


条件指定には WHERE を使うことがわかったかと思います。これと同じ原理で年齢が何歳以上の人、といった条件でもデータを取得できますね。

このような感じで一つ一つ ChatGPT に聞くことで SQL について理解を深めながらデータを取得できます。

まとめ:ChatGPT と試行錯誤しながら SQL を習得しませんか?

ChatGPT を活用することで SQL でのデータ取得ができることを紹介しました。

ただ、この記事を読んで SQL について完全に理解できた!とはならないでしょう。ぜひ、ご自身でも ChatGPT と試行錯誤しながら SQL を実践してみてください。

それによって一つ一つ理解が進み、実践につながっていきます。もし SQL を実行できる環境があればそちらを活用いただくのがいいですね。

SQL と一緒に Python を学ぶのもおすすめです。キカガクラーニングでは Python を基礎から学べるコースがあります。ぜひこちらもご活用ください!

SHARE




キカガクラーニング

AI/データサイエンス学びはじめの方におすすめの記事

未経験からAI人材 無料説明会に参加

未経験からAI人材 無料説明会に参加