5.4.2. sqlite基本命令¶
创建、进入指定db:
// 进入指定目录
$> cd xxxx
// 创建/进入指定db
$> sqlite3 test.db // 代替create database和use db命令
基本命令:
.databases
.tables
.exit/.quit
.header on/off --开启/关闭头显示
.echo ON|OFF --
.timer ON|OFF
.schema <tableName> --查看表结构
.read <fileName> --运行<fileName>里的sql
.dbinfo ?DB? -- 查看数据库情况
表相关:
-- 创建表
CREATE TABLE company(
# 注意1: mysql是AUTO_INCREMENT
# 注意2:AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
KEY idx_name(name));
-- 删除表
DROP TABLE database_name.table_name;
增删改查:
select * from company where type="table";
select * from company where type="table" and name="<tableName>";
update users set user_admin=1 where id=123;
数据导出:
.output <fileName> --設定输出到<fileName>
select * from <tableName> --输出会写入到<fileName>文件中
.output stdout --恢复
数据库清理:
VACUUM
VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件
这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构。
// 手动 VACUUM
1. 在命令提示符中对整个数据库发出 VACUUM 命令
$sqlite3 database_name "VACUUM;"
2. SQLite 提示符中运行 VACUUM
sqlite> VACUUM;
3. 在特定的表上运行 VACUUM
sqlite> VACUUM table_name;
// 自动 VACUUM
SQLite 的 Auto-VACUUM 与 VACUUM 不大一样,它只是把空闲页移到数据库末尾,从而减小数据库大小
通过这样做,它可以明显地把数据库碎片化,而 VACUUM 则是反碎片化。所以 Auto-VACUUM 只会让数据库更小
1. 在 SQLite 提示符中,您可以通过下面的编译运行,启用/禁用 SQLite 的 Auto-VACUUM:
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 1 means enable incremental vacuum
sqlite> PRAGMA auto_vacuum = FULL; -- 2 means enable full auto vacuum
2. 从命令提示符中运行下面的命令来检查 auto-vacuum 设置
$sqlite3 database_name "PRAGMA auto_vacuum;"
// 脚本自动执行
sqlite3 /var/lib/grafana/grafana.db << EOF
VACUUM;
.quit
EOF