データ定義言語の概要
問10
JOBS表の構造を確認してください。
NAME NULL? TYPE --------------------- -------- ------------------ JOB_ID NOT NULL VARCHAR2(10) JOB_TITLE NOT NULL VARCHAR2(35) MIN_SALARY NUMBER(6) MAX_SALARY NUMBER(6)
JOB_ID列には主キー制約が、JOB_TITLE列にはNOT NULL制約が定義されています。
次のCREATE文を確認してください。
CREATE TABLE JOB_GRADE(JOBNO,JOBNAME,MINSAL,MAXSAL) AS SELECT * FROM JOBS;
JOG_GRADE表の作成に関して正しい記述はどれですか。最適なものを選択しなさい。
- a. MINSALとMAXSALはNUMBER(6)ではなく、NUMBERになる
- b. 主キー制約とNOT NULL制約は適用されない
- c. JOBNAMEのNOT NULL制約は適用され、JOBNOのNOT NULL制約は適用されない
- d. 主キー制約は適用されないが、JOBNOとJOBNAMEのNOT NULL制約は適用される
まず、実行結果を見てみましょう。
SQL> CREATE TABLE JOB_GRADE(JOBNO,JOBNAME,MINSAL,MAXSAL) 2 AS SELECT * FROM JOBS; 表が作成されました。 SQL> desc job_grade NAME NULL? TYPE --------------------- -------- ------------------ JOBNO VARCHAR2(10) JOBNAME NOT NULL VARCHAR2(35) MINSAL NUMBER(6) MAXSAL NUMBER(6)
実行結果から、選択肢cが正解であることが確認できます。
CREATE TABLE AS SELECT文でコピーされる制約は、NOT NULL制約のみです(選択肢bは不正解)。
主キー制約は、一意(UNIQUE)で必須(NOT NULL)であることを保証する制約ですが、その中の必須(NOT NULL)を保証する制約だけコピーされることはありません(選択肢dは不正解)。
CREATE TABLE AS SELECT文は、NOT NULL制約の他に、SELECT文に記述された条件に一致する行の値とデータ定義(データ型と有効桁数)をコピーします(選択肢aは不正解)。
本講座第10回の冒頭で、「制約は、CREATE TABLE AS SELECTまたはALTERとの合わせ技で出題されることが多いので要注意」とお伝えしたことを思い出してください。
* * *
いかがでしたか?復習になりましたか? 12cSQLの試験は難しいと私は思っています。だから、合格したらいっぱい自慢してくださいね。応援しています!
この記事は参考になりましたか?
- めざせオラクルマスターホルダー! Oracle DB 12c SQL基礎 弱点克服スクール連載記事一覧
-
- 12c SQL基礎の総復習「模擬問題」
- リレーショナルデータベースの概要~正規化とER図
- データ定義言語(DDL)の概要
- この記事の著者
-
林 優子(ハヤシ ユウコ)
日本オラクル株式会社の教育ビジネスのスタートアップを全面的に支援し、バージョン5の頃からOracleに携わるベテラン講師として知る人も多い。Oracle認定講師を表彰するExcellent Instructorを連続受賞。1ランク上のITスペシャリスト育成を目標に、データベース分野にとどまらず「プレゼンテーション」、「ロジカルシンキング」などのトレーニングも手がけている。著書に『オラクルマスター教科書』シリーズ(翔泳社)、『プロとしてのデータモデリング入門』(SBクリエイティブ)など。その他、雑誌執筆、著書・メディア出演も多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

