フクの非日常

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DB DDLとDMLと

DBにログインしました。
さあテーブルにデータを入れましょう、のそのまえに。

DDLのCREATE文でテーブルを定義するのがはじめの一歩。
データ定義言語のDDLはテーブルの大枠を決めるもの。
CREATE/DROPでテーブルを作ったり、破棄したり。
CREATE/DROPで作るものは、TABLE、VIEW、ROLE。
VIEWはTABLEを選択、結合した結果を参照用に見せるためのもの。
条件によって更新することもできる。
ROLEはテーブルの参照、更新権限を定義するもの。
給与テーブルなど、全員に参照権限は与えないし、
人事情報は本人だけに更新権限を与えたいなど、細かく設定していく。
情報セキュリティの要求が厳しい昨今、RDBMSも権限機能を持つのだな。

権限付与・破棄のGRANT、REVOKEはDDLに含まれる。
OracleMasterなんかではDCL(データ制御言語)に含まれていたが、
情報処理試験ではDDLとするそうだ。
分類の話だからどっちでもよい気はするが。。

DML(データ制御言語)が叩けるようになるのはこれから。
SELECT、INSERT、UPDATE、DELETE。
主役はSELECTだねー。

そして、思わぬ伏兵がCURSOR。
「カーソルなんて要らないじゃん!」
って思っていたけれど、やっと使い方が分かった。
普通にRDBMSにログインしてSELECT文を叩くと、結果が複数行表示される。
C言語などのプログラムからSQL文を叩く場合、
複数行得られた回答をどうやって処理するのか?
その答えがCURSORなのである。

繰り返し処理で、カーソルから1行取得して処理し、次の行を取得する。
行が無くなるまで実施、という処理なのだ。
そういえば、SQLを使ったプログラムではループで結果を取り出していたけど
このカーソルと同じことをやってたんだね、とやっと気が付く。

あとはCOMMITとROLLBACK。
これらはトランザクション制御でかなり重要。

試験に臨むにあたり、SQL構文の暗記は必須事項である。

 GRANT A ON B TO C
 DECLARE A CURSOR FOR B
 SELECT A FROM B JOIN C ON D
 UPDATE A SET B WHERE

GRANTの後はONだっけ、TOだっけ、とか
DECLAREの後はCURSORだっけ、カーソル名だっけ、とか
SQLを書くときに構文を確認すれば良いだけなので、実際には暗記の必要はない。

問題冊子にSQLの構文くらいさらっと記載してくれれば、
構文の暗記なんかに余計な労力を割かなくて済むのだが。
SQLくらい空で書けなくてはDB技術者の資格無し、という
暗黙のメッセージと受け取っておくことにする。

コメント


管理者にだけ表示を許可する
 

 

トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。