理解度チェック問題:H2 Database(H2DB)におけるテーブル作成方法
以下の問題に回答して、H2 Databaseを使用したテーブル作成方法に関する理解度を確認しましょう。
問題1:基本構文
Q1: 次のSQL文のうち、正しいテーブル作成の基本構文を選んでください。
A.
CREATE TABLE employees {
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
};
B.
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
C.
CREATE TABLE employees [
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
];
D.
CREATE TABLE employees <
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
>;
問題2:データ型の選択
Q2: price
カラムに適切なデータ型を選んでください。価格には小数点以下2桁までの値を保存します。
A. INT
B. VARCHAR(50)
C. DECIMAL(10, 2)
D. BOOLEAN
問題3:主キーの設定
Q3: 複合主キーを設定する場合、どのようにSQL文を記述しますか?
A.
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY order_id, product_id
);
B.
CREATE TABLE order_items (
order_id INT PRIMARY KEY,
product_id INT PRIMARY KEY,
quantity INT
);
C.
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
D.
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT
);
問題4:外部キーの設定
Q4: employees
テーブルのdept_id
カラムがdepartments
テーブルのdept_id
を参照する外部キーである場合、正しいSQL文はどれですか?
A.
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100),
dept_id INT,
FOREIGN KEY dept_id REFERENCES departments(dept_id)
);
B.
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100),
dept_id INT,
FOREIGN departments(dept_id) KEY dept_id
);
C.
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100),
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
D.
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100),
dept_id INT,
REFERENCES departments(dept_id) FOREIGN KEY (dept_id)
);
問題5:制約の追加
Q5: 以下のうち、username
カラムにNULL値を許可しない制約を追加するSQL文はどれですか?
A.
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
B.
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100)
);
C.
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
email VARCHAR(100)
);
D.
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50) DEFAULT 'guest',
email VARCHAR(100)
);
問題6:インデックスの作成
Q6: email
カラムにインデックスを作成する正しいSQL文はどれですか?
A.
CREATE INDEX email ON users(email);
B.
CREATE INDEX idx_email ON users(email);
C.
CREATE INDEX users(email) ON email;
D.
CREATE INDEX ON users(email) idx_email;
問題7:テーブルの変更
Q7: 既存のusers
テーブルにphone
カラムを追加する正しいSQL文はどれですか?
A.
ALTER TABLE users ADD phone VARCHAR(15);
B.
ALTER TABLE users ADD COLUMN phone VARCHAR(15);
C.
MODIFY TABLE users ADD phone VARCHAR(15);
D.
CHANGE TABLE users ADD phone VARCHAR(15);
問題8:テーブルの削除
Q8: orders
テーブルを存在する場合のみ削除するSQL文はどれですか?
A.
DELETE TABLE orders;
B.
DROP TABLE orders;
C.
DROP TABLE IF EXISTS orders;
D.
REMOVE TABLE IF EXISTS orders;
問題9:制約の理解
Q9: CHECK
制約を使用して、age
カラムが18以上であることを保証するSQL文の一部を完成させてください。
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT,
CONSTRAINT chk_age _______
);
A. CHECK (age > 18)
B. CHECK age >= 18
C. CHECK (age >= 18)
D. CHECK age > 18
問題10:実践問題
Q10: 以下の要件を満たすproducts
テーブルを作成するSQL文を記述してください。
-
product_id
: 自動インクリメントの主キー -
product_name
: 最大100文字の非NULL文字列、ユニーク -
price
: 小数点以下2桁のDECIMAL型、非NULL -
stock
: 整数型、デフォルト値は0 -
created_at
: 現在のタイムスタンプをデフォルト値とする
解答例
以下は問題の解答例です。自己採点にご利用ください。
解答1:
B
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
解答2:
C
DECIMAL(10, 2)
解答3:
C
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
解答4:
C
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100),
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
解答5:
B
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100)
);
解答6:
B
CREATE INDEX idx_email ON users(email);
解答7:
B
ALTER TABLE users ADD COLUMN phone VARCHAR(15);
解答8:
C
DROP TABLE IF EXISTS orders;
解答9:
C
CONSTRAINT chk_age CHECK (age >= 18)
解答10:
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL UNIQUE,
price DECIMAL(10, 2) NOT NULL,
stock INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
これらの問題を通じて、H2 Databaseを用いたテーブル作成に関する理解を深めてください。疑問点があれば、チュートリアルや公式ドキュメントを参照し、再度学習を進めましょう。