| CREATE TABLE |
新しいテーブルの作成
CREATE [TEMP | TEMPORARY] TABLE テーブル名 ( カラム定義 [, カラム定義]* [, 制約条件]* ) CREATE [TEMP | TEMPORARY] TABLE テーブル名 AS SELECT文 -- カラム定義 -- 名前 [データ型] [[CONSTRAINT 名前] カラム制約条件]* -- データ型 -- 型名 | 型名 ( 数字 ) | 型名 ( 数字 , 数字 ) -- カラム制約条件 -- NOT NULL [ CONFLICT 句 ] | PRIMARY KEY [ソート順] [ CONFLICT 句 ] | UNIQUE [ CONFLICT 句 ] | CHECK ( 評価式 ) [ CONFLICT 句 ] | DEFAULT 値 -- 制約条件 -- PRIMARY KEY ( 名前 [, 名前]* ) [ CONFLICT 句 ]| UNIQUE ( 名前 [, 名前]* ) [ CONFLICT 句 ] | CHECK ( 評価式 ) [ CONFLICT 句 ] -- CONFLICT 句 -- ON CONFLICT 衝突時アルゴリズム ・テーブル名にsqlite_で始まる名前をつけることはできません。 ・SQLiteは型がありません。 ・カラム制約 PRIMARY KEY 主キーを設定します。 NOT NULL カラムのNULL許可しません。 UNIQUE カラムの値がテーブル内で重複しないようにします。 CHECK カラムの値を式により評価します。 DEFAULT カラムのデフォルト値を指定します。 |
| サンプル |
|
ユーザーのアカウント管理用のテーブルを作成します。 emailが重複して登録されないようにします。 パスワードが4文字以上入力される様にチェックします。 CREATE TABLE account_tbl ( id integer NOT NULL, flag integer DEFAULT 1, name varchar(64) NOT NULL, email varchar(128) UNIQUE, password varchar(32), CONSTRAINT account_pky PRIMARY KEY (id), CONSTRAINT password_chk CHECK (length(password) >= 5) ); |
| CREATE VIEW |
新しいビューの作成CREATE [TEMP | TEMPORARY] VIEW ビュー名 AS SELECT文 |
| サンプル |
マスターテーブルからビュー情報だけを表示するビューの作成。CREATE VIEW master_view AS SELECT * FROM sqlite_master WHERE type='view'; |
| CREATE TRIGGER |
新しいトリガーの作成CREATE [TEMP | TEMPORARY] TRIGGER トリガ名 [ BEFORE | AFTER ] データベースイベント ON [データベース名 .] テーブル名 トリガーアクション CREATE [TEMP | TEMPORARY] TRIGGER トリガ名 INSTEAD OF データベースイベント ON [データベース名 .] ビュー名 トリガーアクション -- データベースイベント -- DELETE | INSERT | UPDATE | UPDATE OF カラムの並び -- トリガーアクション -- [ FOR EACH ROW | FOR EACH STATEMENT ] [ WHEN 評価式 ] BEGIN トリガーステップ ; [ トリガーステップ ; ]* END -- トリガーステップ -- UPDATE文 | INSERT文 | DELETE文 | SELECT文 ・NEW,OLD疑似リレーション NEW 変更・挿入後の値を参照できます。 OLD 変更・削除前の値を参照できます。 |
| サンプル |
|
掲示板で親のメッセージを削除した際にそれに対して返信された メッセージも削除する作業をトリガーを用いて行います。 掲示板テーブルの作成。 CREATE TABLE bbs_tbl ( id integer NOT NULL, title varchar(128), body text, parent integer, PRIMARY KEY (id) ); 親のメッセージを削除した後それにぶら下る返信 メッセージを削除するトリガーの作成。 CREATE TRIGGER del_parentbbs AFTER DELETE ON bbs_tbl BEGIN DELETE FROM bbs_tbl WHERE parent = old.id; END; |
| CREATE INDEX |
新しいインデックスの作成CREATE [ TEMP | TEMPORARY] [ UNIQUE] INDEX インデックス名 ON [ データベース名 .] テーブル名 ( カラム名 [ , カラム名 ] * ) [ ON CONFLICT 衝突時アルゴリズム ] -- カラム名 -- 名前 [ ASC | DESC ] |
| サンプル |
|
CREATE TABLEでのサンプルにあるアカウントテーブルの emailに対してインデックスを作成します。 CREATE INDEX email_idx ON account_tbl (email); |
