sqlite 常用命令
目录
1 安装/连接
关于 sqlite 的安装可以参考 SQLite 安装。
2 常用命令
sqlite3 # 进入 sqlite
sqlite3 mytest # 连接数据库,不存在新建
> .databases # 显示数据库名称及对应文件
main: /Users/weibin/mytest r/w
sqlite3 /path/to/your/database.db # 以在启动 SQLite 时通过指定数据库文件的路径来设置保存位置
> .output FILE # 将输出定向到 FILE
> .show # 显示已经设置的值
> .dump # 以 SQL 格式 dump 数据库
> .dump users # dump 某张表
> .backup FILE # 备份数据库到文件
> .quit # 退出
> .table # 查看所有的表
users books
> .schema users # 显示CREATE语句
CREATE TABLE users(name text PRIMARY KEY, age integer);
> .import FILE TABLE # 将文件的数据导入到表中。
> .head ON # 查询时显示列名称
> select * from users
name|age
Tom|18
Jack|20
> .mode line # 每一列单独占一行
> .mode column # 将每一列数据对齐显示,适合小型数据集的表格展示
3 常用语句
CREATE TABLE tab_name (
col1 col1_type PRIMARY KEY,
col2 INTEGER AUTOINCREMENT,
col3 col3_type NOT NULL,
.....
colN colN_type,
);
/* 常用类型:
TEXT 字符串, CHAR(100) 固长字符串
INTEGER 整型, BIGINT 长整型, REAL 实数,
BOOL 布尔值
BLOB 二进制
DATETIME 时间
PRIMARY KEY 标记主键,NOT NULL标记非空。AUTOINCREMENT 自增,只能用于整型。
CREATE TABLE users (
id INTEGER primary key AUTOINCREMENT,
name char(20) not null,
age INTEGER,
address char(100)
);
*/
3.1 新增
-- 单条
INSERT INTO tab_name VALUES (xx, xx)
-- 指定列名
INSERT INTO tab_name (col1, col3) VALUES (xx, xx)
-- 多条
INSERT INTO tab_name (col1, col2, col3) VALUES
(xx, xx, xx),
...
(xx, xx, xx);
3.2 删除/更新表
-- 删除表
DROP TABLE tab_name;
-- 新增列
ALTER TABLE ADD COLUMNS col_name col_type;
-- 重命名表
ALTER TABLE old_tab RENAME TO new_tab
-- 重命名列名(3.25.0+)
ALTER TABLE tab_name RENAME COLUMN old_col TO new_col
3.3 查询
-- 所有列
SELECT * FROM tab_name;
-- 去除重复
SELECT DISTINCT col1 FROM tab_name;
-- 统计个数
SELECT COUNT(*) FROM tab_name
-- 指定列
SELECT col1, col2 FROM table_name;
-- 带查询条件 >、<、=、LIKE、NOT、AND、OR 等
SELECT * FROM table_name WHERE col2 >= 18;
SELECT * FROM table_name
WHERE col2 >= 18 AND col1 LIKE %stu%;
-- 限制数量
SELECT * FROM table_name LIMIT 1;
-- GROUP BY
SELECT col1, count(*) FROM tab_name
WHERE [ conditions ]
GROUP BY col1
-- Having
SELECT col1, count(*) FROM tab_name
WHERE [ conditions ]
GROUP BY col1
HAVING [ conditions ]
-- 排序, DESC 降序,ASC 升序
SELECT * FROM table_name ORDER BY col2 DESC;
3.4 删除/更新
-- 删除满足条件的记录
DELETE FROM tab_name WHERE condition;
-- 更新记录
UPDATE tab_name SET col1=value1, col2=value2
-- 更新满足条件的记录
UPDATE tab_name
SET col1=value1, col2=value2
WHERE [ conditions ]
3.5 事务
-- 提交
BEGIN;
INSERT INTO ...
...
COMMIT;
-- 回滚
BEGIN;
...
ROLLBACK;
4 输出模式
> .mode csv # 设置输出模式为 csv
> select * from users
name,age
Tom,18
Jack,20