SQLの基礎はわかったけど、書き方が覚えられないな...
SQLの演習が無料でできるサイトとかがあるといいんだけど...
すぐにできる演習があれば、それも知りたい!
SQLの基礎がわかっても、その後どうやってスキルを伸ばせば良いかわからない方もいるのではないでしょうか。
SQLは網羅的に学ぼうとすると途端に奥が深くなりますし、悩んでいる方も多いですよね。
この記事では、SQLの演習が無料でできるおすすめサイト5選を紹介します!ただ紹介するだけでなく、具体的な演習問題も用意しているので、SQLのスキルを鍛えたい方におすすめです。
SQLの演習ができるおすすめサイト5選

まず、SQLの演習が無料でできる以下5つのサイトについて解説します。特徴も一緒に表にまとめたので、確認してください。
特徴 | 有料版 | |
Progate | スライド形式でサクサク学習 | 有 |
TRYCODE | 一緒に学んで即演習 | 有 |
paizaラーニング | 動画を見ながらコードが書ける | 有 |
SQL攻略 | シンプルな演習が可能 | 無 |
Tech Pjin | 圧倒的な問題量 | 無 |
次はそれぞれ詳しく解説していきます。
スライド形式でサクサク学習「Progate」

有料版 | あり |
無料版でできること | 学習コースⅠ、それぞれのコースの最初の問題 |
こんな人におすすめ | ・基礎から学習したい ・入門向けの演習に挑戦したい |
Progateは、プログラミングが学べる学習サービスです。アカウント登録だけですぐにSQLを学べる環境が手に入るので、とてもおすすめです。
SQLの基礎を学ぶコース、SQLを書いて実践する道場コースの2つがあります。
- ProgateにあるSQLコースの例
- 学習コース:SQLⅠ
- 学習コース:SQLⅡ
- 学習コース:SQLⅢ
- 道場コース:SQLⅠ
- 学習コース:SQLⅣ
学習コース:SQLⅠと各コースの初めは、アカウント登録するだけで演習ができます。
また、SQLが書ける方は、道場コースに挑戦してみるのがおすすめです。挑戦してみて、「意外とまだわからないところが多いな...」と感じたら、学習コースで学んでいきましょう。
- こんな人におすすめ
- SQLの基礎から演習をしたい人
- 入門向けの演習から挑戦してみたい人
一緒に学んで即演習「TRYCODE」
有料版 | あり |
無料版でできること | 複数の演習問題 |
こんな人におすすめ | ・・SQLの書き方を学びながら演習したい人 ・演習問題をたくさん解きたい人 |
2つ目は、TRYCODEです。TRYCODEは、演習問題を解きながら学んでいくことができるサービス。
ただ問題が出てきて解くだけでなく、以下の2つのモードがあります。
- TRYCODEの2つのモード
- 一緒に解く
- 演習する
SQLの基礎がわかっているとはいえ、うる覚えなところもありますよね。そんな時は、動画を見ながら一緒に解ける「一緒に解くモード」がおすすめです。慣れてきたら、「演習するモード」でどんどん演習問題を解いていきましょう。
また、自由にSQLを実行することができる「SQL練習場」もあります。テーブル設計済みのデータがある環境でSQLが書けるので、SQLを学ぶときにもおすすめです。
初級トレーニングのいくつかは無料で演習できるので、気になる人はぜひ試してください。
- こんな人におすすめ
- SQLの書き方を学びながら演習したい人
- SQLの演習問題をとにかく解きまくりたい人
- SQLを書くためのデータがそろった環境が欲しい人
動画を見ながらコードが書ける「paizaラーニング」
有料版 | あり |
無料版でできること | SQL入門編1の途中まで、SQL入門編2の全て |
こんな人におすすめ | ・SQLの基礎を補いたい人 ・動画を見ながら演習したい人 |
paizaラーニングは、動画で学びながらコードを書いて演習できる学習サービス。以下のように4つのエリアに分かれており、知識を定着させながら演習しやすいのが特徴です。
ある程度基礎は分かったけど、まだ余り自信がないなぁ...
と思っている方に、特におすすめのサービスです。初めの演習は無料で行えるので、試しに挑戦してみましょう。
またpaizaラーニングのスキルチェックで高評価を出せば、転職に活用することもできます!転職を目指して学んでいる方にとっては、とても嬉しい機能ですよね。
- こんな人におすすめ
- SQLの基礎がまだ不安で演習しつつ補いたい人
- 動画を見ながら演習するスタイルが好きな人
シンプルな演習が可能「SQL攻略」
有料版 | なし |
無料版でできること | 全ての問題 |
こんな人におすすめ | ・文章で読みながら学習したい人 ・学んだことをすぐに演習したい人 |
SQL攻略は、その名の通りSQLの攻略をするための学習サイト。全ての問題を無料で演習できます。
記事としてSQLの知識を解説するだけでなく、記事にセットで実習問題が以下のようにあるのが特徴です。
実際に学んだことをすぐ試せるので、実践的な書き方を手を動かしながら学ぶことができます。
SQLの基礎だけでなく、データベース設計でもつかえる正規化の概念も解説されています。一通り見ながら手を動かすだけで、網羅的な知識がつくのでおすすめです!
- こんな人におすすめ
- 動画よりも文字で学びたい人
- 学んだあとすぐに実践で試す形式が好きな人
圧倒的な問題量「Tech Pjin:SQL演習問題」
有料版 | なし |
無料版でできること | 全ての問題 |
こんな人におすすめ | とにかく多くの問題を演習したい人 |
TECH Pjinは、技術系の記事をまとめているメディアです。「SQL演習問題」というカテゴリがあり、約70個の演習問題の記事が用意されています。
以下の4つのポイントで、問題が用意されています。
- Tech Pjinの問題記事の4つのポイント
- 同じテスト環境・データの準備方法
- 問題文
- 解答のSQL
- 解答のSQLになる理由の補足説明
ただ問題と答えがあるだけでなく補足説明までしっかりあるので、わからなかった時に理解しやすいですよね。また自分で環境を構築する必要があるため、作業を通してより実践的なSQLを学習できます。
- こんな人におすすめ
- とにかくSQLの演習問題をゴリゴリ解きたい人
- 演習問題の答えだけでなく補足も見たい人

