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;