• 検索結果がありません。

Oracle8i SQLリファレンス Vol.1, リリース8.1

N/A
N/A
Protected

Academic year: 2021

シェア "Oracle8i SQLリファレンス Vol.1, リリース8.1"

Copied!
488
0
0

読み込み中.... (全文を見る)

全文

(1)

SQL

リファレンス Vol.1

リリース 8.1

2000年 11 月 部品番号 : J02326-01

(2)

原本名:SQL Reference, Volume 1, Release 3 (8.1.7) 原本部品番号:A86006-01

原本著者:Diana Lorentz

原本協力者:Dave Alpern、Vikas Arora、Lance Ashdown、Hermann Baer、Vladimir Barriere、 Lucy Burgess、Souripriya Das、Carolyn Gray、John Haydu、Thuvan Hoang、Wei Hu、Namit Jain、 Hakan Jakobsson、Bob Jenkins、Mark Johnson、Jonathan Klein、Susan Kotsovolos、

Vishu Krishnamurthy、Muralidhar Krishnaprasad、Paul Lane、Geoff Lee、Nina Lewis、

Bryn Llewellyn、Phil Locke、David McElhoes、Jack Melnick、Ari Mozes、Subramanian Muralidhar、 Ravi Murthy、Sujatha Muthulingam、Bruce Olsen、Alla S Pfauntsch、Tom Portfolio、Kevin Quinn、 Ananth Raghavan、Den Raphaely、John Russell、Anant Singh、Rajesh Sivaramasubramaniom、 Roger Snowden、Jags Srinivisan、Sankar Subramanian、Murali Thiyagarajah、Michael Tobie、 AhnTuan Tran、Randy Urbano、Andy Witkowski、Daniel Wong、Aravind Yalamanchi、Qin Yu、 Fred Zemke、Mohamed Ziauddin

Copyright © 1996, 2000, Oracle Corporation. All rights reserved. Printed in Japan. 制限付権利の説明 プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契 約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律に より保護されています。 当プログラムのリバース・エンジニアリング等は禁止されております。 このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無 謬性を保証しません。 * オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル) を指します。 危険な用途への使用について オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーション を用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用すること についての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用により クレームや損害が発生いたしましても、日本オラクル株式会社と開発元であるOracle Corporation(米 国オラクル)およびその関連会社は一切責任を負いかねます。 当プログラムを米国国防総省の米国政府 機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Notice が適用され ます。

Restricted Rights Notice

Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識 別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。

(3)

はじめに

はじめに

はじめに

はじめに

... ix

1

概要

概要

概要

概要

SQL の歴史の歴史の歴史 ... 1-2の歴史 SQL 規格規格規格 ... 1-2規格 SQL の特長 ... 1-3 すべてのリレーショナル・データベースに共通の言語 ... 1-4 埋込み 埋込み埋込み 埋込みSQL ... 1-4 字句規則 字句規則字句規則 字句規則 ... 1-5 Tools のサポートのサポートのサポートのサポート ... 1-5

2

Oracle SQL

の基本要素

の基本要素

の基本要素

の基本要素

データ型 データ型データ型 データ型 ... 2-2 文字データ型 ... 2-6 NUMBER データ型 ... 2-9 LONG データ型 ... 2-11 DATE データ型 ... 2-13 RAW データ型と LONG RAW データ型 ... 2-15 ラージ・オブジェクト(LOB)データ型 ... 2-15 ROWID データ型 ... 2-18 UROWID データ型 ... 2-20 ANSI、DB2、SQL/DS のデータ型 ... 2-20 ユーザー定義型のカテゴリ ... 2-23

(4)

Text(テキスト) ... 2-32 Integer(整数) ... 2-33 Number(数) ... 2-33 Interval(インターバル) ... 2-34 書式モデル 書式モデル書式モデル 書式モデル ... 2-39 数値書式モデル ... 2-41 日付書式モデル ... 2-46 書式モデルの修飾子 ... 2-52 文字列から日付への変換に関する規則 ... 2-55 NULL ... 2-55 SQL 関数での NULL ... 2-56 比較演算子でのNULL ... 2-56 条件でのNULL ... 2-56 疑似列 疑似列疑似列 疑似列 ... 2-57 CURRVAL と NEXTVAL ... 2-57 LEVEL ... 2-60 ROWID ... 2-61 ROWNUM ... 2-62 コメント コメントコメント コメント ... 2-64 SQL 文中のコメント ... 2-64 スキーマ・オブジェクトに関するコメント ... 2-65 ヒント ... 2-65 データベース・オブジェクト データベース・オブジェクトデータベース・オブジェクト データベース・オブジェクト ... 2-77 スキーマ・オブジェクト ... 2-77 非スキーマ・オブジェクト ... 2-78 スキーマ・オブジェクトの部分 ... 2-79 スキーマ・オブジェクト名および修飾子 スキーマ・オブジェクト名および修飾子スキーマ・オブジェクト名および修飾子 スキーマ・オブジェクト名および修飾子 ... 2-81 スキーマ・オブジェクトのネーミング規則 ... 2-81 スキーマ・オブジェクトのネーミング例 ... 2-85 スキーマ・オブジェクト名のネーミング計画 ... 2-85 スキーマ・オブジェクトの構文および スキーマ・オブジェクトの構文およびスキーマ・オブジェクトの構文および スキーマ・オブジェクトの構文およびSQL 文の構成要素文の構成要素文の構成要素文の構成要素 ... 2-86 Oracle によるスキーマ・オブジェクト参照の変換方法 ... 2-87 他のスキーマ内のオブジェクトの参照 ... 2-88 リモート・データベース内のオブジェクトの参照 ... 2-88

(5)

3

演算子

演算子

演算子

演算子

単項演算子およびバイナリ演算子 単項演算子およびバイナリ演算子単項演算子およびバイナリ演算子 単項演算子およびバイナリ演算子 ... 3-2 優先順位 優先順位優先順位 優先順位 ... 3-2 算術演算子 算術演算子算術演算子 算術演算子 ... 3-3 連結演算子 連結演算子連結演算子 連結演算子 ... 3-4 比較演算子 比較演算子比較演算子 比較演算子 ... 3-5 NOT IN 演算子 ... 3-7 LIKE 演算子 ... 3-8 論理演算子 論理演算子論理演算子 論理演算子: NOT、、、、AND、、、、OR ... 3-11 NOT 演算子 ... 3-12 AND 演算子 ... 3-12 OR 演算子 ... 3-12 集合演算子 集合演算子集合演算子

集合演算子: UNION [ALL]、、、、INTERSECT、、、、MINUS ... 3-13 その他の組込み演算子 その他の組込み演算子その他の組込み演算子 その他の組込み演算子 ... 3-16 ユーザー定義演算子 ユーザー定義演算子ユーザー定義演算子 ユーザー定義演算子 ... 3-16

4

関数

関数

関数

関数

SQL 関数関数関数 ... 4-2関数 単一行関数 ... 4-4 集計関数 ... 4-6 分析関数 ... 4-8 オブジェクト参照関数 ... 4-14 SQL 関数のリスト(アルファベット順)関数のリスト(アルファベット順)関数のリスト(アルファベット順)関数のリスト(アルファベット順) ... 4-14 ABS ... 4-14 ACOS ... 4-15 ADD_MONTHS ... 4-15 ASCII ... 4-16 ASIN ... 4-16 ATAN ... 4-17 ATAN2 ... 4-17 AVG ... 4-18 BFILENAME ... 4-19 BITAND ... 4-20

(6)

... 4-23 CONVERT ... 4-24 CORR ... 4-25 COS ... 4-26 COSH ... 4-27 COUNT ... 4-27 COVAR_POP ... 4-29 COVAR_SAMP ... 4-31 CUME_DIST ... 4-33 DENSE_RANK ... 4-34 DEREF ... 4-35 DUMP ... 4-36 EMPTY_[B | C]LOB ... 4-37 EXP ... 4-38 FIRST_VALUE ... 4-38 FLOOR ... 4-40 GREATEST ... 4-41 GROUPING ... 4-41 HEXTORAW ... 4-43 INITCAP ... 4-43 INSTR ... 4-44 INSTRB ... 4-45 LAG ... 4-45 LAST_DAY ... 4-46 LAST_VALUE ... 4-47 LEAD ... 4-49 LEAST ... 4-51 LENGTH ... 4-51 LENGTHB ... 4-52 LN ... 4-52 LOG ... 4-53 LOWER ... 4-53 LPAD ... 4-54 LTRIM ... 4-54 MAKE_REF ... 4-55 MAX ... 4-56

