数据库操作

查看数据库列表

  1. [root@liqiang.io]# sqlite3
  2. sqlite> .databases
  3. main: "" r/w

表操作

元数据管理

查看所有表名及字段名

  1. [root@liqiang.io]# sqlite3
  2. # 查询有哪些表
  3. sqlite> .tables
  4. sqlite> select name from sqlite_master where type='table' order by name;
  5. # 查询出某个表的所有字段信息
  6. sqlite> PRAGMA table_info([tablename])

查看表的结构

  1. [root@liqiang.io]# sqlite3
  2. sqlite> .schema tag
  3. CREATE TABLE tag( id INTEGER primary key autoincrement, name TEXT, monkeyID TEXT);
  4. sqlite> PRAGMA table_info(tag);

查询某张表是否存在

  1. [root@liqiang.io]# sqlite3
  2. sqlite> SELECT COUNT(*) FROM sqlite_master where type='table' and name='表名';

表操作

创建自增ID

  1. [root@liqiang.io]# sqlite3
  2. sqlite> CREATE TABLE tag(
  3. id INTEGER PRIMARY KEY AUTO_INCREMENT
  4. );

创建一个表

  1. # 创建一张表
  2. CREATE TABLE contacts (
  3. id INTEGER PRIMARY KEY,
  4. name TEXT NOT NULL COLLATE NOCASE,
  5. phone TEXT NOT NULL DEFAULT 'UNKNOWN',
  6. UNIQUE (name,phone)
  7. );

删除一个表

  1. # 删除一张表
  2. DROP TABLE contacts
  3. # 修改一张表
  4. ## 修改表名
  5. ALTER TABLE post RENAME TO tmp_post;
  6. ## 增加一列
  7. ALTER TABLE contacts ADD COLUMN DisplayOrder INT DEFAULT(0)

增加字段

  1. ALTER TABLE tag ADD COLUMN monkeyID TEXT NOT NULL default '';

数据增删改查

插入数据

  1. [root@liqiang.io]# sqlite3
  2. sqlite> INSERT INTO table(col1, col2, col3) VALUES('1', '2', '3');

删除数据

  1. [root@liqiang.io]# sqlite3
  2. sqlite> DELTE FROM table WHERE id = 1;

修改数据

  1. [root@liqiang.io]# sqlite3
  2. sqlite> UPDATE table SET col1='2' WHERE id=1;

查询数据

  1. [root@liqiang.io]# sqlite3
  2. sqlite> SELECT id, col1 FROM table WHERE id = 1;

编程操作

Python 操作 Sqlite3

  1. [root@liqiang.io]# cat sqlite_demo.py
  2. # 打开连接
  3. conn = sqlite3.connect('./db.sqlite3')
  4. # 打开游标
  5. c = conn.cursor()
  6. # 执行 SQL
  7. c.execute( SELECT * FROM TABLE)
  8. # 获取结果
  9. c.fetchall()

Golang 操作 Sqlite3

From: simple.go

  1. [root@liqiang.io]# cat sqlite_demo.go
  2. db, err := sql.Open("sqlite3", "./foo.db")
  3. defer db.Close()
  4. // 创建表
  5. sqlStmt := `create table foo (id integer not null primary key, name text);
  6. delete from foo;`
  7. _, err = db.Exec(sqlStmt)
  8. // 新增操作(事务操作)
  9. tx, err := db.Begin()
  10. stmt, err := tx.Prepare("insert into foo(id, name) values(?, ?)")
  11. defer stmt.Close()
  12. _, err = stmt.Exec(i, fmt.Sprintf("こんにちは世界%03d", i))
  13. err = tx.Commit()
  14. // 查询操作
  15. rows, err := db.Query("select id, name from foo")
  16. defer rows.Close()
  17. for rows.Next() {
  18. var id int
  19. var name string
  20. err = rows.Scan(&id, &name)
  21. }
  22. // 删除操作
  23. _, err = db.Exec("delete from foo")