Sqlite3基本命令
连接数据库文件(xxxx.db可以是一个不存在的文件,当进入sqlite里并在里面创建表后,xxxx.db会自动生成)
sqlite3 xxxx.db
进入之后是这样的
sqlite>
以下所有命令都是进入sqlite后执行的
查看帮助
.help
查看数据库信息
.database
查看数据库有什么表
.tables
列出当前显示格式的配置
.show
设置列显示宽度为2
.width 2
设置显示模式为list
或column
(实际上没什么差别,还是乱)
# 设置显示模式为list
.mode list
# 设置显示模式为 column
.mode column
设置分隔符(当显示模式为list
时,各列之间是有分隔符的,默认分隔符是|
)
.separator :
退出sqlite
.exit
查看表结构1
PRAGMA TABLE_INFO(products_shopify);
查看表结构2(实际上是看建表语句)
# 查看所有表的建表语句
.schema
# 查看指定表建表语句
.schema 表名;
查看表结构3(实际上是看建表语句,一般情况下type="table"
也可以不写)
select * from sqlite_master where type="table" and name = "表名";
以sql语句形式导出表内容
# 先设置把输出内容重定向到指定文件,这一步会创建xxx.sql这个文件(但如果你自己去创建是不行的)
# 不能用 ~之类的符号代表家目录,必须写绝对路径
.output /path/to/xxx.sql
# 再用.dump输出指定表(如果前面没有用.output,则.dump会把表数据全部输出到终端上)
.dump <表名>
设置主键自增(必须注意在sqlite3里INTEGER
与int
不同,设置自增主键必须用INTEGER
类型)
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
sqlite3不支持drop column
(即不支持删除字段),要用复制表的方式解决
# 把原来复制一份,但是不复制要删除的那个字段
create table temp as (select recordId, customer, place, time from record);
# 删除原表
drop table record;
# 把复制的表重命名为原表的表名
alter table temp rename to record;
sqlite3有limit
关键字,所以查询分页是可以用limit的。其它的基本都跟mysql类似(注意所有sql语句都要以;
结束,有.
开头的指令不用分号结束)。
觉得文章对你有用的话鼓励一下我吧