順序
順序とは、一意な数値を自動発番するオブジェクトです。
例えば、注文表の注文番号列の値は一意でなければなりません。また、インターネットショップを想像してみてください。同時に多くの人が注文してくるでしょうから、注文番号の発番時に「現在一番大きい注文番号は何番だ?」なんて検索し、発番する注文番号を求めていたらどうでしょう(検索している間は、注文番号の発番を待たせている)。大変なことになってしまいますよね。
だから、発番するルール(初期値や増分値など)を定義しておいて、「次の値をちょうだい」といえば、ルールどおりに発番された値が得られると便利です。この便利な機能を提供するオブジェクトが順序です。
問4
次のSQLコマンドを確認してください。
CREATE SEQUENCE seq INCREMENT BY 1 MAXVALUE 9999 MINVALUE 0 CYCLE
正しい説明を2つ選択しなさい。
- a. 0から始まる
- b. 1から始まる
- c. 最大値9999に達したら、0から発番が続けられる
- d. 最大値9999に達したら、1から発番が続けられる
- e. 最大値9999に達したら、空いている番号を見つけて発番を続ける
正解は、選択肢bとeです。 順序は、次の構文を使用して作成できます。
CREATE SEQUENCE 順序名 [START WITH 開始値] [INCREMENT BY 増分値] [MAXVALUE 最大値] [MINVALUE 最小値] [CACHE キャッシュ数 | NOCACHE] [CYCLE | NOCYCLE] [ORDER | NOORDER]
順序名以外は省略できます。つまり、順序名以外は省略値が用意されています。 開始値、増分値、最小値の省略値は1[2]、キャッシュ数の省略値は20です。 設問ではSTART WITHの定義が省略されているので、省略値の「1」から開始します(選択肢aは不正解、選択肢bは正解)。
CYCLEが定義してある場合、最大値に達したら最小値に戻って発番を続けます。 MAXVALUE 9999 MINVALUE 0 CYCLEと定義されているので、最大値9999に達したら、0から発番が続けられます(選択肢d、eは不正解、選択肢cは正解)
順序は、この省略値が出題される傾向が強いのでマニュアルなどを確認しておくとよいでしょう。
* * *
SQLに関する解説はこれで一通り終わりました。次回はSQL以外の出題内容に関して説明します。お楽しみに。
注
[2]: 最小値の省略値は、昇順の場合には1、降順の場合には-(1027-1)です。
この記事は参考になりましたか?
- めざせオラクルマスターホルダー! Oracle DB 12c SQL基礎 弱点克服スクール連載記事一覧
-
- 12c SQL基礎の総復習「模擬問題」
- リレーショナルデータベースの概要~正規化とER図
- データ定義言語(DDL)の概要
- この記事の著者
-
林 優子(ハヤシ ユウコ)
日本オラクル株式会社の教育ビジネスのスタートアップを全面的に支援し、バージョン5の頃からOracleに携わるベテラン講師として知る人も多い。Oracle認定講師を表彰するExcellent Instructorを連続受賞。1ランク上のITスペシャリスト育成を目標に、データベース分野にとどまらず「プレゼンテーション」、「ロジカルシンキング」などのトレーニングも手がけている。著書に『オラクルマスター教科書』シリーズ(翔泳社)、『プロとしてのデータモデリング入門』(SBクリエイティブ)など。その他、雑誌執筆、著書・メディア出演も多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