(7)

... 4-60 NEW_TIME ... 4-61 NEXT_DAY ... 4-62 NLS_CHARSET_DECL_LEN ... 4-62 NLS_CHARSET_ID ... 4-63 NLS_CHARSET_NAME ... 4-64 NLS_INITCAP ... 4-64 NLS_LOWER ... 4-65 NLSSORT ... 4-66 NLS_UPPER ... 4-67 NTILE ... 4-67 NUMTODSINTERVAL ... 4-69 NUMTOYMINTERVAL ... 4-70 NVL ... 4-71 NVL2 ... 4-72 PERCENT_RANK ... 4-73 POWER ... 4-74 RANK ... 4-74 RATIO_TO_REPORT ... 4-75 RAWTOHEX ... 4-76 REF ... 4-77 REFTOHEX ... 4-78 REGR_(線形リグレッション)関数(線形リグレッション)関数(線形リグレッション)関数(線形リグレッション)関数 ... 4-78 REPLACE ... 4-85 ROUND(数値関数)(数値関数)(数値関数)(数値関数) ... 4-86 ROUND(日付関数)(日付関数)(日付関数)(日付関数) ... 4-87 ROW_NUMBER ... 4-87 ROWIDTOCHAR ... 4-89 RPAD ... 4-89 RTRIM ... 4-90 SIGN ... 4-90 SIN ... 4-91 SINH ... 4-91 SOUNDEX ... 4-92 SQRT ... 4-93

(8)

