Skip to main content

SQL文の練習

テーブル作成

1. 学生のデータベースを作ろうとし、以下のデータを管理したい:

  • 学生ID(数値)
  • お名前(テキスト)
  • 生年月日(日付)
SQL文
CREATE TABLE students (id INT, name TEXT, birthday DATE);

2. プレーヤーのログイン情報を管理するテーブルを作成し、以下のデータを管理したい:

  • プレーヤーID(数値)
  • ユーザー名(テキスト - 255文字まで)
  • パスワード(テキスト - 255文字まで)
  • 最後のログイン(日時)
SQL文
CREATE TABLE players (id INT, name VARCHAR(255), password VARCHAR(255), last_login DATETIME);

データを挿入

3. 学生のテーブルに2つの学生を追加してください:

  • 大原太郎
    • 生年月日:2006年5月17日
    • ID:1
  • 盛岡一郎
    • 生年月日:2006年3月29日
    • ID:2
  • 石割さくら
    • 生年月日:2004年6月4日
    • ID:3
SQL文
INSERT INTO students SET id=1, name="大原太郎", birthday="2006-5-17";
INSERT INTO students SET id=2, name="盛岡一郎", birthday="2006-3-29";
INSERT INTO students SET id=3, name="石割さくら", birthday="2004-6-4";

または

INSERT INTO students(id, name, birthday) VALUES 
    (1,'大原太郎','2006-05-15'),
    (2,'盛岡一郎','2006-03-29'),
    (3,'石割さくら','2004-6-4');

4. プレーヤーテーブルに1つのプレーヤーを追加してください。ユーザー名とパスワードは適当で、最後のログインは今日の朝10時にしてください。

SQL文
INSERT INTO players SET id="1", name="test_player", password="qwerty", last_login='2026-09-02 10:00:00';

または

INSERT INTO players (id, name, password, last_login) VALUES 
    ('1', 'test_player', 'qwerty', '2026-09-02 10:00:00');

データを更新

5. 大原太郎(ID 1)の生年月日を訂正し、2006年5月25日に直してください。

SQL文
UPDATE students SET birthday='2006-5-25' WHERE id=1

6. プレーヤーのパスワードを「pass1234」に更新し、最後のログインは、今日の午後3時30分にしてください。

SQL文
UPDATE players SET password="pass1234", last_login="2026-09-02 15:40:00" WHERE id=1;

データを削除

7. 盛岡一郎(ID2)が学校を辞めたので、削除してください

SQL文
DELETE FROM students WHERE id=2;

データの検索

8. 2006年生まれの学生を求めてください(2006年1月1日~2026年12月31日)

SQL文
SELECT * FROM students WHERE birthday >= "2006-01-01" AND birthday <= "2026-12-31";

9. プレーヤーの名前だけを表示してください。

SQL文
SELECT name FROM players;

テーブル削除

10. 上記の練習で作った2つのテーブルを削除してください

SQL文
DROP TABLE players, students;

リレーション

空のデータベースで以下のSQL文を実行してください:

アイテムのテーブル

CREATE TABLE `items` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
  `name` TINYTEXT NOT NULL , 
  `cost` SMALLINT NOT NULL , PRIMARY KEY (`id`));

INSERT INTO `items` (`id`, `name`, `cost`) VALUES 
  (1, 'ポーション', '100'), 
  (2, '魔法のマント', '500'), 
  (3, '銀の剣', '600');

プレーヤーのテーブル

CREATE TABLE `players` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
  `name` TEXT NOT NULL , PRIMARY KEY (`id`));

INSERT INTO `players` (`id`, `name`) VALUES 
  (1, 'アンパンマン'), 
  (2, 'メロンパンナ');

各プレーヤーが持っているアイテムの関係テーブル

CREATE TABLE `player_items` (
  `id` INT NOT NULL AUTO_INCREMENT , 
  `player_id` INT NOT NULL , 
  `item_id` INT NOT NULL , 
  `count` INT NOT NULL , PRIMARY KEY (`id`));

INSERT INTO `player_items` (`id`, `player_id`, `item_id`, `count`) VALUES
  (1, 1, 1, 2),
  (2, 1, 3, 1),
  (3, 2, 1, 5),
  (4, 2, 2, 1);

この場合は:

11. player_itemsとplayersのテーブルを id で連携し、すべてを表示してください

SQL文
SELECT * 
FROM player_items, players 
WHERE player_id = players.id;

12. 上記のSQL文を編集し、items の連携を追加してください(つまり、各プレーヤーのアイテムを表示)

SQL文
SELECT * 
FROM player_items, players, items 
WHERE player_id = players.id AND item_id = items.id;

13. 上記のSQL文を編集し、id を隠し、この順番でカラムを表示してください:

プレーヤー名|アイテム名|数

SQL文
SELECT players.name, items.name, player_items.count 
FROM player_items, players, items 
WHERE player_id = players.id AND item_id = items.id;