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

在触发器中,OLDNEW 是强制提供的,用于在特定行被操作时引用其旧值和新值。你不能直接引用行的原始表名来连接,这是设计决定,目的在于简化触发器的上下文和防止潜在的混淆。

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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!