□NULLを設定する際謝ったinsert文を選ぶ。
<MEMBER表>
mID | mName | age |
A. insert into member (mID, age) values(10, 17);
B. insert into member values(10, ,17);
C. insert into member values(10, NULL, 17);
D. insert into member values(10, DEFAULT 17);
【解答】;
構文:INSERT INTO 表名[列名,列名…] VALUES (値,値…)
INSERT文でNULLを設定する方法には3つある。
・列リスト内の列指定を省略する。
・VALUE句でNULLを指定する。
・列のデフォルトがNULLの場合、DEFAULTキーワードで列のデフォルト値を指定する。
□UPDATE文に関する説明として正しいものを選ぶ。
A. WHERE句を省略すると一件も更新されない。
B. SET句では1つの列しか指定できない。
C. SET句では別表を参照する副問い合わせを使用できない。
D. 1つのUPDATE文で複数行を更新できる。
【解答】;
構文:UPDATE 表名 SET 列名=値[,列名=値…] [where 条件];
・同時に複数行更新できる。
・WHERE句を省略するとすべての行が更新される。
・SET句を使用して、別表に基づく行の更新を行う事もできる。
・SET句を使用して、複数列を更新する事ができる。
□Member表から全データを削除するDELLETE文として正しいもの(2つ)
A. delete Member;
B. delete * from Member;
C. delete from Member where 1 <> 2;
D. delete from Member where 1 = 2;
【解答】;
構文:DELETE [FROM] 表名 [WHERE 条件];
・同時に複数行削除できる。
・WHERE句を省略するとすべての行を削除する。
・WHERE句を使用すると、条件に一致した行のみ削除する。
・条件に一致する行がない場合は、0行削除のメッセージが表示される(エラーではない)。
AはWHEREの省略形で正しい。Cも常に条件が正しくなるので全行削除される。
□行の削除を行う場合、DELETE文ではなくTRANCATE文を使う必要がある場合はどのような時か?
A. 削除した行をロールバックする。
B. 一部の行を削除する。
C. 削除トリガーを起動する。
D. 他のオブジェクトのために、ディスクスペースをあける。
【解答】;
構文:TRANCATE TABLE 表名 [CASCADE];
・表からすべての行を削除する
・DDL文なので削除できないが、ロールバック情報を生成しないので、DELETE文を使用するより処理が早い。
・表が使用していた領域は、解放され他のオブジェクトで最利用可能となる。
・削除トリガー(データベース内に格納され、イベント時に暗黙的に実行されるプロシージャ)を起動しない。
・FOREIGN KEY(参照整合性)制約の親表を切り捨てる事ができない。ただし、ON DELETE CASCADEオプションを指定したFOREIGN KEY制約の場合のみ、CASCADEキーワードを使用して、親表を切り捨てできる。
□トランザクションが終了しないイベントはどれか(2つ)
A. COMMIT文の実行
B. SAVAPOINT文の実行
C. 「ROLLBACK TO セーブポイント名;」の実行
D. DDL文の実行
E ユーザによるSQL Developerの終了
F. マシン障害またはシステムクラッシュ
G. DCL文の実行
【解答】
・トランザクションとは、関連する更新を行うDML文の集まり。
以下の場合にトランザクションは終了する。
・COMMIT文、ROLLBACK文が実行時。
・DDL文、DCL文の実行時暗黙的にCOMMITが実行される。
・SQL*PlusおよびSQL Developerなどのデータベースを更新しているアプリケーションの終了時
・システムクラッシュ時
セーブポイントとは、1つのトランザクションの中で部分的にロールバックするための機能。SAVEPOINT文でセーブポイントを設定し、「ROLL BACK TO セーブポイント名;」でセーブポイントまでロールバックする。