SQLiteの基本操作 part.2(データベース、テーブル、レコード追加などのコマンド一覧)

ちょっと前に、「SQLiteの基本操作(データベース、テーブル、レコード追加などのコマンド一覧)」というエントリーを書かせていただきましたが、SQLiteでデータベース作成する機会が多く、勉強中ですので、またまた備忘録兼ねて記載させていただきます。

自動で日付を入力してくれる

CREATE TABLE テーブル名 (id INTERGER, date VARCHAR(16) DEFAULT (date()), name VARCHAR(20));

例:

CREATE TABLE db_data (id INTERGER, date VARCHAR(16) DEFAULT (date()), name VARCHAR(20));
INSERT INTO db_data (id, name) VALUES(1, "hogefuga");

カラムに同じを値を入力させない

CREATE TABLE テーブル名 (id INTERGER, name VARCHAR(20) UNIQUE);

例:

CREATE TABLE db_data (id INTERGER, name VARCHAR(20) UNIQUE);

プライマリキー(主キー)の設定

CREATE TABLE テーブル名 (id INTERGER PRIMARY KEY, name VARCHAR(20));

例:

CREATE TABLE db_data (id INTERGER PRIMARY KEY, name VARCHAR(20));

オートインクリメント

CREATE TABLE テーブル名 (id INTERGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20));

例:

CREATE TABLE db_data (id INTERGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20));

インデックスの作成

CREATE INDEX インデックス名 ON テーブル名(カラム名);

例:

CREATE INDEX idx ON db_data(id);

インデックスの削除

DROP INDEX インデックス名;

例:

DROP INDEX idx;

内部統合(インナージョイン)

SELECT カラム名 FROM 左テーブル JOIN 右テーブル ON 統合カラム1=統合カラム2;

例:

SELECT * FROM db_data1 JOIN db_data2 ON cat_id=cat_num;

左外部統合(レフトジョイン)

SELECT カラム名 FROM 左テーブル LEFT JOIN 右テーブル ON 統合カラム1=統合カラム2;

例:

SELECT * FROM db_data1 LEFT JOIN db_data2 ON cat_id=cat_num;

交差統合(クロスジョイン)

SELECT カラム名 FROM 左テーブル CROSS JOIN 右テーブル;

例:

SELECT * FROM db_data1 CROSS JOIN db_data2;

自己結合(セルフジョイン)

SELECT カラム名 FROM 左テーブル AS エイリアス名1 JOIN 右テーブル AS エイリアス名2 ON エイリアス名1.結合カラム1=エイリアス名2.結合カラム2

例:

SELECT main.id, main.name, sub.name FROM db_data AS main JOIN db_data AS sub ON main.num_id=sub.id;

和結合(ユニオン)

SELECT カラム名 FROM テーブル名1 UNION ALL SELECT カラム名 FROM テーブル名2;

例:

SELECT id, name FROM db_data1 UNION ALL SELECT * FROM db_data2;

積結合(インターセクト)

SELECT カラム名 FROM テーブル名1 INTERSECT SELECT カラム名 FROM テーブル名2;

例:

SELECT id, name FROM db_data1 INTERSECT SELECT * FROM db_data2;

差結合(エクセプト)

SELECT カラム名 FROM テーブル名1 EXCEPT SELECT カラム名 FROM テーブル名2;

例:

SELECT id, name FROM db_data1 EXCEPT SELECT * FROM db_data2;