sqlite3一些常用的命令
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 协议》,转载必须注明作者和本文链接