数据库操作
查看数据库列表
[root@liqiang.io]# sqlite3
sqlite> .databases
main: "" r/w
表操作
元数据管理
查看所有表名及字段名
[root@liqiang.io]# sqlite3
# 查询有哪些表
sqlite> .tables
sqlite> select name from sqlite_master where type='table' order by name;
# 查询出某个表的所有字段信息
sqlite> PRAGMA table_info([tablename])
查看表的结构
[root@liqiang.io]# sqlite3
sqlite> .schema tag
CREATE TABLE tag( id INTEGER primary key autoincrement, name TEXT, monkeyID TEXT);
sqlite> PRAGMA table_info(tag);
查询某张表是否存在
[root@liqiang.io]# sqlite3
sqlite> SELECT COUNT(*) FROM sqlite_master where type='table' and name='表名';
表操作
创建自增ID
[root@liqiang.io]# sqlite3
sqlite> CREATE TABLE tag(
id INTEGER PRIMARY KEY AUTO_INCREMENT
);
创建一个表
# 创建一张表
CREATE TABLE contacts (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL COLLATE NOCASE,
phone TEXT NOT NULL DEFAULT 'UNKNOWN',
UNIQUE (name,phone)
);
删除一个表
# 删除一张表
DROP TABLE contacts
# 修改一张表
## 修改表名
ALTER TABLE post RENAME TO tmp_post;
## 增加一列
ALTER TABLE contacts ADD COLUMN DisplayOrder INT DEFAULT(0)
增加字段
ALTER TABLE tag ADD COLUMN monkeyID TEXT NOT NULL default '';
- 删除和修改字段都得通过重做表来实现
数据增删改查
插入数据
[root@liqiang.io]# sqlite3
sqlite> INSERT INTO table(col1, col2, col3) VALUES('1', '2', '3');
删除数据
[root@liqiang.io]# sqlite3
sqlite> DELTE FROM table WHERE id = 1;
修改数据
[root@liqiang.io]# sqlite3
sqlite> UPDATE table SET col1='2' WHERE id=1;
查询数据
[root@liqiang.io]# sqlite3
sqlite> SELECT id, col1 FROM table WHERE id = 1;
编程操作
Python 操作 Sqlite3
[root@liqiang.io]# cat sqlite_demo.py
# 打开连接
conn = sqlite3.connect('./db.sqlite3')
# 打开游标
c = conn.cursor()
# 执行 SQL
c.execute( SELECT * FROM TABLE)
# 获取结果
c.fetchall()
Golang 操作 Sqlite3
From: simple.go
[root@liqiang.io]# cat sqlite_demo.go
db, err := sql.Open("sqlite3", "./foo.db")
defer db.Close()
// 创建表
sqlStmt := `create table foo (id integer not null primary key, name text);
delete from foo;`
_, err = db.Exec(sqlStmt)
// 新增操作(事务操作)
tx, err := db.Begin()
stmt, err := tx.Prepare("insert into foo(id, name) values(?, ?)")
defer stmt.Close()
_, err = stmt.Exec(i, fmt.Sprintf("こんにちは世界%03d", i))
err = tx.Commit()
// 查询操作
rows, err := db.Query("select id, name from foo")
defer rows.Close()
for rows.Next() {
var id int
var name string
err = rows.Scan(&id, &name)
}
// 删除操作
_, err = db.Exec("delete from foo")