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?

【DB入門】付録A この教材の SQL 一覧

0
Last updated at Posted at 2026-10-27

この教材で作るユーザー、シーケンス、テーブル、サンプルデータの SQL をまとめて載せています。テーブルを作り直したいときや、別のパソコンで同じ環境を用意したいときに使ってください。第4章で保存した setup.sql と同じ内容です。

A.1 使い方

SQL は、実行する接続(ワークシートのタブの名前)ごとに分けてあります。それぞれのコードの右上の「コピー」ボタンでコピーし、該当する接続のワークシートに貼り付けて、F5(スクリプトの実行)で実行します。

節 実行する接続 いつ実行するか
A.2 XE_SYSTEM 最初の1回だけ(第2章)。すでに dbapp ユーザーがあるときは実行しない
A.3 XE_DBAPP テーブルを作るとき(第3章)と、作り直すとき
A.4 XE_DBAPP A.3 の直後(第4章)
A.5 XE_DBAPP 作り直すとき、A.3 の前に実行する

【再確認】実行する前に、ワークシートのタブの名前を確認する

A.2 は XE_SYSTEM、A.3〜A.5 は XE_DBAPP のワークシートで実行します。XE_SYSTEM で A.3 を実行すると、テーブルが system のスキーマにできてしまいます(第2章)。

A.2 学習用ユーザーの作成(XE_SYSTEM)

ワークシート(XE_SYSTEM)
-- 学習用のユーザー dbapp を作成する
CREATE USER dbapp IDENTIFIED BY dbapp;

-- dbapp にすべての権限を与える(学習用)
GRANT ALL PRIVILEGES TO dbapp;

実行したら、第2章 2.4 の手順で XE_DBAPP の接続を作ります。

A.3 シーケンスとテーブルの作成(XE_DBAPP)

ワークシート(XE_DBAPP)
-- 部署IDの番号を振るシーケンス
CREATE SEQUENCE SEQ_DEPT NOCACHE;

-- 社員IDの番号を振るシーケンス
CREATE SEQUENCE SEQ_EMP NOCACHE;

-- 部署テーブル
CREATE TABLE DEPARTMENT (
  DEPT_ID    NUMBER(4)  CONSTRAINT PK_DEPARTMENT PRIMARY KEY,
  DEPT_NAME  VARCHAR2(20 CHAR)  NOT NULL
);

-- 社員テーブル
CREATE TABLE EMPLOYEE (
  EMP_ID      NUMBER(6)  CONSTRAINT PK_EMPLOYEE PRIMARY KEY,
  NAME        VARCHAR2(20 CHAR)  NOT NULL,
  GENDER      NUMBER(1)  NOT NULL
    CONSTRAINT CK_EMPLOYEE_GENDER CHECK (GENDER IN (1, 2)),
  AGE         NUMBER(3)  NOT NULL,
  BIRTH_DATE  DATE       NOT NULL,
  DEPT_ID     NUMBER(4)  NOT NULL
    CONSTRAINT FK_EMPLOYEE_DEPARTMENT REFERENCES DEPARTMENT (DEPT_ID),
  ADDRESS     VARCHAR2(10 CHAR)  NOT NULL
);

A.4 サンプルデータの登録(XE_DBAPP)

ワークシート(XE_DBAPP)
-- 部署(DEPT_ID は SEQ_DEPT から 1, 2, 3, 4 と振られる)
INSERT INTO DEPARTMENT (DEPT_ID, DEPT_NAME) VALUES (SEQ_DEPT.NEXTVAL, '総務部');
INSERT INTO DEPARTMENT (DEPT_ID, DEPT_NAME) VALUES (SEQ_DEPT.NEXTVAL, '営業部');
INSERT INTO DEPARTMENT (DEPT_ID, DEPT_NAME) VALUES (SEQ_DEPT.NEXTVAL, '開発部');
INSERT INTO DEPARTMENT (DEPT_ID, DEPT_NAME) VALUES (SEQ_DEPT.NEXTVAL, '人事部');

-- 社員(EMP_ID は SEQ_EMP から 1〜10 と振られる)
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '雷禅 海皇', 1, 26, DATE '2000-06-22', 2, '大阪府');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '院照 心愛', 2, 27, DATE '1999-07-11', 1, '京都府');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '林檎 星飛', 1, 24, DATE '2001-12-24', 3, '東京都');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '田中 美咲', 2, 24, DATE '2002-03-05', 3, '愛知県');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '佐藤 健太', 1, 31, DATE '1995-04-12', 2, '東京都');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '鈴木 花子', 2, 29, DATE '1997-01-30', 1, '大阪府');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '高橋 翔', 1, 35, DATE '1991-08-15', 3, '東京都');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '伊藤 さくら', 2, 22, DATE '2004-05-20', 2, '兵庫県');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '渡辺 大輔', 1, 42, DATE '1984-02-10', 2, '神奈川県');
INSERT INTO EMPLOYEE (EMP_ID, NAME, GENDER, AGE, BIRTH_DATE, DEPT_ID, ADDRESS)
  VALUES (SEQ_EMP.NEXTVAL, '中村 結衣', 2, 26, DATE '2000-09-03', 3, '京都府');

-- 登録を確定する
COMMIT;

登録できたかは、次の SQL で確かめられます。

ワークシート(XE_DBAPP)
SELECT e.EMP_ID, e.NAME, e.GENDER, e.AGE, e.BIRTH_DATE,
       d.DEPT_NAME, e.ADDRESS
  FROM EMPLOYEE e
 INNER JOIN DEPARTMENT d ON e.DEPT_ID = d.DEPT_ID
 ORDER BY e.EMP_ID;

A.5 作り直すとき(XE_DBAPP)

テーブルとシーケンスをすべて消します。消した後に、A.3 と A.4 を実行し直します。シーケンスを作り直すので、ID は 1 から振り直されます。

ワークシート(XE_DBAPP)
-- 社員テーブルを先に削除する(部署テーブルを参照しているため)
DROP TABLE EMPLOYEE;
DROP TABLE DEPARTMENT;

-- シーケンスも削除する(番号を 1 から振り直すため)
DROP SEQUENCE SEQ_EMP;
DROP SEQUENCE SEQ_DEPT;

【ご注意】DROP TABLE は取り消せない

テーブルの中のデータも一緒に消え、ROLLBACK では戻せません(第3章)。自分で登録したデータを残したいときは、消す前に SELECT の結果を控えておいてください。


前へ

第10章 テーブルを結合する

次へ

付録B よくあるエラーと対処法

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?