Shoeisha Technology Media

資格Zine(しかくジン)

記事種別から探す

データ定義言語(DDL)の概要

  • LINEで送る
  • このエントリーをはてなブックマークに追加
林 優子[著]
2016/12/15 14:00

ここまで、SELECTに関する出題ばかり解説してきましたが、今回はDDL(データ定義言語)です。DDLを学ぶには、データ型、制約、オブジェクト作成/削除時の注意、変更時の制限など、復習しなければいけないことがたくさんあります。また、DDLはSELECTに比べ、実務で使用する頻度が少ないので、こういう機会にしっかり身に付けておきましょう。

DDLの出題ポイント

データ定義言語といえば、CREATEALTERDROPですね。 定義するオブジェクトには、ビューシノニム順序があります。 12c SQLの試験対策的には、順序が重要オブジェクトです。

表の定義時に指定するものには、データ型と制約があります。 データ型は、LONGINTERVALが最重要ポイント。 制約は、CREATE TABLE AS SELECTまたはALTERとの合わせ技で出題されることが多く、要注意です。

なんだか、盛りだくさんですね。1つずつポイントを押さえていきましょう。

データ型

では、問題を解きながら、基本のおさらいをしましょう。

問1

EMPLOYEES表の構造を確認してください。

名前              NULL?    型
----------------- -------- ------------
EMPLOYEE_ID       NOT NULL NUMBER(6)
EMPLOYEE_NAME              VARCHAR2(50)
GENDER                     CHAR
PHONE_NUMBER               VARCHAR2(20)
HIRE_DATE         NOT NULL DATE
SALARY                     NUMBER
COMMISSION_PCT             NUMBER(2,2)
EMPLOYEE_IMAGE             LONG
DEPARTMENT_ID              NUMBER(4)  

この表の作成とデータ型について正しいものをすべて選択しなさい。

  • a. HIRE_DATE列には、世紀、年、月、日、曜日、時、分、秒、小数秒を格納できる
  • b. GENDER列は有効桁数を指定していないので、作成時エラーになる
  • c. SALARY列は有効桁数を指定していないので、作成時エラーになる
  • d. COMMISSION_PCT列に2桁の整数を入力するとエラーになる
  • e. データ型がLONGの新しい列をこの表に追加することができる
  • f. データ型がCLOBの新しい列をこの表に追加することができる

日付を扱うデータ型には、DATETIMESTAMPがあります。 小数秒を格納できるのはTIMESTAMPであって、DATE型ではありません(選択肢aは不正解)。

文字を扱うCHAR型、VARCHAR2型と数値を扱うNUMBER型は、格納できるデータの有効桁数(最大桁数)を指定できます。VARCHAR2は桁数の指定を省略するとエラーになりますが、CHARNUMBERにはデフォルト値が設定されるため(CHARは1文字、NUMBERは38桁)、エラーにはなりません(選択肢b、cは不正解)。

NUMBER型では、全体の桁数と小数点以下の桁数を指定できます。 例えば、NUMBER(5,2)は「全体の桁数が5桁そのうち小数点以下が2桁」という定義で、整数部に格納可能なのは3桁です。 ということは、NUMBER(2,2)は「全体の桁数2桁のうち2桁とも小数点以下」という定義ですから、整数2桁の値を入力(更新)すると次のとおりエラーになります(選択肢dは正解)。

SQL> SELECT commission_pct FROM employees
  2  WHERE employee_id = 178;

COMMISSION_PCT
--------------
           .15

SQL> UPDATE employees SET commission_pct = 98
  2  WHERE employee_id = 178;
UPDATE employees SET commission_pct = 98
                                      *
行1でエラーが発生しました。:
ORA-01438: この列に許容される指定精度より大きな値です

VARCHAR2で格納できるサイズよりも大きな文字列を格納できるデータ型として、LONGCLOBがあります。 CLOBは、最大「(4GB-1)× DB_BLOCK_SIZE初期化パラメータ[1]の値」まで文字を格納できるラージオブジェクトの1つで、Oracle8から実装されました。それ以前にはLONG型しかありませんでした。 LONG型には次のような制限があり、CLOBではそれらの制限が緩和されているのはそうした経緯によるものです(選択肢eは不正解、fは正解)。

LONG型の制限
  • 1つの表当たり1列しか定義できない
  • 制約を指定できない
  • GROUP BY句およびORDER BY句で使用できない
  • 副問合せを使用して表を作成した場合、コピーされない

試験でLONGの出題が多いのは、「LONGを使用するような案件があるならば、CLOBが適切でないか検討してください」と注意を促しているのでしょうね。

[1]: Oracleが使用するメモリやプロセスまたはデータベース全体に関わる設定値。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 林 優子(ハヤシ ユウコ)

    日本オラクル株式会社の教育ビジネスのスタートアップを全面的に支援し、バージョン5の頃からOracleに携わるベテラン講師として知る人も多い。Oracle認定講師を表彰するExcellent Instructorを連続受賞。1ランク上のITスペシャリスト育成を目標に、データベース分野にとどまらず「プレゼンテーション」、「ロジカルシンキング」などのトレーニングも手がけている。著書に『オラクルマスター教科書』シリーズ(翔泳社)、『プロとしてのデータモデリング入門』(SBクリエイティブ)など。その他、雑誌執筆、著書・メディア出演も多数。

バックナンバー

連載:めざせオラクルマスターホルダー! Oracle DB 12c SQL基礎 弱点克服スクール

もっと読む

All contents copyright © 2015-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.0