LotosLabo

プログラミング技術とか気になった情報を載せていきます

SQLiteについて

f:id:lo25131:20140329135046j:plain

SQLiteとは


サーバとして動作させるのではなく、単独のアプリケーションとして動作させることが可能です。
比較的中小規模の開発に向いており、スマートフォン等のアプリのデータベースの組み込みに用いられます。


開発環境

SQLiteはこちらよりインストールできます。

http://www.sqlite.org/index.html

こちらのDownloadタブより、Precompiled Binaries For Windowssqlite-shell~というのをクリックしてインストールします。

sqliteの起動にはコマンドプロンプトを使用していきます。


sqliteを始める


sqliteを保存したファイルにコマンド・ラインでcdコマンドで移動し、
その中のsqlite3.exeを起動します。


データベースの作成

sqlite3 データベース名.sqlite3

でデータベースを作成します。

例:

sqlite3 test.sqlite3


f:id:lo25131:20140329150509j:plain


終了するには .exit で出来ます。


sqlite基本コマンド

テーブル処理

テーブルを作成

create table テーブル名;

例:
create table sampletable;


テーブルの削除

drop table テーブル名;

例:
drop table sampletable;


テーブルの一覧を見る

.tables

※.から始まるコマンドは ; が要りません。



テーブルの構造を見る

.schema テーブル名


すべてのテーブルの構造を見る

.schema


テーブルの変更

テーブルの名前を変更


alter table テーブル名 rename to 新しいテーブル名;

例:
alter table sampletable rename to sampletable1;

カラムを追加する


alter table テーブル名 add column 追加するカラム;

例:
alter table sampletable add column password;


データ型の指定


NULL 空
INTEGER 整数値
REAL 小数の入った数値
TEXT 文字列
BLOB(Binary Large Object) バイナリ

※データ型は指定できますが、必須ではありません。


例:
create table sampletable(name text, email text);


SQLiteではデータ型を指定すると、それになるように努力はするが確約しないという特徴がある。
つまり、うまく変換出来ない場合はそのままになってしまうということ。

その他の設定

IDに自動連番をつける

primary key autoincrement

例:
id integer primary key autoincrement;

空にならないようにする

not null

例:
name text not null;

重複しないようにする

unique

例:
email text unique;

デフォルト値を指定

default 数値

例:
age integer default 20;

索引(インデックスをつける)

インデックス カラム名

例:
create index age on users(age);



テーブルの操作

データを挿入する

insert into テーブル名(カラム1,カラム2) values(値1,値2);

例:
insert into sampletable(name,emails,age) values('lotos','lotos.welt@gmail.com'.21);


データを抽出する

すべてを抽出

select * from テーブル名;

例:
select * from sampletable;


指定して抽出

select カラム名 from テーブル名;

例:
select name from sampletable;


並び替えて抽出

小さい順番に並び替える

order by カラム名

例:
select * from sampletable order by score;


大きい順番に並び替える

order by カラム名 desc

例:
select * from sampletable order by score desc;

制限して抽出

limit 数値

例:
select * from sampletable score limit 3;

条件をつける

where カラム名 数値(テキストでも)
例:
select * from sampletable where score >= 300;

~から始める

like 'abc%'

例:
select * from sampletable where name like 'abc&';

nameがabcから始まる人を抽出


関数による抽出

件数の取得


count(*)

例:
select count(*) from sampletable;

最大値を取る

max(カラム名)

例:
select max(score) from sampletable;

最小値をとる

min(カラム名)

例:
select min(score) from sampletable;

平均値をとる

avg(カラム名)

例:
select avg(score) from sampletable;

合計値をとる

sum(カラム名)

例:
select sum(score) from sampletable;

ランダムで表示

select random();

文字列の長さを取得

length(カラム名)

例:
select name, length(name) from sampletable;

型表示させる

カラム名.typeof(カラム名)

例:
select name.typeof(name) from sampletable;



日付・時刻を使用

現在時刻を取得

current_time

例:
select current_time;


現在日付を取得

current_date

例:
select current_date;


両方を取得

current_timestamp

例:
select current_timestamp;


日本語に直す

例:
select strftime('%Y年', current_timestamp);



データを更新する


update テーブル名 set カラム名 = 新しいデータ where カラム名 = '古いデータ'

例:
update sampletable set name = 'lotos1' where name = 'lotos';


データを削除する


delete from テーブル名 条件を指定

例: スコアが100点以下の人
delete from sampletable where score <= 100;