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?

Oracle Database SQL (1Z0-071-JPN)試験 SELECTの基本と表・データ型の土台【第2章_前編】

0
Last updated at Posted at 2026-03-28

この記事について

Oracle Database SQL 試験(1Z0-071-JPN)第2章の前半にあたる「SELECT文の基本」と「データ型・表の確認方法」を整理した記事です。試験でよく問われるポイントを中心に、単なる構文の羅列ではなく「なぜそうなるのか」を意識しながら説明します。


SELECT文の基本構文

SELECT文の役割と基本形

SELECT文は、表からデータを取り出すための命令です。最小の形は以下のとおりです。

SELECT 列名1 [, 列名2, ...] FROM 表名;
  • SELECT の後に書く列名のリストを SELECTリスト(選択リスト) と呼びます
  • *(アスタリスク)を指定すると、すべての列を取得できます
-- 全列を取得
SELECT * FROM employees;

-- 特定の列だけ取得
SELECT employee_id, last_name, salary FROM employees;
動作確認 テストデータ作成

image.png

image.png

①全列を取得

image.png

②特定の列だけ取得
image.png


SELECT文の3つの機能

① 射影(投影)
表から特定の列を取得します。

② 選択
 表から特定の行を取得します

③ 結合
複数の表のデータを関連付けて取得します


WHERE句による条件絞り込み

WHERE句を使うことで、取得する行を条件で絞り込めます。

SELECT 列名 FROM 表名 WHERE 条件;

① 等価条件(=)

値が一致する行だけを表示します。

SELECT * FROM employees WHERE department_id = 10;
動作確認

等価条件
image.png

② 比較条件(<・>・<=・>=・<>)

大小関係で絞り込みます。

SELECT * FROM employees WHERE salary >= 500000;
動作確認

比較条件
image.png


書く順序と実行順序の違い

SELECT文を書く順序と、DBが実際に処理する実行順序は異なります。これは試験でもよく問われるポイントです。

書く順序(構文順) 実行順序(処理順)
① SELECT(列の指定) ① FROM(表を読み込む)
② FROM(表の指定) ② WHERE(行を絞り込む)
③ WHERE(条件) ③ GROUP BY(グループ化)
④ GROUP BY(グループ化) ④ HAVING(集計後の絞り込み)
⑤ HAVING(集計後の条件) ⑤ SELECT(列を選ぶ)
⑥ ORDER BY(並び替え) ⑥ ORDER BY(並び替える)

処理の流れを一言で言うと「FROMで表を読み込み→WHEREで行を絞り込み→最後にSELECTで表示列を選ぶ」です。

🔑 試験ポイント:列別名はWHERE句で使えない

SELECT salary * 12 AS annual_sal FROM employees WHERE annual_sal > 60000;

この書き方はエラーになります。列別名(annual_sal)が定義されるのはSELECT句の処理タイミング(実行順⑤)ですが、WHERE句は実行順②(SELECT処理より前)に実行されるため、別名がまだ存在しないためです。


列別名(AS句)

SELECT句では、列に別名を付けて表示名を変えられます。

SELECT last_name AS "社員名", salary AS "月給" FROM employees;
動作確認

列別名(AS句)
image.png

覚えておきたいルール

ルール 内容
AS は省略可能 last_name "社員名" とも書ける
" "(二重引用符)が必要な場合 スペースや$・_・#以外の記号を含む場合
" "が必要な場合(続き) 大文字小文字を区別したい場合、先頭が数字・記号の場合、Oracleの予約語と同じ名前の場合
ORDER BYでの使用 スペースを含んだ列別名の場合、 " "(二重引用符)で囲む
算術式での使用 算術式で列別名を指定することはできるが、列別名を使用して計算することはできない

列別名を使える句・使えない句

句 列別名の使用
SELECT ✅ 使える(ここで定義する)
ORDER BY ✅ 使える(SELECT処理より後に実行されるため)
WHERE ❌ 使えない(SELECT処理より前に実行されるため)
GROUP BY ❌ 使えない(Oracle 19cまで)

