順序
順序とは、一意な数値を自動発番するオブジェクトです。
例えば、注文表の注文番号列の値は一意でなければなりません。また、インターネットショップを想像してみてください。同時に多くの人が注文してくるでしょうから、注文番号の発番時に「現在一番大きい注文番号は何番だ?」なんて検索し、発番する注文番号を求めていたらどうでしょう(検索している間は、注文番号の発番を待たせている)。大変なことになってしまいますよね。
だから、発番するルール(初期値や増分値など)を定義しておいて、「次の値をちょうだい」といえば、ルールどおりに発番された値が得られると便利です。この便利な機能を提供するオブジェクトが順序です。
問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)です。