SQLの基礎演習

次に、SQLの基礎演習についていくつかご紹介します。
基礎演習問題を通してSQLをどのぐらい理解しているかを確認できるので、ぜひチャレンジしてください。
演習問題を行うため、SQLのインストールが必要です。方法がわからない人は下記の記事を参考にしてください。

演習に入る前に、演習に使うデータの作り方を解説しますね!
演習に使うデータの作り方
今回演習に使うデータは、以下のとおりです。
使用するテーブル:
上記テーブルを用意するために、以下のSQLを実行してください
演習で使うテーブル・レコードを用意するためのSQL:
ユーザ一覧テーブル作成 CREATE TABLE `users` ( `id` INT(11), `name` VARCHAR(30), `age` INT(3) ); 部署所属ユーザ一覧テーブル作成 CREATE TABLE `dept_users` ( `dept_cd` VARCHAR(50), `dept_name` VARCHAR(50), `id` INT(11) ); -- ユーザ一覧テーブルのデータ挿入 INSERT INTO users(id,name,age) VALUES(1,'侍太郎1',22); INSERT INTO users(id,name,age) VALUES(2,'侍太郎2',23); INSERT INTO users(id,name,age) VALUES(3,'侍太郎3',25); INSERT INTO users(id,name,age) VALUES(4,'侍1',27); INSERT INTO users(id,name,age) VALUES(5,'侍2',21); -- 部署所属ユーザ一覧テーブルのデータ挿入 INSERT INTO dept_users(dept_cd,dept_name,id) VALUES('A0001','第一開発部',1); INSERT INTO dept_users(dept_cd,dept_name,id) VALUES('A0001','第一開発部',2); INSERT INTO dept_users(dept_cd,dept_name,id) VALUES('A0002','第二開発部',3); INSERT INTO dept_users(dept_cd,dept_name,id) VALUES('A0002','第二開発部',4); INSERT INTO dept_users(dept_cd,dept_name,id) VALUES('A0002','第二開発部',5);
準備ができたら、早速演習を解いていきましょう。今回は、以下の5つを用意しました。
- SQLの演習問題
- SQL演習1:単一テーブルのデータを取得
- SQL演習2:条件を追加してデータを取得
- SQL演習3:複数テーブルを結合してデータ取得
- SQL演習4:サブクエリを使ってデータを取得
- SQL演習5:サブクエリを応用してデータ更新
「問題文 → 実行結果 → 演習のSQLを書くための補足 → 解答の流れ」で、それぞれ演習を紹介しますね。
SQL演習1:単一テーブルのデータを取得