DUAL表

DUAL表は、Oracleのインストール時に自動的に作成されるダミー表です。

項目 内容
列構成 DUMMY という名前の VARCHAR2(1) 型の列を1つ持つ
行数 1行のみ(X という値が格納されている)
スキーマ SYSスキーマに属するが、スキーマ名なしでアクセス可能
アクセス権 すべてのユーザーが読み取り可能(PUBLICロールにREAD権限が付与されているため)

主な用途

  • 定数や式の評価結果を確認したいとき
  • 関数の動作確認(表を参照せずにSELECT文を実行したいとき)
-- 現在日付を取得
SELECT SYSDATE FROM DUAL;

-- 計算結果を確認
SELECT 1 + 1 FROM DUAL;

-- 関数の動作確認
SELECT UPPER('hello') FROM DUAL;
動作確認

現在日付を取得
image.png

計算結果を確認
image.png

関数の動作確認
image.png

🔑 試験ポイント:OracleはFROM句を省略できないため、「表は不要だが式や関数を試したい」場面でDUAL表を使います。これはOracle特有の知識です。


データ型と表の構造確認

データ型とは

データ型とは、その列にどのような種類のデータを格納するかを定義するためのものです。型を正しく設定することで、格納できる値・比較の動作・ストレージの使い方が変わります。


文字列型

VARCHAR2(n)

可変長の文字列を格納します。

  • n はバイト数(最大4000バイト)
  • 格納した文字列の長さだけ領域を使う(ABCD → 4文字、XY → 2文字)
  • 桁数の指定が必須(省略するとエラー)

CHAR(n)

固定長の文字列を格納します。

  • n バイトに満たない文字列を格納した場合、残りを空白文字で埋める
  • ABCD(4文字)も XY(2文字)も、CHAR(10) の場合はどちらも10文字で格納される

🔑 試験ポイント:CHARとVARCHAR2で同じ文字列を比較すると、空白埋めの影響で一致しないことがあります。

CLOB

CHAR型やVARCHAR2型では対応できない大きなテキストデータを格納します。

  • サイズを指定しない
  • 最大4GB相当のテキストデータを格納可能

数値型

NUMBER(p, s)

整数・小数問わず数値を格納します。

  • p:全体の最大有効桁数(精度)。1〜38まで指定可能
  • s:小数点以下の最大桁数(スケール)
  • NUMBER のみ(指定なし)は最大精度で格納
指定例 格納できる値の例
NUMBER(5) 最大5桁の整数
NUMBER(5, 2) 全体5桁・小数2桁(最大 999.99)
NUMBER 対応できる最大精度

注意点①:整数部分の桁数を超えるとエラー

-- NUMBER(5, 2)→整数部は最大3桁
INSERT INTO test VALUES (5, 1234.56); -- ORA-01438 エラー
動作確認

テストデータ作成
image.png

NUMBER(5, 2)→整数部は最大3桁
image.png

注意点②:小数部分の桁数を超えると四捨五入

-- NUMBER(5, 2)→小数部は2桁まで
INSERT INTO test VALUES (6, 12.345); -- 12.35 として格納される
動作確認

小数部分の桁数を超えると四捨五入
image.png

🔑 試験ポイント:整数部超過はエラー(ORA-01438)、小数部超過はエラーにならず四捨五入。この違いは頻出の引っかけ問題です。


日付・時刻型

DATE

「年月日時分秒」の6要素を格納します。

  • ミリ秒(小数秒)は格納できない
  • SYSDATE 関数で現在日時を取得

TIMESTAMP

DATEの機能に加えて小数秒(ミリ秒以下)も格納できます。

TIMESTAMP WITH TIME ZONE

日付・時刻(小数秒含む)に加えてタイムゾーン情報も格納します。

TIMESTAMP WITH LOCAL TIME ZONE

日付・時刻(小数秒含む)を格納します。データはDB標準のタイムゾーンで保存され、取得時にセッションのタイムゾーンに変換されます。

INTERVAL YEAR TO MONTH / INTERVAL DAY TO SECOND

