基本的なコマンドは押さえておきたい
「せんせい!SQLってRDBを操作する言語よね?」(由美)
2010年02月04日 09時00分更新
SQLもデータベースの定義と操作の2通り
先生:今、SQLを実行する方法は2通りあるとお話しましたが、SQL自体も内容的に2通りに分けられます(図2)。1つはデータの定義のためのSQLで、「データ定義言語(DDL:Data Definition Language)」と呼ばれます。もう1つはデータ操作のためのSQLで「データ操作言語(DML:Data Manipulation Language)」と呼ばれます。
お父さん:DDLとかDMLとかだと、なんだか難しそうですね。
先生:あくまで用語なので、もう少し我慢して聞いてください。データ定義言語であるDDLにはCREATE文、DROP文、ALTER文、GRANT文、REVOKE文などがあります。一方、データ操作言語のDMLには、SELECT、INSERT、DELETE、UPDATE文があります(図3)。
由美:内容が違うことは分かるのだけど、わざわざ用語で区別する理由は他にもありそうね。
先生:DDLの実行はトランザクションの対象にならないという点が挙げられますね。たとえば新しいテーブルを作る操作は、トランザクションと関係ありませんから。また、DMLのほうは、データベース中のデータを選択したり、選択結果を集約するための共通の「句」を持っています。
ユーザーやテーブルの作成や変更と削除を行なうデータ定義言語
先生:初回にデータベースのセキュリティについてお話しした通り、まずユーザーを作成してそのユーザーにさまざまなアクセス権限を与えることになります。
由美:データにアクセスできる人を限定するのね。
先生:そうです。ここでいうアクセス権限というのは、ユーザーが行なえる操作の権利のことです。ところがSQLではユーザーの作成については取り決めがありません。
お父さん:え? ではどうやってユーザーを作成するのですか?
先生:製品ごとに管理機能が用意されていますので、それを使って作成します。一部のデータベース管理システムではユーザー作成のために、独自のSQLコマンドを提供しています。
由美:では、アクセス権限としては、どんなものをどうやって与えるのですか?
先生:アクセス権限の操作は、データの参照、追加、更新、削除といったものすべてが対象です。その上で、テーブルごとに可能な操作の権限をユーザーに与えます。
由美:つまりユーザーとしてデータベースを利用する権限があっても、そのテーブルを利用する権限がなければ使えないってことですね。
先生:その通りです。具体的にはGRANT文とREVOKE文を使います(図4)。権限の付与は以下のように書きます。
GRANT 権限 ON テーブル名 TO ユーザー;
ここで権限に指定できるのは、先ほどDMLとして示したSELECT、INSERT、DELETE、UPDATEとALL(これらすべて)となります。
由美:GRANTで権限を与えるということは、取り消しはREVOKEでできるのね。
先生:はい、権限の取り消しにはREVOKE文を使います。こんな感じですね。
REVOKE 権限 ON テーブル名 FROM ユーザー;
お父さん:なるほど、GRANTではTOだったのが、REVOKEではFROMに変わるのですね。
先生:テーブルの作成はCREATE文を使って、以下のように書きます。()の中に、テーブルの列の名前とそのデータ型を「,」で区切って列挙します。ここでは商品データというテーブルを作成します。
CREATE TABLE 商品データ ( 商品番号 VARCHAR(20), 商品名 VARCHAR(40), 単価 INTEGER);
由美:CREATE TABLEってことはTABLE以外にも作れるものがあるのね?
先生:はい、前回までにお話したドメインやインデックスの作成もCREATE文で行ないます。
由美:逆に、テーブルやドメインの削除はDROP文で行なうのかしら。
先生:はい、その通りです。以下のように書きます。
DROP TABLE 商品データ;
お父さん:それじゃあ、テーブルの定義の変更もあるのですね。
先生:はい、テーブルの定義の変更はALTERコマンドで行ないます。ここでは省略します。
(次ページ、「データベースのリレーショナル演算を行なうデータ操作言語」に続く)
この連載の記事
-
第3回
ソフトウェア・仮想化
「インデックスとトランザクションって」(由美) -
第2回
ソフトウェア・仮想化
「由美ちゃん、これがRDBの要素だよ」(先生) -
第1回
ソフトウェア・仮想化
「データベースってなんですか?」(由美) - この連載の一覧へ