Files
db-lesson/【練習問題】 SQL/Question2/Question2.txt
2026-09-28 13:01:36 +09:00

133 lines
5.0 KiB
Plaintext

問題1
mysql> CREATE TABLE item_category (
-> category_id INT AUTO_INCREMENT PRIMARY KEY,
-> category_name VARCHAR(256) NOT NULL
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO item_category ('家具');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''家具')' at line 1
mysql> ^C
mysql>
mysql> INSERT INTO item_category (category_name) VALUES ('家具');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO item_category (category_name) VALUES ('飲料');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO item_category (category_name) VALUES ('食品');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM item_category;
+-------------+---------------+
| category_id | category_name |
+-------------+---------------+
| 1 | 家具 |
| 2 | 飲料 |
| 3 | 食品 |
+-------------+---------------+
3 rows in set (0.00 sec)
問題2
CREATE TABLE items ( item_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(256), price INT, category_id INT, FOREIGN KEY (category_id) REFERENCES item_category(category_id));
INSERT INTO items (name, price, category_id)
-> VALUES ('ローマのテーブル', 150000, 1);
INSERT INTO items (name, price, category_id) VALUES ('げーたるど2000 500 ml', 370, 2);
mysql> INSERT INTO items (name, price, category_id) VALUES ('原始肉', 2500, 3);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO items (name, price, category_id) VALUES ('魅惑の橋子', 100000, 1);
Query OK, 1 row affected (0.00 sec)
問題3
SELECT * FROM items JOIN item_category USING (category_id);
+-------------+---------+-----------------------+--------+---------------+
| category_id | item_id | name | price | category_name |
+-------------+---------+-----------------------+--------+---------------+
| 1 | 1 | ローマのテーブル | 150000 | 家具 |
| 1 | 4 | 魅惑の橋子 | 100000 | 家具 |
| 2 | 2 | げーたるど2000 500 ml | 370 | 飲料 |
| 3 | 3 | 原始肉 | 2500 | 食品 |
+-------------+---------+-----------------------+--------+---------------+
4 rows in set (0.00 sec)
問題4
SELECT *
FROM items
JOIN item_category USING (category_id)
ORDER BY price ASC;
+-------------+---------+-----------------------+--------+---------------+
| category_id | item_id | name | price | category_name |
+-------------+---------+-----------------------+--------+---------------+
| 2 | 2 | げーたるど2000 500 ml | 370 | 飲料 |
| 3 | 3 | 原始肉 | 2500 | 食品 |
| 1 | 4 | 魅惑の橋子 | 100000 | 家具 |
| 1 | 1 | ローマのテーブル | 150000 | 家具 |
+-------------+---------+-----------------------+--------+---------------+
4 rows in set (0.00 sec)
問題5
SELECT * FROM items JOIN item_category USING (category_id) WHERE category_name = '家具';
+-------------+---------+------------------+--------+---------------+
| category_id | item_id | name | price | category_name |
+-------------+---------+------------------+--------+---------------+
| 1 | 1 | ローマのテーブル | 150000 | 家具 |
| 1 | 4 | 魅惑の橋子 | 100000 | 家具 |
+-------------+---------+------------------+--------+---------------+
2 rows in set (0.00 sec)
問題 6
mysql> SELECT * FROM items JOIN item_category USING (category_id) WHERE price BETWEEN 1000 AND 50000;
+-------------+---------+--------+-------+---------------+
| category_id | item_id | name | price | category_name |
+-------------+---------+--------+-------+---------------+
| 3 | 3 | 原始肉 | 2500 | 食品 |
+-------------+---------+--------+-------+---------------+
1 row in set (0.00 sec)
問題7
mysql> SELECT COUNT(*) AS total_items FROM items;
+-------------+
| total_items |
+-------------+
| 4 |
+-------------+
1 row in set (0.00 sec)
問題8
mysql> SELECT * FROM items WHERE price = (SELECT MAX(price) FROM items);
+---------+------------------+--------+-------------+
| item_id | name | price | category_id |
+---------+------------------+--------+-------------+
| 1 | ローマのテーブル | 150000 | 1 |
+---------+------------------+--------+-------------+
1 row in set (0.00 sec)
問題9
mysql> SELECT * FROM items WHERE name LIKE '%の%';
+---------+------------------+--------+-------------+
| item_id | name | price | category_id |
+---------+------------------+--------+-------------+
| 1 | ローマのテーブル | 150000 | 1 |
| 4 | 魅惑の橋子 | 100000 | 1 |
+---------+------------------+--------+-------------+
2 rows in set (0.00 sec)