DP-900:Microsoft Azure Data Fundamentals Azure のリレーショナルデータ 問2
Azure のリレーショナルデータ/リレーショナルの概念在庫管理データベースで、既存の行のデータ値は一切変更せずに、商品テーブルに新しい列(割引率)を追加して構造を変更したい。このために実行するステートメントが属する分類として適切なものはどれか。
当サイトのオリジナル問題(DP-900:Microsoft Azure Data Fundamentalsの出題範囲「Azure のリレーショナルデータ」に対応。実際の試験問題ではありません)
- ADML(データ操作言語)
- BDDL(データ定義言語)
- CDCL(データ制御言語)
- DTCL(トランザクション制御言語)
正解:B
解説
SQLのステートメントは役割によっていくつかの分類に分かれます。CREATE TABLEやALTER TABLE、DROP TABLEのようにテーブルや列などのオブジェクトの構造を定義・変更するステートメントはDDL(データ定義言語)に分類されます。これに対し、SELECTやINSERT、UPDATE、DELETEのように行データそのものを操作するステートメントはDML(データ操作言語)に分類され、両者は役割が異なります。本問のように行データの値を変更せずにテーブルへ列を追加する操作はテーブルの構造変更にあたるため、DDLに分類されるステートメントを使用します。
選択肢ごとの解説
- A誤り。DML(データ操作言語)はSELECTやINSERT、UPDATE、DELETEなど、テーブルに格納されている行データを操作するためのステートメントの分類であり、テーブル自体の構造変更には使いません。
- B正しい。ALTER TABLEのようにテーブルや列、インデックスなどのオブジェクトの構造そのものを定義・変更するステートメントはDDL(データ定義言語)に分類され、既存の行データの値には影響を与えません。
- C誤り。DCL(データ制御言語)はGRANTやREVOKEなど、データベースオブジェクトへのアクセス権限を管理するためのステートメントの分類であり、テーブルの列構成を変更する用途ではありません。
- D誤り。TCL(トランザクション制御言語)はCOMMITやROLLBACKなど、一連の処理をトランザクションとして確定・取り消しするためのステートメントの分類であり、テーブル構造の変更には使いません。