... 4-98 SUBSTRB ... 4-99 SUM ... 4-99 SYS_CONTEXT ... 4-101 SYS_GUID ... 4-105 SYSDATE ... 4-106 TAN ... 4-107 TANH ... 4-107 TO_CHAR(日付変換)(日付変換)(日付変換)(日付変換) ... 4-108 TO_CHAR(数値変換)(数値変換)(数値変換)(数値変換) ... 4-109 TO_DATE ... 4-110 TO_LOB ... 4-111 TO_MULTI_BYTE ... 4-112 TO_NUMBER ... 4-112 TO_SINGLE_BYTE ... 4-113 TRANSLATE ... 4-113 TRANSLATE ... USING ... 4-114 TRIM ... 4-116 TRUNC(数値関数(数値関数(数値関数(数値関数) ... 4-117 TRUNC(日付関数)(日付関数)(日付関数)(日付関数) ... 4-117 UID ... 4-118 UPPER ... 4-118 USER ... 4-119 USERENV ... 4-120 VALUE ... 4-121 VAR_POP ... 4-122 VAR_SAMP ... 4-123 VARIANCE ... 4-125 VSIZE ... 4-126 ROUND およびおよびおよびおよびTRUNC 日付関数日付関数日付関数日付関数 ... 4-127 ユーザー定義ファンクション ユーザー定義ファンクションユーザー定義ファンクション ユーザー定義ファンクション ... 4-128 前提条件 ... 4-128 名前の優先順位 ... 4-129

(9)

単純式 ... 5-4 複合式 ... 5-5 変数式 ... 5-5 組込み関数式 ... 5-6 関数式 ... 5-6 型コンストラクタ式 ... 5-7 CAST 式 ... 5-9 CURSOR 式 ... 5-11 オブジェクト・アクセス式 ... 5-12 DECODE 式 ... 5-13 CASE 式 ... 5-14 式のリスト ... 5-15 条件 条件条件 条件 ... 5-15 単純比較条件 ... 5-17 グループ比較条件 ... 5-18 メンバーシップ条件 ... 5-18 範囲条件 ... 5-19 NULL 条件 ... 5-19 EXISTS 条件 ... 5-19 LIKE 条件 ... 5-19 複合条件 ... 5-20 問合せおよび副問合せ 問合せおよび副問合せ問合せおよび副問合せ 問合せおよび副問合せ ... 5-20 単純な問合せの作成 ... 5-20 階層問合せ ... 5-21 問合せ結果のソート ... 5-22 結合 ... 5-23 副問合せの使用 ... 5-25 ネストした副問合せのネスト解除 ... 5-27 DUAL 表からの選択 ... 5-27 分散問合せ ... 5-28

(10)

データベース・タスクに使用する データベース・タスクに使用するデータベース・タスクに使用する

データベース・タスクに使用するSQL 文の検索文の検索文の検索文の検索 ... 6-5

7

SQL

文 : ALTER CLUSTER ∼

∼ ALTER SYSTEM

ALTER CLUSTER ... 7-3 ALTER DATABASE ... 7-7 ALTER DIMENSION ... 7-33 ALTER FUNCTION ... 7-36 ALTER INDEX ... 7-38 ALTER JAVA ... 7-56 ALTER MATERIALIZED VIEW ... 7-59 ALTER MATERIALIZED VIEW LOG ... 7-73 ALTER OUTLINE ... 7-79 ALTER PACKAGE ... 7-81 ALTER PROCEDURE ... 7-84 ALTER PROFILE ... 7-87 ALTER RESOURCE COST ... 7-91 ALTER ROLE ... 7-94 ALTER ROLLBACK SEGMENT ... 7-96 ALTER SEQUENCE ... 7-99 ALTER SESSION ... 7-101 ALTER SYSTEM ... 7-123

索引

索引

索引

索引

(11)

このマニュアルでは、Oracle のデータベース内の情報を管理するために使用される構造化問 合せ言語(Structured Query Language: SQL)について説明します。Oracle SQL は、米国規 格協会(American National Standards Institute: ANSI)と国際標準化機構(ISO)の SQL92 規格に基本レベルで準拠していますが、さらに多くの内容を盛り込んでいます。 参照 参照参照 参照 : ■ SQL に対する Oracle プロシージャ型言語拡張機能である PL/SQL の詳 細は、『Oracle8i PL/SQL ユーザーズ・ガイドおよびリファレンス』 を参照してください。

Oracle 埋込み SQL の詳細は、『Oracle8i Pro*C/C++ プリコンパイラ・

プログラマーズ・ガイド』、『Programmer’s Guide to SQL*Module for Ada』および『Oracle8i Pro*COBOL プリコンパイラ・プログラマー ズ・ガイド』を参照してください。

(12)

および機能に関する情報が含まれています。Oracle8i および Oracle8i Enterprise Edition の 基本的な機能は同じです。ただし、Enterprise Edition のみで使用できる拡張機能がいくつか あります。また、オプションとして使用できる機能もあります。

対象読者

対象読者

対象読者

対象読者

このマニュアルは、すべてのOracle SQL ユーザーを対象としています。

Oracle8i

の新機能

の新機能

の新機能

の新機能

このマニュアルでは、Oracle8i の次の新機能を記載しています。 リリース リリースリリース リリース 8.1.7 このリリースでは、次のSQL 関数が追加されています。 ■ BITAND(4-20 ページ) ■ NVL2(4-72 ページ) リリース リリースリリース リリース 8.1.6 このリリースでは、次のSQL 関数が追加されています。 ■ CORR(4-25 ページ) ■ COVAR_POP(4-29 ページ) ■ COVAR_SAMP(4-31 ページ) ■ CUME_DIST(4-33 ページ) ■ DENSE_RANK(4-34 ページ) ■ FIRST_VALUE(4-38 ページ) ■ LAG(4-45 ページ) ■ LAST_VALUE(4-47 ページ) ■ LEAD(4-49 ページ) ■ NTILE(4-67 ページ) ■ NUMTOYMINTERVAL(4-70 ページ)

(13)

■ RATIO_TO_REPORT(4-75 ページ) ■ REGR_(線形リグレッション)関数(4-78 ページ) ■ STDDEV_POP(4-95 ページ) ■ STDDEV_SAMP(4-96 ページ) ■ VAR_POP(4-122 ページ) ■ VAR_SAMP(4-123 ページ) さらに、次の機能が拡張されています。 ■ 集計関数は機能性が拡張されました。4-6 ページの「集計関数」を参照してください。 ■ LOB 記憶パラメータを指定するとき、読取り専用で LOB キャッシュを指定できます。 10-7 ページの「CREATE TABLE」を参照してください。 ■ 式に関する項に、新しい式が追加されました。5-14 ページの「CASE 式」を参照してく ださい。 ■ 副問合せのネスト解除が可能になりました。5-27 ページの「ネストした副問合せのネス ト解除」を参照してください。 リリース リリースリリース リリース 8.1.5 リリース8.1.5 では、次の SQL 文が追加されています。 ■ ALTER DIMENSION(7-33 ページ) ■ ALTER JAVA(7-56 ページ) ■ ALTER OUTLINE(7-79 ページ) ■ ASSOCIATE STATISTICS(8-108 ページ) ■ CALL(8-126 ページ) ■ CREATE CONTEXT(9-13 ページ) ■ CREATE DIMENSION(9-34 ページ) ■ CREATE INDEXTYPE(9-75 ページ) ■ CREATE JAVA(9-78 ページ) ■ CREATE OPERATOR(9-112 ページ) ■ CREATE OUTLINE(9-116 ページ)

(14)

■ DROP DIMENSION(10-128 ページ) ■ DROP INDEXTYPE(10-135 ページ) ■ DROP JAVA(10-137 ページ) ■ DROP OPERATOR(10-144 ページ) ■ DROP OUTLINE(10-146 ページ)

構成

構成

構成

構成

このマニュアルの構成は次のとおりです。 第 第第 第 1 章「概要」章「概要」章「概要」章「概要」 SQL についての定義と、その歴史およびリレーショナル・データベースへの SQL を使用し たアクセスのメリットについて説明します。 第 第第 第 2 章「章「章「章「Oracle SQL の基本要素」の基本要素」の基本要素」の基本要素」 Oracle データベースと Oracle SQL の基本的な構成ブロックについて説明します。 第 第第 第 3 章「演算子」章「演算子」章「演算子」章「演算子」 SQL の演算子を、式や条件の中で組み合せて使用する方法について説明します。 第 第第 第 4 章「関数」章「関数」章「関数」章「関数」 SQL の関数を、式や条件の中で組み合せて使用する方法について説明します。 第 第第 第 5 章「式、条件および問合せ」章「式、条件および問合せ」章「式、条件および問合せ」章「式、条件および問合せ」 SQL 式、条件および問合せを使用してデータベースから情報を取り出す様々な方法について 説明します。 第 第第 第 6 章「章「章「章「SQL 文について」文について」文について」文について」 SQL 文の様々な型を示し、データベース・タスクに適切な SQL 文を見つけるための表を示 します。

(15)

第 第第

第 10 章「章「章「SQL 文章「 文文 : CREATE SYNONYM ∼文 ∼∼ DROP ROLLBACK SEGMENT」∼ 」」」 第

第第

第 11 章「章「章「SQL 文章「 文文 : DROP SEQUENCE ∼文 ∼∼ UPDATE」∼ 」」」 すべてのSQL 文をアルファベット順に説明します。 付録 付録付録 付録 A「構文図」「構文図」「構文図」「構文図」 このマニュアルでの構文図の読み方を説明します。 付録 付録付録 付録 B「「Oracle と標準「 と標準と標準 SQL」と標準 」」」

ANSI および ISO 規格に対する Oracle の準拠性について説明します。

付録 付録付録 付録 C「「Oracle の予約語」「 の予約語」の予約語」の予約語」 Oracle 内部で使用する予約語を示します。 リリース リリースリリース リリース 8.1.7 のマニュアルでの構成変更のマニュアルでの構成変更のマニュアルでの構成変更のマニュアルでの構成変更 すべてのSQL 文を含む章(以前の第 7 章)は、5 つの章に分割されました。 リリース8.1.7 では、次の SQL 文が変更されました。

SQL 文 GRANT object_privileges および GRANT system_privileges_and_roles

は、GRANT 文に結合されました。11-31 ページの「GRANT」を参照してください。

SQL 文 REVOKE schema_object_privileges および REVOKE

system_privileges_and_rolesは、REVOKE 文に結合されました。11-73 ページの 「REVOKE」を参照してください。

SQL 文 AUDIT sql_statements および AUDIT schema_objects は、AUDIT 文に

結合されました。8-112 ページの「AUDIT」を参照してください。

SQL 文 NOAUDIT sql_statements および NOAUDIT schema_objects は、NOAUDIT 文に結合されました。11-66 ページの「NOAUDIT」を参照してください。

(16)

■ 「書式モデル」の項は、第2 章(2-39 ページ)に移動しました。 ■ 第3 章は、次の章に分割されました。 ■ 第3 章「演算子」 ■ 第4 章「関数」 ■ 第5 章「式、条件および問合せ」 5-20 ページの「問合せおよび副問合せ」では、11-88 ページの「SELECT および副 問合せ」の構文および比較情報の背景について説明します。 ■ 新規の第6 章「SQL 文について」は、特定のタスクに対する適切なSQL 文を見つけやす くするために追加されました。

「archive_log_clause」は個別の項ではなく、7-123 ページの「ALTER SYSTEM」に 含められています。

「deallocate_unused_clause」は個別の項ではなく、8-2 ページの「ALTER TABLE」、7-3 ページの「ALTER CLUSTER」および7-38 ページの「ALTER INDEX」 に含められています。

「disable_clause」は個別の項ではなく、10-7 ページの「CREATE TABLE」および

8-2 ページの「ALTER TABLE」に含められています。

「drop_clause」は個別の項ではなく、「ALTER TABLE 文」の

「drop_constraint_clause」になりました(ALTER TABLE 文の新しい

drop_column_clauseと区別するため)。8-2 ページの「ALTER TABLE」を参照して

ください。

「enable_clause」は個別の項ではなく、10-7 ページの「CREATE TABLE」および8-2

ページの「ALTER TABLE」に含められています。

「parallel_clause」は個別の項ではなく、関連のある様々な文に含まれています。「recover_clause」は個別の項ではなく、「ALTER DATABASE 文」に含まれていま す。これは、recover_clause のリカバリ機能が向上し、ALTER DATABASE 文を介 して常に実行されるためです。7-7 ページの「ALTER DATABASE」を参照してくださ い。

(17)

7-59 ページの「ALTER MATERIALIZED VIEW」、10-140 ページの「DROP

MATERIALIZED VIEW」、9-104 ページの「CREATE MATERIALIZED VIEW LOG」、 7-73 ページの「ALTER MATERIALIZED VIEW LOG」、および10-142 ページの「DROP MATERIALIZED VIEW LOG」を参照してください。

■ 「副問合せ副問合せ副問合せ副問合せ」の項は、「SELECT」の項と結合されました。11-88 ページの「SELECT およ び副問合せ」を参照してください。

このマニュアルで使用する表記規則

このマニュアルで使用する表記規則

このマニュアルで使用する表記規則

このマニュアルで使用する表記規則

この項では、このマニュアルで使用する表記上の規則について説明します。 ■ 本文 ■ 構文図および表記法 ■ コード例 ■ サンプル・データ

本文

本文

本文

本文

このマニュアルの本文は、次の規則に従って記述されています。

構文図および表記法

構文図および表記法

構文図および表記法

構文図および表記法

構文図 構文図構文図 構文図 このマニュアルでは、第7 章∼第11 章におけるSQL 文の説明や、第2 章「Oracle SQL の基本要素」、第3 章「演算子」、第4 章「関数」および第5 章「式、条件および問合 せ」におけるその他のSQL 言語の要素の説明に、構文図を使用しています。これらの構文 図では、次のとおり、線と矢印を使用して構文構造を示しています。 大文字 アルファベットの大文字は、SQL キーワード、ファイル 名および初期化パラメータを示します。 イタリック イタリック体の文字は、SQL 文のパラメータを示します。 太字 太字太字 太字 太字は、重要な意味を持つ用語を示します。

(18)

このような構文図に慣れていない場合、付録A「構文図」を参照して、読み方を理解してく ださい。そこでは、構文図の構成要素と、SQL 文の書き方の例を説明しています。構文図 は、次の項目で構成されます。 キーワード キーワードキーワード キーワード キーワードは、SQL 言語の中では特別な意味を持っています。このマニュアル の構文図では、キーワードは大文字で記述されています。キーワードは、構文図に表記され ているとおりに使用する必要がありますが、SQL 文内では大文字でも小文字でも使用できま す。たとえば、CREATE TABLE 文では、CREATE TABLE 構文図に表記されているとおり、 CREATEキーワードを使用して文を開始する必要があります。 パラメータ パラメータパラメータ パラメータ パラメータは、構文図の中でプレースホルダの役割を果たします。パラメータ は、小文字で記述されます。パラメータは、通常はデータベース・オブジェクト名、Oracle データ型名または式です。構文図にパラメータがある場合、実際のSQL 文では、そのパラ メータを適切な型のオブジェクトまたは式に置き換えます。たとえば、CREATE TABLE 文を 記述する場合、構文図の table パラメータのかわりに、作成する表の名前(たとえば emp) を使用します。パラメータ名は、本文中ではイタリック体で記述されています。

コード例

コード例

コード例

コード例

このマニュアルでは、多数のSQL 文の例を示しています。これらの例は、SQL 文の要素の 使用方法を示しています。CREATE TABLE 文の例を次に示します。

CREATE TABLE accounts ( accno NUMBER, owner VARCHAR2(10), balance NUMBER(7,2) ); 例は、本文と異なるフォントで表記されています。 次の規則に従って、例では大文字と小文字を区別して使用しています。 ■ CREATEや NUMBER などのキーワードは、大文字で表記しています。 ■ accountsや accno などのデータベースのオブジェクトやその一部の名前は、小文字で 表記しています。ただし、本文では大文字で表記しています。 ■ PL/SQL ブロックは、イタリック体で表記しています。このブロックのキーワードとパ ラメータが、SQL のキーワードとパラメータでない場合、このマニュアルには記載され ていません。詳細は、『Oracle8i PL/SQL ユーザーズ・ガイドおよびリファレンス』を 参照してください。 COMMIT

WORK FORCE ’ text ’

(19)

SQL では、(引用符で囲まれた識別子を除いて)大文字と小文字は区別されないため、実際

のSQL 文を作成するときに、これらの規則に従う必要はありません。ただし、このように

区別しておくことで文が読みやすくなります。

Oracle Tools によっては、SQL 文を特殊文字で終了させる必要がある場合があります。たと えば、このマニュアルで示すコード例はSQL*Plus で記述されているため、セミコロン(;) で終了しています。これらの例文をOracle に対して発行する場合は、ご使用の Oracle Tool ごとに決められた特殊文字を使用して文を終了させてください。

サンプル・データ

サンプル・データ

サンプル・データ

サンプル・データ

このマニュアルに記載している例の多くでは、サンプル表に対して操作を行います。これら の表の一部は、配布メディアに収録されているSQL スクリプトで定義されています。多く のオペレーティング・システムでは、このスクリプトの名前が UTLSAMPL.SQL になってい ますが、正確な名前と位置はオペレーティング・システムによって異なります。このスクリ プトでは、サンプル・ユーザーを作成し、ユーザー scott(パスワード: tiger)のスキー マに次のサンプル表を作成します。

CREATE TABLE dept

(deptno NUMBER(2) CONSTRAINT pk_dept PRIMARY KEY, dname VARCHAR2(14),

loc VARCHAR2(13) ); CREATE TABLE emp

(empno NUMBER(4) CONSTRAINT pk_emp PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2),

deptno NUMBER(2) CONSTRAINT fk_deptno REFERENCES dept ); CREATE TABLE bonus

(ename VARCHAR2(10), job VARCHAR2(9), sal NUMBER, comm NUMBER ); CREATE TABLE salgrade (grade NUMBER, losal NUMBER, hisal NUMBER );

(20)

DEPTNO DNAME LOC --- --- --- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SELECT * FROM emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO --- --- --- --- --- --- --- ---

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 19-APR-87 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 30

7876 ADAMS CLERK 7788 23-MAY-87 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

SELECT * FROM salgrade; GRADE LOSAL HISAL --- --- --- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 bonus表には、データが含まれません。 スクリプトのすべての操作を実行するには、ユーザー SYSTEM としてOracle にログインし ているときにスクリプトを実行してください。

(21)

1

概要

概要

概要

概要

構造化問合せ言語(SQL)は、Oracle データベース内のデータにアクセスするために、すべ てのプログラムおよびユーザーが使用する必要がある一連の文です。アプリケーション・プ ログラムやOracle Tools を使用すると、SQL を直接使用しなくてもデータベースにアクセス できることがあります。ただし、アプリケーションがユーザーの要求を実行するときには、 必ずSQL を使用します。この章では、多くのリレーショナル・データベース・システムに 採用されているSQL の背景について説明します。 この章では、次の内容を説明します。 ■ SQL の歴史 ■ SQL 規格 ■ 埋込みSQL ■ 字句規則 ■ Tools のサポート

(22)

SQL

の歴史

の歴史

の歴史

の歴史

1970 年 6 月に ACM(Association of Computer Machinery)が刊行した「Communications of the ACM」誌で、E. F. Codd 博士の論文「大型共用データ・バンク用のデータのリレー ショナル・モデル」が発表されました。Codd 博士のモデルは、現在ではリレーショナル・ データベース管理システム(RDBMS)の完成したモデルとして認められています。構造化 英語問合せ言語(SEQUEL)は、IBM 社が Codd 博士のモデルを使用するために開発したも のです。このSEQUEL が後の SQL です。1979 年、Relational Software, Inc.(現在のオラク ル社)は、商業的に利用可能な最初のSQL の処理系を導入しました。今日、SQL は標準の RDBMS 言語として認められています。

SQL

規格

規格

規格

規格

オラクル社は、業界標準に準拠するよう努力し、SQL 標準化委員会にも積極的に参加してい ます。業界で認知されている委員会には、米国規格協会(ANSI)、および国際電気標準会議 (IEC)が電気・電子部門を担当している国際標準化機構(ISO)があります。ANSI と ISO/ IEC はともに、SQL をリレーショナル・データベースの標準言語として認めています。新し いSQL 規格がこの両機関から同時に発表された場合、その規格の名前は、各機関の規則に 従って付けられますが、技術的な詳細は同じです。 1999 年 6 月に採用された最新の SQL 規格を SQL-99 といいます。新規格の正式名称は、次 のとおりです。

■ ANSI X3.135-1999、『Database Language SQL』、Part 1「Framework」、

Part 2「Foundation」、Part 5「Binding」

■ ISO/IEC 9075:1999、『Database Language SQL』、Part 1「Framework」、

Part 2「Foundation」、Part 5「Binding」

この規格の以前のバージョン(一般にはSQL-92 として知られています)は、SQL-99 に置き 換えられました。SQL-99 は、SQL-92 の上位互換の拡張です(SQL-99 の Part 2

「Foundation」の Annex E にある少数の非互換を除きます)。

SQL-92 では、規格への準拠に、基本、変換、中間および完全の 4 つの準拠レベルを定義し ていました。SQL 規格に準拠する処理系は、基本レベル以上の SQL に準拠している必要が あります。Oracle8i は、連邦情報処理標準(FIPS)の PUB 127-2 に記載されているとおり、

基本レベルのSQL に完全に準拠していますが、変換レベル、中間レベルまたは完全レベル

(23)

SQL-99 に対する最低限の準拠レベルは、Core として知られています。Core SQL-99 は、 SQL-92 基本レベル仕様のスーパーセットです。Oracle8i も、SQL-99 Core 仕様と幅広い互換 性があります。ただし、いくつかのSQL-99 Core 機能は、現在、Oracle8i では実装されてな いか、Oracle8i 実装とは異なります。オラクル社は、将来のリリースで SQL-99 Core 機能を 完全にサポートする予定です。また、既存のアプリケーションへの上位互換を提供します。

SQL

の特長

の特長

の特長

の特長

SQL は、アプリケーション・プログラマ、データベース管理者、管理職、エンド・ユーザー など、あらゆる分野のユーザーに利益をもたらします。技術的な言い方をすると、SQL は データ副言語です。SQL の目的は、Oracle のようなリレーショナル・データベースとのイン タフェースを提供することであり、すべてのSQL 文はデータベースに対する命令です。こ の点において、SQL は、C や BASIC のような汎用プログラミング言語と異なります。SQL には、次のような特長があります。 ■ 個々の単位としてではなく、グループとして一連のデータを処理します。 ■ データへの自動的なナビゲーション・アクセス(経路設定)を実行します。 ■ SQL で使用する文は、それぞれが複雑、強力で、スタンドアロン型の文です。これま で、SQL にはフロー制御文は含まれていませんでしたが、SQL, ISO/IEC 9075-5 : 1996 の最近認められたオプション部分にはフロー制御文が含まれています。フロー制御文 は、永続保存モジュール(PSM)としてよく知られており、SQL の拡張機能である Oracle の PL/SQL は、PSM に似ています。 SQL では、データを論理的なレベルで処理できます。処理系について考えることは、データ の細部を操作する場合のみで済みます。たとえば、表から一連の行を検索するには、行を フィルタ処理するための条件を定義します。この条件を満たすすべての行が1 つの手順で検 索され、ユーザー、別のSQL 文またはアプリケーションに 1 つの単位として渡されます。 行単位で処理する必要がなく、行の物理的な格納方法や検索方法を気にする必要もありませ ん。SQL 文を実行すると、Oracle に備わっている問合せオプティマイザが働きます。この機 能によって、指定したデータに最も速くアクセスする方法が決定されます。Oracle には、オ プティマイザの性能を向上させる方法も用意されています。 SQL 文を使用して、次の処理を行うことができます。 ■ データの問合せ ■ 表の中の行の挿入、更新、削除 ■ オブジェクトの作成、置換、変更、削除 参照 参照参照 参照 : Oracle および SQL の詳細は、付録B「Oracle と標準 SQL」を参照 してください。

(24)

■ データベースとデータベース・オブジェクトへのアクセス制御 ■ データベースの一貫性と整合性の保証 SQL では、前述のすべてのタスクを 1 つの一貫性のある言語に統一しました。

すべてのリレーショナル・データベースに共通の言語

すべてのリレーショナル・データベースに共通の言語

すべてのリレーショナル・データベースに共通の言語

すべてのリレーショナル・データベースに共通の言語

すべての主なリレーショナル・データベース管理システムは、SQL をサポートしているた め、SQL で得た技術的な知識を他のデータベースでも生かすことができます。さらに、SQL で記述されたプログラムは移植性に優れているため、わずかな変更のみで他のデータベース に移行できます。

埋込み

埋込み

埋込み

埋込み SQL

埋込みSQL は、プロシージャ型プログラミング言語に埋め込んで使用する標準の SQL 文で す。埋込みSQL 文は、Oracle プリコンパイラ関連のマニュアルに記載されています。 埋込みSQL は、次のコマンドの集まりです。 ■ 対話形式のTools を使用して、SQL で使用できるすべての SQL コマンド(SELECT、 INSERTなど)。 ■ プロシージャ型プログラミング言語に標準SQL コマンドを統合する動的 SQL 実行コマ ンド(PREPARE、OPEN など)。 埋込みSQL には、標準 SQL コマンドの拡張機能も含まれています。埋込み SQL は、Oracle プリコンパイラによってサポートされます。Oracle プリコンパイラによって、埋込み SQL 文が解析され、プロシージャ型言語のコンパイラが処理できる文に変換されます。 次の各Oracle プリコンパイラによって、埋込み SQL のプログラムは異なるプロシージャ型 言語に変換されます。 ■ Pro*C/C++ プリコンパイラ ■ Pro*COBOL プリコンパイラ ■ SQL*Module for ADA

参照 参照参照

参照 : Oracle プリコンパイラおよび埋込み SQL 文の定義については、 『Programmer’s Guide to SQL*Module for Ada』、『Oracle8i Pro*C/C++

プリコンパイラ・プログラマーズ・ガイド』および『Oracle8i

Pro*COBOL プリコンパイラ・プログラマーズ・ガイド』を参照してくだ さい。

(25)

字句規則

字句規則

字句規則

字句規則

SQL 文の記述に関する次の字句規則は、Oracle の SQL 実装に対してのみ適用されますが、 他のすべてのSQL 実装にも一般的に適用されます。 SQL 文では、文の定義の中で空白が入る可能性がある任意の位置に、1 つ以上のタブ、改行 文字、空白、コメントを記述できます。したがって、Oracle は、次の 2 つの文を同一と解釈 します。

SELECT ENAME,SAL*12,MONTHS_BETWEEN(HIREDATE,SYSDATE) FROM EMP;

SELECT ENAME, SAL * 12,

MONTHS_BETWEEN( HIREDATE, SYSDATE ) FROM EMP;

予約語、キーワード、識別子およびパラメータは、大文字と小文字を区別せずに記述できま す。テキスト・リテラルと引用符で囲んだ名前では、大文字と小文字は区別されます。

Tools

のサポート

のサポート

のサポート

のサポート

ほぼすべてのOracle Tools において、Oracle SQL のすべての機能をサポートしています。 このマニュアルでは、SQL のすべての機能について説明しています。ご使用の Oracle Tool でサポートしていない機能がある場合は、『Oracle8i SQL*Plus ユーザーズ・ガイドおよびリ

ファレンス』など、そのTool について記載しているマニュアルに、その制限が示されてい

るため参照してください。

Trusted Oracle を使用している場合は、その環境に固有の SQL 文について、Trusted Oracle 関連のドキュメントを参照してください。

参照 参照参照

参照 : 構文の説明は、2-32 ページの「Text(テキスト)」を参照してくだ さい。

(26)
(27)

2

Oracle SQL

の基本要素

の基本要素

の基本要素

の基本要素

この章では、Oracle SQL の基本要素に関する参照情報を説明します。これらの要素は、SQL 文の最も単純な構成ブロックです。したがって、第7 章∼第11 章で説明されている文を使 用する前に、この章で説明する次の概念を理解し、第3 章「演算子」、第4 章「関数」、第5 章「式、条件および問合せ」および第6 章「SQL 文について」をよく読んでおく必要があり ます。 この章では、次の内容を説明します。 ■ データ型 ■ リテラル ■ 書式モデル ■ NULL ■ 疑似列 ■ コメント ■ データベース・オブジェクト ■ スキーマ・オブジェクト名および修飾子 ■ スキーマ・オブジェクトの構文およびSQL 文の構成要素

(28)

データ型

データ型

データ型

データ型

Oracle が処理する値は、それぞれデータ型データ型データ型データ型を持ちます。値のデータ型は、固定されたプロパ ティの集合をその値に対応付けます。このプロパティに応じて、Oracle は、あるデータ型の 値を別のデータ型の値と区別して扱います。たとえば、NUMBER データ型の値は加算できま すが、RAW データ型の値は加算できません。 表やクラスタを作成する場合、各列にデータ型を指定する必要があります。プロシージャや ストアド・ファンクションを作成する場合は、その各引数にデータ型を指定する必要があり ます。データ型によって、各列が含むことができる値のドメイン、または各引数が持つこと ができる値のドメインが決まります。たとえば、DATE 列は、2 月 29 日(うるう年を除く)、 2 または 'SHOE' という値を受け入れることはできません。列に入れられる各値は、列の データ型を受け継ぎます。たとえば、DATE 列に'01-JAN-98' を挿入すると、Oracle はそれが 有効な日付に変換されることを確認してから、文字列'01-JAN-98' を DATE 値として扱いま す。 Oracle には、図2-1に示すとおり、多くの組込みデータ型およびいくつかのユーザー定義型 のカテゴリがあります。 図 図図 図 2-1 Oracle タイプ・カテゴリタイプ・カテゴリタイプ・カテゴリタイプ・カテゴリ 次に、Oracle 組込みデータ型の構文を示します。また、表2-1に、Oracle 組込みデータ型の 概要を示します。この項の残りの部分では、これらのデータ型および様々なユーザー定義型 について説明します。 組込みデータ型 ユーザー定義型のカテゴリ 構造型のカテゴリ オブジェクト型 コレクション型のカテゴリ VARRAYS ネストした表 REFS(オブジェクトの参照)

(29)

組込みデータ型 組込みデータ型組込みデータ型 組込みデータ型 注意 注意注意 注意 : Oracle プリコンパイラによって、埋込み SQL プログラムで他のデータ型が 区別されます。このようなデータ型は、外部データ型と呼ばれ、ホスト変数に対応 付けられています。組込み型およびユーザー定義データ型を外部データ型と混同し ないでください。Oracle による外部データ型と組込み型またはユーザー定義データ 型の間の変換など、外部データ型の詳細は、『Oracle8i Pro*COBOL プリコンパイ ラ・プログラマーズ・ガイド』、『Oracle8i Pro*C/C++ プリコンパイラ・プログラ マーズ・ガイド』および『Programmer’s Guide to SQL*Module for Ada』を参照し てください。 CHAR ( size ) VARCHAR2 ( size ) NCHAR ( size ) NVARCHAR2 ( size ) NUMBER ( precision , scale ) LONG LONG RAW RAW ( size ) DATE BLOB CLOB NCLOB BFILE ROWID UROWID ( size ) ANSI_supported_types

(30)

次に、ANSI がサポートしているデータ型について示します。また、表2-2に、ANSI がサ ポートしているデータ型をOracle 組込みデータ型にマップする方法を示します。

ANSIがサポートしているデータ型がサポートしているデータ型がサポートしているデータ型がサポートしているデータ型

CHARACTER ( size )

CHARACTER VARYING ( size ) CHAR VARYING ( size ) VARCHAR ( size )

NATIONAL CHARACTER ( size ) NATIONAL CHAR ( size )

NATIONAL CHARACTER VARYING ( size ) NATIONAL CHAR VARYING ( size ) NCHAR VARYING ( size )

NUMERIC ( precision , scale ) DECIMAL ( precision , scale ) DEC ( precision , scale ) INTEGER INT SMALLINT FLOAT ( size ) DOUBLE PRECISION REAL

(31)

表 表表 表 2-1 組込みデータ型の概要組込みデータ型の概要組込みデータ型の概要組込みデータ型の概要 コード コードコード コードa 組込みデータ型組込みデータ型組込みデータ型組込みデータ型 説明説明説明説明 1 VARCHAR2(size) 最大長が size バイトの可変長文字列。最大サイズは 4000、最小サイズは 1 です。VARCHAR2 では、size を指 定する必要があります。 1 NVARCHAR2(size) 最大長が size 文字またはバイト(選択された各国語キャ ラクタ・セットによる)の可変長文字列。最大サイズは、 各文字を保存するために必要なバイト数によって決定され ますが、最大4000 バイトです。NVARCHAR2 では、size を指定する必要があります。 2 NUMBER(p,s) 精度 p、位取り s を持つ数。精度 p には1 ∼ 38 の値を指 定できます。位取り s には-84 ∼ 127 の値を指定できま す。 8 LONG 最大2GB(231から1 を引いたバイト数)の可変長文字 データ。 12 DATE 紀元前4712 年 1 月 1 日∼紀元 9999 年 12 月 31 日までの日 付を指定します。 23 RAW(size) 長さが size バイトのバイナリ・データ。最大サイズは 2000 バイトです。RAW 値では、size を指定する必要があ ります。 24 LONG RAW 最大2GB の可変長バイナリ・データ。 69 ROWID 表の中の行のアドレスを一意に表す16 進文字列。主に、 ROWID疑似列によって戻される値のためのデータ型です。 208 UROWID [(size)] 索引構成表の行のアドレスを論理的に表す16 進文字列。 オプションの size は、UROWID 型の列のサイズです。最 大サイズおよびデフォルトは4000 バイトです。 96 CHAR(size) 長さ size バイトの固定長文字データ。最大サイズは 2000 バイトです。デフォルトおよび最小サイズは 1 です。 96 NCHAR(size) 長さが size 文字またはバイト(各国語キャラクタ・セッ トによる)の固定長文字データ。最大サイズは、各文字を 保存するために必要なバイト数によって決定されますが、 最大2000 バイトです。デフォルトと最小サイズは 1 文字 または1 バイトです(キャラクタ・セットによる)。 a データ型のコードは、Oracle が内部的に使用します。DUMP関数によって、列またはオブジェクト 属性のデータ型コードが戻されます。

(32)

文字データ型

文字データ型

文字データ型

文字データ型

文字データ型を使用すると、単語や自由形式のテキストなど、データベース・キャラクタ・ セットまたは各国語キャラクタ・セット内の文字(英数字)を格納できます。文字データ型 は、他のデータ型より制限が少ないため、プロパティも少なくなります。たとえば、文字 データ型の列は、すべての英数字の値を格納できますが、NUMBER 型の列が格納できるのは 数値のみです。 文字データは、7 ビット ASCII や EBCDIC など、データベース作成時に指定されたキャラク タ・セットの1 つに対応しているバイト値で文字列に格納されます。Oracle は、シングルバ イトのキャラクタ・セットとマルチバイトのキャラクタ・セットの両方をサポートします。 112 CLOB シングルバイト・キャラクタを含むキャラクタ・ラージ・ オブジェクト。固定幅および可変幅のキャラクタ・セット がサポートされます。両方のキャラクタ・セットで CHAR データベース・キャラクタ・セットを使用します。最大サ イズは4GB です。 112 NCLOB マルチバイト・キャラクタを含むキャラクタ・ラージ・オ ブジェクト。固定幅および可変幅のキャラクタ・セットが サポートされます。両方のキャラクタ・セットで NCHAR データベース・キャラクタ・セットを使用します。最大サ イズは4GB です。各国語キャラクタ・セットのデータを 保存します。 113 BLOB バイナリ・ラージ・オブジェクト。最大サイズは4GB で す。 114 BFILE データベース外に保存された大きなバイナリ・ファイルへ ロケータが格納されます。データベース・サーバー上に存 在する外部LOB へのバイト・ストリーム I/O アクセスを 可能にします。最大サイズは4GB です。 表 表表 表 2-1 組込みデータ型の概要(続き)組込みデータ型の概要(続き)組込みデータ型の概要(続き)組込みデータ型の概要(続き) コード コードコード コードa 組込みデータ型組込みデータ型組込みデータ型組込みデータ型 説明説明説明説明 a データ型のコードは、Oracle が内部的に使用します。DUMP関数によって、列またはオブジェクト 属性のデータ型コードが戻されます。

(33)

次のデータ型が、文字データに対して使用されます。 ■ CHAR データ型 ■ NCHAR データ型 ■ NVARCHAR2 データ型 ■ VARCHAR2 データ型

CHAR

データ型

データ型

データ型

データ型

CHARデータ型は、固定長の文字列を指定します。CHAR 列で表を作成する場合、列の長さを バイト単位で指定します。Oracle では、その列の中に格納される値がすべてこの長さを持つ ように調整します。列の長さより短い値が挿入されると、その値の後に空白を埋め込んで列 の長さに合わせます。列に対して長すぎる値を挿入しようとすると、Oracle はエラーを戻し ます。 CHAR列のデフォルトの長さは1 文字で、この許容最大値は 2000 文字です。長さが 0(ゼ ロ)の文字列を CHAR 列に挿入することはできますが、このCHAR 列が比較されるときに、 空白が1 文字埋め込まれます。

NCHAR

データ型

データ型

データ型

データ型

NCHARデータ型は、固定長の各国語キャラクタ・セット文字列を指定します。NCHAR 列で 表を作成する場合、列の長さを文字単位またはバイト単位のいずれかで定義します。使用す る各国語キャラクタ・セットは、データベースを作成するときに指定します。 データベースの各国語キャラクタ・セットが固定幅(たとえば、JA16EUCFIXED など)の 場合は、NCHAR の列サイズを文字列の長さの文字数として宣言します。各国語キャラクタ・ セットが可変幅(たとえば、JA16SJIS など)の場合は、列サイズをバイト単位で宣言しま す。次の文では、各国語キャラクタ・セットとしてJA16EUCFIXED を使用すると、長さが 30 文字までの文字列を保存できる 1 つの NCHAR 列が含まれた表が作成されます。

CREATE TABLE tab1 (col1 NCHAR(30)); 参照 参照参照 参照 : 比較方法については、2-25 ページの「データ型の比較規則」を参 照してください。 注意 注意注意 注意 : 異なるキャラクタ・セットを持つデータベース間で適切にデータ を変換するには、CHAR データが正しい書式の文字列で構成されているこ とを確認してください。キャラクタ・セット・サポートの詳細は、 『Oracle8i NLS ガイド』を参照してください。

(34)

列の最大長は、各国語キャラクタ・セットの定義によって決まります。NCHAR 文字データ型 の幅指定では、各国語キャラクタ・セットが固定幅の場合は文字数が参照され、各国語キャ ラクタ・セットが可変幅の場合はバイト数が参照されます。許容最大列サイズは2000 バイ トです。固定幅のマルチバイト・キャラクタ・セットの場合は、列の許容最大長が、2000 バ イト以下の文字数になります。 列の長さより短い値が挿入されると、その値の後に空白を埋め込んで列の長さに合わせま す。CHAR 値を NCHAR 列に挿入することや、NCHAR 値を CHAR 列に挿入することはできませ ん。

次の例では、tab1 の col1 列と各国語キャラクタ・セットの文字列NCHAR リテラルを比 較します。

SELECT * FROM tab1 WHERE col1 = N'NCHAR literal';

NVARCHAR2

データ型

データ型

データ型

データ型

NVARCHAR2データ型は、可変長の各国語キャラクタ・セット文字列を指定します。 NVARCHAR2列で表を作成する場合、保持できる最大の文字数またはバイト数を指定します。 Oracle では、列の最大長を超えない限り、各値を指定されたとおりに正確に列に保存しま す。 列の最大長は、各国語キャラクタ・セットの定義によって決まります。NVARCHAR2 文字 データ型の幅指定では、各国語キャラクタ・セットが固定幅の場合は文字数が参照され、各 国語キャラクタ・セットが可変幅の場合はバイト数が参照されます。許容最大列サイズは 4000 バイトです。固定幅のマルチバイト・キャラクタ・セットの場合は、列の許容最大長 が、4000 バイト以下の文字数になります。 次の文では、各国語キャラクタ・セットとしてJA16EUCFIXED を使用すると、長さが 2000 文字(各文字が2 バイトであるため、4000 バイトとして保存される)の 1 つの NVARCHAR2 列が含まれた表が作成されます。

CREATE TABLE tab1 (col1 NVARCHAR2(2000));

VARCHAR2

データ型

データ型

データ型

データ型

VARCHAR2データ型は、可変長の文字列を指定します。VARCHAR2 列を作成する場合、保持 できる最大のデータのバイト数を指定します。Oracle では、列の最大長を超えない限り、各 値を指定されたとおりに正確に列に保存します。最大長を超える値を挿入しようとすると、 Oracle はエラーを戻します。

(35)

VARCHAR2列には最大長を指定する必要があります。保存される文字列の実際の長さは0 (ゼロ)にできますが、最大長は1 バイト以上にする必要があります。VARCHAR2 データの

最大長は4000 バイトです。Oracle は、非空白埋め比較を使用して VARCHAR2 値を比較しま す。

VARCHAR

データ型

データ型

データ型

データ型

現在、VARCHAR データ型は、VARCHAR2 データ型と同じ意味で使用しています。VARCHAR より VARCHAR2 を使用することをお薦めします。将来、VARCHAR データ型が変更され、異 なる比較方法で比較される別の可変長文字列の型になる可能性があります。

NUMBER

データ型

データ型

データ型

データ型

NUMBERデータ型は、0(ゼロ)、および精度が 38 桁で、絶対値が 1.0 × 10-130∼9.9...9 × 10125(38 個の 9 の後に 0 が 88 個続く)の範囲にある、正と負の固定小数点数および浮動小 数点数を格納します。1.0 × 10126以上の値を持つ算術式を指定した場合、Oracle はエラー を戻します。 次の書式で固定小数点数を指定できます。 NUMBER(p,s) ここで、それぞれの意味は次のとおりです。 ■ pは、精度(precision)、つまり全体の桁数です。Oracle は、38 桁までの精度で数の移 植性を保証します。 ■ sは、位取り(scale)、つまり小数点の右側にある桁数です。位取りの有効範囲は-84 ∼ 127 です。 参照 参照参照 参照 : 比較方法については、2-25 ページの「データ型の比較規則」を参 照してください。 注意 注意注意 注意 : 異なるキャラクタ・セットを持つデータベース間で適切にデータ を変換するには、VARCHAR2 データが正しい書式の文字列で構成されてい ることを確認してください。キャラクタ・セット・サポートの詳細は、 『Oracle8i NLS ガイド』を参照してください。

(36)

次の書式で整数を指定できます。 ■ NUMBER(p)は、精度がp で、位取りが 0 の固定小数点数です(NUMBER(p,0) と同じで す)。 次の書式で浮動小数点を指定できます。 ■ NUMBERは、精度が38 桁の浮動小数点数です。なお、浮動小数点数で位取りは指定でき ません。

位取りと精度

位取りと精度

位取りと精度

位取りと精度

入力に対する特別な整合性チェックとして、固定小数点数列の位取りと精度を指定してくだ さい。位取りと精度を指定しても、すべての値が固定長に強制されるわけではありません。 値が精度の有効範囲を超えると、Oracle はエラーを戻します。値が位取りの有効範囲を超え ると、Oracle はその値を丸めます。 次に、いろいろな精度と位取りでOracle がデータを格納する例を示します。

負の位取り

負の位取り

負の位取り

負の位取り

位取りが負の場合、実際のデータは整数部分の右から指定された桁数のみ丸められます。た とえば、(10,-2)と指定すると 100 の位まで丸められます。 参照 参照参照 参照 : 2-11 ページの「浮動小数点数」を参照してください。 実際のデータ 実際のデータ実際のデータ 実際のデータ 指定する精度と位取り指定する精度と位取り指定する精度と位取り指定する精度と位取り 格納されるデータ格納されるデータ格納されるデータ格納されるデータ 7456123.89 NUMBER 7456123.89 7456123.89 NUMBER(9) 7456124 7456123.89 NUMBER(9,2) 7456123.89 7456123.89 NUMBER(9,1) 7456123.9 7456123.89 NUMBER(6) 精度を超える 7456123.89 NUMBER(7,-2) 7456100 7456123.89 NUMBER(-7,2) 精度を超える

(37)

精度より大きい位取り

精度より大きい位取り

精度より大きい位取り

精度より大きい位取り

通常はありえないことですが、精度より大きい位取りを指定することもできます。この場 合、精度は小数点の右側にある最大有効桁数を示します。すべてのNUMBER データ型と同 じように、値が精度を超えると、Oracle はエラー・メッセージを戻します。値が位取りの有 効範囲を超えると、Oracle はその値を丸めます。たとえば、NUMBER(4,5)として定義さ れた列は、小数点の後の最初の桁が0(ゼロ)でなければならず、小数点以下 5 桁を超える 値はすべて丸められます。次に、精度より大きい位取りを指定した場合の例を示します。

浮動小数点数

浮動小数点数

浮動小数点数

浮動小数点数

浮動小数点数は、最初の桁から最後の桁までの任意の位置に小数点を置くことも、小数点を 省略することもできます。小数点以下の桁数に制限はないため、浮動小数点数に対して位取 りは指定できません。 2-9 ページの「NUMBER データ型」で説明している形式で浮動小数点数を指定できます。ま た、Oracle は FLOAT ANSI データ型もサポートします。次の構文書式のいずれかを使用し て、このデータ型を指定します。 ■ FLOATでは、38 桁の 10 進精度または 126 桁の 2 進精度で浮動小数点数を指定します。 ■ FLOAT(b)は、2 進精度 b で浮動小数点数を指定します。精度 b は 1 ∼ 126 の範囲です。 2 進精度から 10 進精度に変換するには、b に 0.30103 を乗算します。10 進精度から 2 進 精度に変換するには、10 進精度に 3.32193 を乗算します。2 進数精度の 126 桁は、10 進 精度の38 桁とほぼ等しくなります。

LONG

データ型

データ型

データ型

データ型

LONG列には、最大2GB(231から1 を引いたバイト数)の可変長の文字列を格納できます。 LONG列には、多くの点で VARCHAR2 列と同じ特徴があります。LONG 列を使用すると、長 いテキスト列を格納できます。LONG 値の長さは、ご使用のコンピュータで利用できるメモ リーによって制限される場合もあります。 実際のデータ 実際のデータ実際のデータ 実際のデータ 指定する精度と位取り指定する精度と位取り指定する精度と位取り指定する精度と位取り 格納されるデータ格納されるデータ格納されるデータ格納されるデータ .01234 NUMBER(4,5) .01234 .00012 NUMBER(4,5) .00012 .000127 NUMBER(4,5) .00013 .0000012 NUMBER(2,7) .0000012 .00000123 NUMBER(2,7) .0000012

(38)

SQL 文の中の次の場所で LONG 列を参照できます。 ■ SELECT構文のリスト ■ UPDATE文の SET 句 ■ INSERT文の VALUES 句 LONG値を使用する場合には、次の制限があります。 ■ 表には複数の LONG 列を含めることはできません。 ■ LONG属性を持つオブジェクトは作成できません。

■ LONG列は整合性制約に使用できません。ただし、NULL 制約と NOT NULL 制約を除きま す。 ■ LONG列に索引を付けることはできません。 ■ ストアド・ファンクションは LONG 値を戻すことはできません。 ■ 単一のSQL 文に指定する、すべての LONG 列、更新された表、ロックされた表は、同一 データベース上にある必要があります。 また、LONG 列はSQL 文の次のような部分では使用できません。

■ SELECT文の WHERE 句、GROUP BY 句、ORDER BY 句、CONNECT BY 句または DISTINCT 演算子

■ SELECT文の UNIQUE 演算子

■ CREATE CLUSTER 文の列リスト

■ CREATE MATERIALIZED VIEW 文の CLUSTER 句

■ SQL 関数(SUBSTR や INSTR など) ■ 式または条件 ■ GROUP BY 句を含む問合せの SELECT 構文のリスト ■ UNION、INTERSECT または MINUS 集合演算子によって結合されている副問合せまたは 問合せの SELECT 構文のリスト 注意 注意注意

注意 : LONG列をLOB 列へ変換することをお薦めします。LOB 列は、 LONG列ほど制限が多くありません。詳細は、4-111 ページの「TO_LOB」 を参照してください。

(39)

■ CREATE TABLE ...AS SELECT 文の SELECT 構文のリスト

■ INSERT文の副問合せの SELECT 構文のリスト トリガーでは、LONG データ型は次のように使用されます。

■ トリガー内のSQL 文で、データを LONG 列に挿入できます。

■ LONG列のデータを CHAR や VARCHAR2 などの制約があるデータ型に変換できる場合は、 トリガー内のSQL 文で LONG 列を参照できます。

■ トリガー内の変数は、LONG データ型を使用して宣言できません。

■ :NEW と :OLD は LONG 列で使用できません。

Oracle コール・インタフェースを使用して、データベースから LONG 値の一部を検索できま す。

DATE

データ型

データ型

データ型

データ型

DATEデータ型は、日付と時刻の情報を格納するために使用します。日付と時刻の情報は、

CHARデータ型と NUMBER データ型で表現できますが、DATE データ型には特別に対応付け られているプロパティがあります。各 DATE 値には、世紀、年、月、日、時、分および秒の 情報が格納されます。 日付値を指定する場合に時間構成要素を指定しないと、デフォルト時間の12:00:00 AM(真 夜中)が採用されます。時刻値を指定する場合に日付を指定しないと、デフォルト日付であ る現在の月の最初の日が採用されます。日付関数 SYSDATE は現在の日付と時刻を戻します。 デフォルトの日付書式は、初期化パラメータ NLS_DATE_FORMAT によって指定され、 'DD-MON-YY' のような文字列になります。'DD-MON-YY' は、日付としての 2 桁の数、月 の名前の省略形、年の下2 桁を含むデフォルトの日付書式です。デフォルトの日付書式の文 字値が日付式で使用された場合、Oracle は自動的にそれらを DATE 値に変換します。 デフォルトの日付書式にない日付値を指定するには、文字値や数値を TO_DATE 関数によっ て日付値に変換する必要があります。この場合、Oracle に文字値や数値の解析方法を問い合 せるために、デフォルト以外の日付書式モデル(「日付マスク」と呼ばれることもあります) を指定する必要があります。たとえば、'17:45:29' の日付書式モデルは、'HH24:MI:SS' です。 '11-NOV-1999' の日付書式モデルは、'DD-MON-YYYY' です。 参照 参照参照 参照 : 『Oracle8i コール・インタフェース・プログラマーズ・ガイド』を 参照してください。

(40)

日付算術

日付算術

日付算術

日付算術

日付に対しては、日付の加算や減算のみでなく、数定数の加算や減算ができます。Oracle は 算術日付式の数定数を日付の数として解析します。たとえば、SYSDATE + 1 は明日です。 SYSDATE - 7 は 1 週間前です。SYSDATE + (10/1440)は 10 分後です。SYSDATE から emp 表 の hiredate 列を引くと、各従業員が雇用されてから経過した日数が戻ります。DATE 値の 乗算や除算はできません。 Oracle は、一般的な日付操作のための関数を用意しています。たとえば、ADD_MONTHS 関 数を使用すると、日付に月を加算したり、減算できます。MONTHS_BETWEEN 関数は、2 つ の日付の間の月数を戻します。結果の小数部は月(1ヶ月は 31 日)を単位として表されま す。 各日付には時間構成要素が含まれるため、ほぼすべての日付操作の結果には小数部が含まれ ます。この小数部は、日を単位として表されています。たとえば、1.5 日は 36 時間です。

ユリウス暦の使用方法

ユリウス暦の使用方法

ユリウス暦の使用方法

ユリウス暦の使用方法

ユリウス暦は、紀元前4712 年 1 月 1 日から経過した日数です。ユリウス暦によって共通の 基準で日付を算定できます。日付関数 TO_DATE と TO_CHAR で日付書式モデル「J」を使用 して、Oracle の DATE 値とユリウス暦の間で変換を行うことができます。 参照 参照参照 参照 : ■ 日付書式モデルの要素のリストは、2-46 ページの「日付書式モデル」 を参照してください。 ■ 文字値や数値から日付値への変換の詳細は、4-110 ページの 「TO_DATE」を参照してください。 ■ 日付値の文字列への変換の詳細は、4-108 ページの「TO_CHAR(日 付変換)」を参照してください。 ■ 現在のシステム日付および時刻を取得する場合の詳細は、4-106 ペー ジの「SYSDATE」を参照してください。 参照 参照参照 参照 : 日付関数の詳細は、4-5 ページの「日付関数」を参照してくださ い。

表 表 表
図 図 図
Table created.
表 3-8 OR 真理値表 真理値表 真理値表 真理値表

参照

関連したドキュメント

【ご注意点】 ・カタログの中からお好みの商品を1点お 選びいただき、同封のハガキに記載のお

・Squamous cell carcinoma 8070 とその亜型/変異型 注3: 以下のような状況にて腫瘤の組織型が異なると

Using the special C- mount ring adapter, the lens can be directly attached to a CCD camera, enabling it to be used as a low cost image ob- servation lens and variable focus lens

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

※ログイン後最初に表示 される申込メニュー画面 の「ユーザ情報変更」ボタ ンより事前にメールアド レスをご登録いただきま

申込共通① 申込共通② 申込共通③ 申込共通④ 申込完了

製造業種における Operational Technology(OT)領域の Digital

注意: 条件付き MRI 対応と記載されたすべての製品が、すべての国及び地域で条件付き MRI 対応 機器として承認されているわけではありません。 Confirm Rx ICM