.headers on
.mode column
update users set score = 0, name ='* ' || name where score < 60;
delete from users where score = 0;
select * from users;
[/sql]
transaction
[sql]
begin transaction;
update users set score = score - 10 where name = 'sato';
update users set score = score + 10 where name = 'kimura';
commit;
select * from users;
rollback;
[/sql]
trigger
[sql]
.headers on
.mode column
create table messages (message);
create trigger new_winner update of score on users when new.score > 100
begin
insert into messages (message) values (
'name: ' || new name ||
' ' || old. score ||
' ->' || new.score
);
end;
update users set score = score + 30;
select * from messages;
index
create index score_index on users(score); create unique index name_index on users(name); .indices users .schema users drop index if exists score_index; drop index if exists name_index;
日時
select datetime('now', '+09:00:00');
select date('2016-12-01', '+3 months', 'start of month', '-1 day');
create table if not exists users (
id integer primary key,
name varchar(255) not null,
score integer default 10 check(score >= 0),
team text,
created datetime default (datetime('now', '+09:00:00'))
);
複数テーブルの作成
drop table if exists posts;
create table if not exists posts (
id integer primary key,
title text,
body text,
created datetime default (datetime('now', '+09:00:00'))
);
insert into posts (id, title, body) values (1, 't1', 'b1');
insert into posts (id, title, body) values (2, 't2', 'b2');
drop table if exists comments;
create table if not exists comments (
id integer primary key,
post_id integer,
comment text,
created datetime default (datetime('now', '+09:00:00'))
);
insert into comments (id, post_id, comment) values (1, 1, 'c1');
insert into comments (id, post_id, comment) values (2, 1, 'c2');
.headers on
.mode column
select * from posts;
select * from comments;
内部結合 inner join、外部結合 left outer join、交差結合 cross join
select * from posts inner join comments on posts.id = comments.post_id; select * from posts join comments on posts.id = comments.post_id; select posts.id, posts.title, comment from posts join comments on posts.id = comments.post_id; select * from posts left outer join comments on posts.id = comments.post_id; select * from posts cross join comments;
row id ※integer primary key -> row id
select rowid, * from users;
dump
.output users.dump.sql .dump users
外部データの取り込み
drop table if exists users;
create table users (
id integer primary key,
name,
score
);
insert into users (name, score) values ('a', 10);
insert into users (name, score) values ('b', 20);
insert into users (name, score) values ('c', 30);
create table temp(name, score);
.mode csv
.import users.csv temp
insert into users(name, score) select name, score from temp;
select * from users;
drop table temp;
.mode csv
.output users_out.csv
select * from users;