導入
SQL の命令はたくさんありますが、役割で整理すると迷子になりません。このコースが扱う DDL が、その地図のどこにいるのかを先に押さえましょう。
説明
SQL の命令は、役割によっておおまかに5つに分かれます。
flowchart TB
SQL["SQL の命令"]
SQL --> DQL["DQL(問い合わせ)<br/>SELECT"]
SQL --> DML["DML(データ操作)<br/>INSERT / UPDATE / DELETE"]
SQL --> DDL["DDL(データ定義)★このコース<br/>CREATE / ALTER / DROP"]
SQL --> TCL["TCL(トランザクション制御)<br/>COMMIT / ROLLBACK"]
SQL --> DCL["DCL(権限制御)<br/>GRANT / REVOKE"]
| 分類 | 何をする | 代表的な命令 | 学ぶ場所 |
|---|---|---|---|
| DQL | データを取り出す | SELECT | 姉妹コース「SQL データ操作(DML)」 |
| DML | データを変える | INSERT UPDATE DELETE | 姉妹コース「DML」 |
| DDL | 表を設計・定義する | CREATE ALTER DROP | 本コース |
| TCL | 変更を確定/取消 | COMMIT ROLLBACK | 姉妹コース「DML」 |
| DCL | 権限を管理する | GRANT REVOKE | 本コース 第6章 |
このコースが扱うのは、表そのものを作る・変える・消す DDL(と、権限を扱う DCL)です。データを入れる前の「設計図づくり」にあたります。RDB は「自分がどんな表を持っているか」という設計情報まで、DB 自身の中に持っています。SQLite ではそれを sqlite_master という特別な表で覗けます。
SELECT name FROM sqlite_master WHERE type = 'table';
やってみよう
初期表示のクエリを実行し、このショップ DB に入っている5つのテーブルの名前が並ぶことを確認しましょう。type = 'table' を type = 'index' に変えると、張られている索引の一覧も見られます(DB が自分の設計を抱えている、という感覚をつかんでください)。
演習
sqlite_master から、テーブルの「設計図そのもの(作成時の SQL)」を見てみましょう。name の代わりに sql 列を取り出してください(SELECT sql FROM sqlite_master WHERE type = 'table';)。各テーブルの CREATE TABLE 文が出てきます。
ヒント1を見る
SELECT sql FROM sqlite_master WHERE type = 'table';