検索
連載

SQLを利用してデータを操作する間違いやすいポイントを追え! Bronze SQL基礎I(8)(1/2 ページ)

Oracleデータベースエンジニアとしての基礎力を証明するORACLE MASTER Bronze。その取得を目指すITエンジニアのための講座が本連載だ。間違いやすいポイントを確認し、合格に近づこう!

Share
Tweet
LINE
Hatena

 前回「SQLの副問い合わせを使いこなす」では、副問い合わせの基礎、副問い合わせで使用する比較演算子について学習しました。

 今回は、以下の項目を確認します。

  • INSERT文
  • UPDATE文

INSERT文の基本構文と基本機能

例題1

EMPLOYEES表にINSERTで正しく行を追加しているSQL文を、次の中からすべて選択してください。

a.insert into employees(empno,ename,jobid)

  values(300,'JACK',30);

b.insert into employees(empno,ename,jobid)

  values(300,'JACK');

c.insert into employees(empno,ename,jobid)

  values(300,'JACK',default);

d.insert into employees(empno,ename,jobid)

  values(300,JACK,30);

例題の範囲をおさらい

参考:「SQLでデータを自在に操作する

 表に新しく行を挿入するには、INSERT文を使用します。

INSERT INTO 表名 [(列名1, 列名2, ...)] VALUES (値1, 値2, ...);

正解

a、c

解説

選択肢a:このSQL文を実行した結果は以下のようになります。

SQL> insert into employees(empno,ename,jobid)
  2  values(300,'JACK',30);
1行が作成されました。

 このSQL文は、正しく行を追加しているといえます。

選択肢b:このSQL文を実行すると、以下のようにエラーとなります。

SQL> insert into employees(empno,ename,jobid)
  2  values(300,'JACK');
values(300,'JACK')
*
行2でエラーが発生しました。:
ORA-00947: 値の個数が不足しています。

 選択肢aのSQL文と異なり、指定した列の数とVALUES句に指定した値の数が異なるため、エラーとなります。

選択肢c:このSQL文を実行した結果は以下のようになります。

SQL> insert into employees(empno,ename,jobid)
  2  values(300,'JACK',default);
1行が作成されました。
SQL> select * from employees
  2  where ename='JACK';
     EMPNO ENAME                                    JOBID
---------- ---------------------------------------- -------------
       300 JACK                                     50

 DEFAULTというキーワードは、列の初期値を指定します。もし初期値がなければ、代わりにNULL値が入ります。

 今回の例では、初期値は50となっています。特に主キーの設定やNOT NULL制約が行われているという前提がなく、指定した列の数とVALUES句に指定した値の数が合っていますので、何ら問題はありません。

選択肢d:このSQL文を実行すると、以下のようにエラーとなります。

SQL> select * from employees
  2  values(300,JACK,30);
values(300,JACK,30)
*
行2でエラーが発生しました。:
ORA-00933: SQLコマンドが正しく終了されていません。

 VALUES句に指定した「JACK」という文字がシングルクオーテーション(' ')で囲まれていないため、エラーとなります。文字や日付にはシングルクオーテーションが必要となりますので注意してください。

 よって、正しく行を追加しているSQL文はa、cです。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る