drop table if exists users;
create table if not exists users (
id integer primary key,
name varchar(255),
score integer,
email text unique
);
insert into users (email) values ('yamada@gmail.com');
insert into users (email) values ('yamada@gmail.com');
select * from users;
データの制約
drop table if exists users;
create table if not exists users (
id integer primary key,
name varchar(255) not null,
score integer default 10 check(score >= 0),
email text unique
);
insert into users (name, score) values ('yamada', -30);
select * from users;
select文
.headers on select id, name as user_name from users; .mode line select * from users; select * from users where score > 60; select * from users where score is null; select * from users where name = 'ito'; select * from users where name like '%a%'; select * from users where name like '%@%' escape '@'; select * from users where name glob '*i*'; select * from users where name glob '[ts]*';
mode .html, mode.columなどもあります。
order by, limit, offset, view
select * from users where score is not null order by score; select * from users where score is not null order by score desc; select * from users where score is not null order by score desc limit 3; select * from users where score is not null order by score desc limit 3 offset 2; create view hiscore as select * from users order by score desc limit 5; select * from hiscore; drop view if exists hiscore;
演算
.headers on .mode column select id, name, score + 10 from users; select count(id), max(score), min(score), avg(score) from users; select name, length(name), upper(name), substr(name, 2, 3) from users; select last_insert_rowid(); select random(); select * from users order by random() limit 1;
insert into users (name, score, team) values ('yamada', 30, 'tema-A');
insert into users (name, score, team) values ('yoshimoto', 55, 'tema-B');
insert into users (name, score, team) values ('ito', 22, 'tema-D');
insert into users (name, score, team) values ('sato', 18, 'tema-D');
insert into users (name, score, team) values ('kimura', 66, 'tema-A');
insert into users (name, score, team) values ('hayashi', 88, 'tema-B');
insert into users (name, score, team) values ('seto', 22, 'tema-C');
insert into users (name, score, team) values ('mimura', null, 'tema-C');
.headers on
.mode column
select team, avg(score) from users group by team;
select team, avg(score) from users group by team having avg(score) > 40;
select distinct team from users;
.headers on .mode column select id, name, score, case when score > 70 then 'A' when score > 50 then 'B' else 'C' end as rank from users;