sqlite3一些常用的命令 | 数据库论坛-大发黄金版app下载
1.创建数据库
没有进入sqlite: sqlite3 databasename.db
进入sqlite: .open test.db
2.展示db
.databases
3.退出
.quit
4.导出一个完整的数据库在一个文件中
test.db .dump > test.sql 将test.db 数据库导出到test.sql文件中
5.展示数据表
.tables
.schema 展示数据表详细信息
6.创建一个表来自另一个表的查询
create table user as select id,name,age,address from score;
但是这个表的id是没有主键的
7.将一个表的某个字段作为主键
创建一个新表定义主键
将原表的数据复制到新表
删除原表
将新表重新命名为原表
8.删除一个表中的某几列,不能直接删除
创建一个新表
将原表数据复制到对应的新表 insert into nscore(id,user_id,source) select id,id,source from score
删除原表
将新表重新命名为原表
9.给某个列作为index 索引 只能通过create index 来增加,不能在创建表的时候增加
create index idx_user_id on score(user_id);
10.修改数据表名
alter table nscore rename to score;
11.创建一个触发器 sqlite只支持for each row 不支持 for each statement,因此for each row是可选的
create trigger trigger_name
[before|after] event_name
on table_name
begin
– 触发器逻辑….
end;
create trigger trigger_name
after|before triggering_event
on table_name
for each row
begin
触发器中执行的sql语句; (这里的sql以;结尾)
end;
create trigger delete_user_delete_score
after delete
on user
for each row
begin
delete from score where id = old.id;
end;
create trigger trg_delete_user_delete_score
after delete
on user
for each row
begin
delete from score where user_id = old.id;
end;
create trigger trg_update_score_user_id
after update of id
on user
begin
update score set user_id = new.id where score.user_id = old.id;
end;
指定id 需要使用of id
在触发器中,old 和 new 是强制提供的,用于在特定行被操作时引用其旧值和新值。你不能直接引用行的原始表名来连接,这是设计决定,目的在于简化触发器的上下文和防止潜在的混淆。
12.创建一个视图
create [temp | temporary] view view_name as
select column1, column2…..
from table_name
where [condition];
create view user_info as
select user.*,score.source from user join score where user.id = score.user_id
13.连表操作
inner join 这个是求交集
select
company.*,
department.dept
from
company
inner join department on company.id = department.emp_id;
left outer join 这个和left join一样
select
company.*,
department.*
from
company
left outer join department on company.id = department.emp_id;
本作品采用《cc 协议》,转载必须注明作者和本文链接