rktSQLite

rktSQLite2




テーブル・情報の操作

INSERT
テーブルに新しい行の挿入
INSERT [OR 衝突時アルゴリズム] INTO 
    [データベース名 .] テーブル名 [(カラムの並び)] VALUES(値の並び) |
INSERT [OR 衝突時アルゴリズム] INTO 
    [データベース名 .] テーブル名 [(カラムの並び)] SELECT文
サンプル
INSERT INTO account_tbl VALUES(1,1,'takahshi','yujiro@rakuto.net','abcd123');

SQLiteにはalterが無いので以下のステップで代用します。
メールマガジンの受信フラグを追加します。
CREATE TEMPORARY TABLE account_tbl_alter (
    id          integer,
    flag        integer,
    name        varchar(64),
    email       varchar(128),
    password    varchar(32),
    magazine    integer
);
INSERT INTO account_tbl_alter SELECT *,1 AS magazine FROM account_tbl;

DROP TABLE account_tbl;
CREATE TABLE account_tbl (
    id          integer NOT NULL,
    flag        integer DEFAULT 1,
    name        varchar(64) NOT NULL,
    email       varchar(128) UNIQUE,
    password    varchar(32),
    magazine    integer DEFAULT 1,
    CONSTRAINT account_pky PRIMARY KEY (id)
);
INSERT INTO account_tbl SELECT * FROM account_tbl_alter;
DROP TABLE account_tbl_alter;


UPDATE
テーブルの行や項目の値を更新
UPDATE [ OR 衝突時アルゴリズム ] [データベース名 .] テーブル名
SET 代入式 [, 代入式]*
[WHERE 評価式] 
代入式
カラム名 = 評価式 
サンプル
UPDATE account_tbl SET magazine=0 WHERE email = 'yujiro@rakuto.net';

DELETE
テーブルから行を削除
DELETE FROM [データベース名 .] テーブル名 [WHERE 評価式] 
サンプル
DELETE FROM account_tbl WHERE flag = 0;

SELECT
テーブルやビューからの行の値を取得
SELECT [ALL | DISTINCT] 結果セット [FROM テーブル並び]
[WHERE 評価式]
[GROUP BY 評価式の並び]
[HAVING 評価式]
[合成演算子 SELECT句]*
[ORDER BY ソート評価式の並び]
[LIMIT 整数 [( OFFSET | , ) 整数]] 

・結果セット
結果のカラム [, 結果のカラム]* 

・結果のカラム
* | テーブル名 . * | 評価式 [ [AS] 文字列 ] 

・テーブル並び
テーブル名 [結合演算子 テーブル名 結合時の引数]* 

・テーブル名
テーブル名 [AS 別名] |
( SELECT ) [AS 別名] 

・結合演算子
 , | [NATURAL] [LEFT | RIGHT | FULL] [OUTER | INNER | CROSS] JOIN 

・結合時の引数
[ON 評価式] [USING ( IDの並び )] 

・ソート評価式の並び
評価式 [ソート順] [, 評価式 [ソート順]]* 

・ソート順
ASC | DESC 

・合成演算子
UNION | UNION ALL | INTERSECT | EXCEPT 
サンプル
最も簡単な表示クエリです。
SELECT * FROM sqlite_master;
SELECT sqlite_version(*);

都道府県テーブルを名前の順にソートします。
SELECT * FROM prefecture_tbl ORDER BY name;

結果の10行目から15行分を表示します。
SELECT * FROM prefecture_tbl LIMIT 15 OFFSET 10;

結果の結合
SELECT * FROM sqlite_master 
UNION ALL 
SELECT * FROM sqlite_temp_master;

アカウント管理テーブルとユーザー情報
テーブルを連結させます。
ユーザー情報と都道府県テーブルを外部
連結させます。
都道府県情報はユーザー情報に登録され
ていない場合があります。
SELECT
    usr.id,
    usr.name,
    pre.name as prefecture
FROM
    account_tbl AS acc,
    user_tbl AS usr 
    LEFT JOIN 
        prefecture_tbl AS pre 
        ON usr.prefecture = pre.id
WHERE
    acc.id = usr.account AND
    acc.flag = 1;