期間を表すデータ型です。

型 格納できる期間
INTERVAL YEAR TO MONTH 年・月の期間
INTERVAL DAY TO SECOND 日・時・分・秒の期間

🔑 試験ポイント:「ミリ秒(小数秒)を格納できるのはTIMESTAMP型であり、DATE型では格納できない」は頻出です。


その他のデータ型

データ型 用途
BLOB 画像・音声などのバイナリデータ(サイズ指定なし)
LONG 可変長文字データ(最大2GB)。現在はCLOB推奨
RAW(size) バイナリデータ。sizeは1〜2000バイト
LONG RAW バイナリデータ(最大2GB)。現在はBLOB推奨
BFILE 外部ファイルに格納されるバイナリデータ(最大4GB)

💡 LONG や LONG RAW は旧来の型で、現在は CLOB / BLOB の使用が推奨されています。


表構造の確認:DESCRIBEコマンド

SQL*Plus で表の列定義を確認するには DESCRIBE コマンドを使います。

DESCRIBE employees;
-- または省略形
DESC employees;
動作確認

image.png

実行すると以下の情報が表示されます。

  • 列名
  • NULL許容かどうか(NOT NULL かどうか)
  • データ型と桁数

🔑 試験ポイント:DESC は DESCRIBE の省略形として使えますが、これはSQL文ではなくSQL*Plusのコマンドです。SQLのキーワード(SELECTなど)は省略できませんが、DESCRIBE は DESC と略せます。


本章のまとめ

テーマ 試験で押さえるポイント
SELECT基本構文 SELECT 列 FROM 表 が最小形。* で全列取得
書く順序 vs 実行順序 書く順:SELECT→FROM→WHERE、処理順:FROM→WHERE→SELECT
列別名(AS) ORDER BY では使えるが WHERE・GROUP BY(Oracle)では使えない
" "が必要な別名 スペース・特殊記号・予約語・数字始まり・大小文字区別が必要な場合
DUAL表 1行1列のダミー表。PUBLICロールで全ユーザーからアクセス可能
VARCHAR2 vs CHAR CHARは空白埋めの固定長、VARCHAR2は可変長
NUMBER(p, s) 整数部超過→エラー(ORA-01438)、小数部超過→四捨五入
DATE vs TIMESTAMP 小数秒を扱えるのはTIMESTAMPのみ
DESCRIBE SQL*PlusのコマンドでSQL文ではない。DESC と省略可能

参考

  1. ORACLE MASTER Silver DBAへの道 #2|よっしー - note

  2. [SQL] SELECT文を使ったデータの操作 | ORACLE MASTER Bronze ...

  3. 【SQL】データを抽出するSELECT文の使い方を基礎から解説 -

  4. 初心者向けSQL講座|SELECT文の書き方と実行順を完全解説

  5. OracleのSELECT文の評価順序 - 忘れかけのIT備忘録

  6. 【SQL】SQLの「書く順番」と「実行される順番」を整理してみる

  7. SQLの書き順と実行順序

  8. [SQL]別名を付けた(AS句)カラムをWHERE句で使えなかった ...

  9. SQL AS句の使い方完全ガイド|カラム・テーブルの別名設定 ...

  10. 【SilverSQL】第2章 - Qiita

  11. OracleのDUAL表とは?

  12. 【Oracle】DUAL表って?使い方は?

  13. Oracle dual表について解説! - オラクルマスターを取得しよう

  14. DUAL表の使用 – | oraclemaster

  15. Oracleのデータ型を徹底解説!数値・文字列・日付・LOBの ...

  16. 26 Oracleデータ型

  17. データ定義言語(DDL)の概要 (1/4) - HRzine

  18. データ型 - オラクル・Oracleをマスターするための基本と仕組み

  19. 8.4.1.2 表の列の属性について

  20. DESCRIBE

  21. 「Oracle」DESCRIBE(DESC)コマンドでテーブルの列定義を確認する | 最新IT技術情報_arkgame.com

  22. Table of Contents

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?