1つ目の演習は、単一テーブルのデータ取得です。
- 問題
usersテーブル一覧のデータの、全てのデータを表示してください。実行結果が、以下のように表示されたら正解です。
実行結果:
| id | name | age | | ---: | --- | ---: | | 1 | 侍太郎1 | 22 | | 2 | 侍太郎2 | 23 | | 3 | 侍太郎3 | 25 | | 4 | 侍1 | 27 | | 5 | 侍2 | 21 |
上記が上手くいかない方は、SELECT文の基礎を学ぶのがおすすめです。以下で解説しているので、見ながら再挑戦してみましょう。

解答のSQLは、以下です。
解答のSQL:
SELECT * FROM users;
SQL演習2:条件を追加してデータを取得

2つ目は、条件を追加してデータ取得する演習です。
- 問題
usersテーブルから、名前に「太郎」が含まれているデータを全て表示してください。実行結果が、以下のように表示されたら正解です。
実行結果:
| id | name | age | | ---: | --- | ---: | | 1 | 侍太郎1 | 22 | | 2 | 侍太郎2 | 23 | | 3 | 侍太郎3 | 25 |
上記が上手くいかない方は、WHERE句とLIKE句の使い方を学ぶことがおすすめです。以下で解説しています。


解答のSQLは、以下です。
解答のSQL:
-- ① SELECT * FROM users WHERE name LIKE '%太郎%';
SQL演習3:複数テーブルを結合してデータ取得

3つ目は、複数テーブルを結合してデータを取得する演習です。
- 問題
usersテーブルとdept_usersテーブルを「id」で結合し、全てのデータを表示してください。ただし、表示する内容は以下の順番にしてください。
- dept_cd
- dept_name
- id
- age
- name
実行結果が、以下のように表示されたら正解です。
実行結果:
| dept_cd | dept_name | id | name | age | | --- | --- | ---: | --- | ---: | | A0001 | 第一開発部 | 1 | 侍太郎1 | 22 | | A0001 | 第一開発部 | 2 | 侍太郎2 | 23 | | A0002 | 第二開発部 | 3 | 侍太郎3 | 25 | | A0002 | 第二開発部 | 4 | 侍1 | 27 | | A0002 | 第二開発部 | 5 | 侍2 | 21 |
上記が上手くいかない方は、JOIN句を使ってテーブルを結合する方法を学びましょう。以下で詳しく解説しているので、読んだ後再挑戦してみてください。

解答のSQLは、以下です。
解答のSQL:
SELECT dept_users.dept_cd, dept_users.dept_name, users.id, users.name, users.age FROM users INNER JOIN dept_users ON users.id = dept_users.id;
SQL演習4:サブクエリを使ってデータを取得

4つ目は、サブクエリを使った演習です。
- 問題
usersテーブルの中でage(年齢)が23~27のidを取得し、そのidを使ってdept_cd(部署コード)、dept_name(部署名)を表示してください。実行結果が、以下のように表示されたら正解です。
実行結果:
| dept_cd | dept_name | | --- | --- | | A0001 | 第一開発部 | | A0002 | 第二開発部 | | A0002 | 第二開発部 |
サブクエリは、初心者が最初に躓きやすいポイントとして有名です。難しいなと感じたら、IN句を使ったサブクエリの作り方を以下を見て学びましょう。

