0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

理解度チェック問題:H2 Database(H2DB)におけるテーブル作成方法

Posted at

理解度チェック問題: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を用いたテーブル作成に関する理解を深めてください。疑問点があれば、チュートリアルや公式ドキュメントを参照し、再度学習を進めましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?