以下のSQL文で、どのような結果が返されますか。
DESC employees
名前 NULL? 型
-------------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
SALARY NOT NULL NUMBER(8,2)
INSERT INTO employees VALUES (102);A1件のデータが挿入され、SALARYにはNULLが入る
B1件のデータが挿入され、SALARYには0が入る
Cエラーになる✓
D何も挿入されないが、エラーにはならない
正解:C解説
列リストを省略したINSERT文では、表のすべての列(2列)の値を、表の列の順序どおりに指定する必要があります。
今回は値が1つしかないため、値の数が不足してエラーになります。
INSERT INTO employees VALUES (102);
ORA-00947: 値の数が不足しています正しい書き方の例
INSERT INTO employees VALUES (102, 3000);
1行が作成されました。 なお、列リストで(employee_id)だけを指定した場合は値の数は一致しますが、SALARYにはNOT NULL制約があるため、NULLを挿入できずにエラー(ORA-01400)になります。