IN句以外にもサブクエリは便利な使い方が多いので、「サブクエリの知識が弱いな...」と思ったら追加で以下を見るのがおすすめです。

解答のSQLは、以下です。
解答のSQL:
SELECT dept_cd, dept_name FROM dept_users WHERE id IN ( SELECT id FROM users WHERE age BETWEEN 23 AND 27 );
SQL演習5:サブクエリを応用してデータ更新

5つ目は、サブクエリを応用する演習です。
- 問題
dept_usersテーブルでdept_cd(部署コード)が「A0001」のidを取得し、usersテーブルのname(名前)を「サブクエリで更新」に変えてください。変えた後、結果確認のためusersテーブルのデータを全て表示してください。
実行結果が、以下のように表示されたら正解です。
実行結果:
| id | name | age | | ---: | --- | ---: | | 1 | サブクエリで更新 | 22 | | 2 | サブクエリで更新 | 23 | | 3 | 侍太郎3 | 25 | | 4 | 侍1 | 27 | | 5 | 侍2 | 21 |
作るのが難しい場合は、SELECT文から作ってみましょう。
dept_usersテーブルでdept_cd(部署コード)が「A0001」のidを取得するSELECT文を作ってから、UPDATE文の条件に入れるのがおすすめです。
UPDATE文になれていない方は、以下を見て学んでから再挑戦するのも一つの手です。

解答のSQLは、以下です。
解答のSQL:
-- サブクエリでデータ更新 UPDATE users SET name = 'サブクエリで更新' WHERE id IN ( SELECT id FROM dept_users WHERE dept_cd = 'A0001' ); -- usersテーブルのデータ確認 SELECT * FROM users;
効率的にSQLを学習するなら

何から学び始めればいいの?
難しそうだし、挫折したらやだな…。
ここまでSQLの演習が無料でできるおすすめサイト・具体的な演習問題について解説してきましたが、上記のような悩みを持っている方も多いですよね。
そんな方のために、SQLの情報と学習方法をまとめている記事を用意したので、参考にしてみてください。

更に詳しく学びたい方には、弊社が運営するサブスク型のプログラミングスクール「SAMURAI TERAKOYA」がおすすめです。
月額2980円(税別)で、主に4つのサービスを提供させていただきます。
- 現役エンジニアによる月1度の「マンツーマン指導」
- 平均回答時間30分の「Q&Aサービス」
- 作りながら学べる28種類の「教材」
- 学習を記録&仲間と共有できる「学習ログ」
目的にあった教材を選べば、どなたでも効率よく学習できるほか、Q&Aサービスやマンツーマン指導を活用することで、挫折せずにSQLの習得が可能です。
SQLを効率的に学びたい人はもちろん、何から始めたらよいのかわからない方は、ぜひ「SAMURAI TERAKOYA」をご利用ください。

まとめ
今回は、SQLの演習が無料でできるおすすめサイト・具体的な演習問題を紹介しました。
いきなりすべて覚えるのは難しいですが、演習をこなしていくと着実にスキルは伸びていきます。簡単な演習からでいいので、ぜひやってみてください。
またより実践的なスキルをつけたいなら、アプリ開発しながらSQLを学ぶことがおすすめです。初めはシンプルに機能を作り、一通りできたらアプリに必要な機能を追加していくのが挫折しないコツです。
確実に実践的なスキルが身につくので、挑戦してみてください。
この記事のおさらい
スライド形式で学べる定番の「Progate」や、演習問題を解きながら実戦形式で学べる「TRYCODE」などがあります。他にも、paizaラーニング、SQL攻略、Tech Pjin等がおすすめです。
特定の条件でのデータ取得やデータの更新など、SQLの基本的な操作が学べます。SQLをどの程度操作できるか、確認してみてください。
自分でアプリ開発をしながらSQLを学ぶことがおすすめです。挫折しないよう、シンプルな機能から始めましょう。