SQLite 简单教程
来源:互联网 发布:黄石弓箭 淘宝 编辑:程序博客网 时间:2024/05/16 15:15
入门
使用sqlite,需要在命令行(sqlite3 程序自行到官方网站下载)输入"sqlite3" 后跟 SQLite 数据库文件名,如果文件不存在就会自动新建一个新的数据库。然后你可以直接输入SQL语句,再按下"Enter"键来执行。
例如,新建一个名为 "ex1"的 SQLite 数据库,再为它新建一个 "tb1" 的数据表,你可以这样做:
$ sqlite3 ex1
SQLite version 3.3.10
Enter ".help" for instructions
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
你可以输入系统的结束字符(通常使用 Control-D)或者中断字符(通常使用 Control-C)来结束 sqlite3 程序。
你要确保在每条SQL语句后面输入分号,Sqlite3 会寻找分号(;)来识别SQL语句是否完成。如果你漏掉了分号,sqlite3 会提示你继续输入,这个特性允许你输入多行的SQL命令。例如:
sqlite> CREATE TABLE tbl2 (
...> f1 varchar(30) primary key,
...> f2 text,
...> f3 real
...> );
sqlite>
查询 SQLITE_MASTER 表
一个SQLite数据库的数据结构是存贮在 "sqlite_master" 表中。你可以像其他数据表一样对 sqlite_master 表执行 “SELECT” 语句,例如:
$ sqlite3 ex1
SQlite vresion 3.3.10
Enter ".help" for instructions
sqlite> select * from sqlite_master;
type = table
name = tbl1
tbl_name = tbl1
rootpage = 3
sql = create table tbl1(one varchar(10), two smallint)
sqlite>
但是你不能够对sqlite_master 表执行 DROP TABLE, UPDATE, INSERT or DELETE ,当你创建或者删除表的时候,sqlite_master 表会自动更新。你不能手工改变 sqlite_master 表。
临时表的结构不会存贮到 sqlite_master 表中,临时表是存贮在另一个特殊的表,叫做 "sqlite_temp_master"。"sqlite_temp_master" 表本身就是临时的。
将结果写到文件
默认情况下,sqlite3会将结果发送到标准输出,你可以使用 ".output" 来改变,只是将输出到的文件名作为参数传递给 .output,所有后面的查询结果都会写到文件里。开头使用 ".output stdout" 会再次写到标准输出,例如:
sqlite> .mode list
sqlite> .separator |
sqlite> .output test_file_1.txt
sqlite> select * from tbl1;
sqlite> .exit
$ cat test_file_1.txt
hello|10
goodbye|20
$
查询数据库结构
sqlite3 提供了很多方便的命令用来查看数据库的结构,这些命令只是提供一个缩写。
例如,查看数据库的数据表的一个列表,你可以输入 ".tables":
sqlite> .tables
tbl1
tbl2
sqlite>
".tables" 命令和一下的查询相似:
SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1
事实上,如果你查看 sqlite3 的源代码(在 /src/shell.c 中),你会找到上面具体查询。
".indices" 命令以相似的方法列出一个特殊表的索引。".indices" 命令以一个数据表的名字作为参数。左后是".schema" 命令,不带参数的 .schema 命令会显示用来创建数据库的 “CREATE TABLE and CREATEINDEX” 语句,如果你给一个表名为参数,他会显示用来创建表和索引(如果有的话)的 CREATE 语句。
sqlite> .schema
create table tbl1(one varchar(10), two smallint)
CREATE TABLE tbl2 (
f1 varchar(30) primary key,
f2 text,
f3 real
)
sqlite> .schema tbl2
CREATE TABLE tbl2 (
f1 varchar(30) primary key,
f2 text,
f3 real
)
在查询中使用 "%s" 来代替你的参数,可以让你查看数据库子集的结构。
sqlite> .schema %abc%
备份数据库到 ASCII 码的文本文件
使用 ".dump" 命令来导出数据库的内容到ASCII 文本文件。这个文件可以被还原回原来sqlite3的数据库。
备份数据库的一个好方法:
$ echo '.dump' | sqlite3 ex1 | gzip -c >ex1.dump.gz
这里会生成一个名字为 ex1.dump.gz 的文件,这个文件包含你以后需要重构数据库的所有内容,为了重构这个数据可,你需要输入:
$ zcat ex1.dump.gz | sqlite3 ex2
这个文本的格式是纯 SQL ,所以你也能够使用 .dump 命令来导出一个 SQLite 数据库到其他的流行的数据库引擎,像这样:
$ createdb ex2
$ sqlite3 ex1 .dump | psql ex2
其他sqlite的特别用法
sqlite可以在shell底下直接执行命令:
sqlite3 film.db "select * from film;"
输出 HTML 表格:
sqlite3 -html film.db "select * from film;"
将数据库「倒出来」:
sqlite3 film.db ".dump" > output.sql
利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库备份了):
sqlite3 film.db < output.sql
在大量插入资料时,你可能会需要先打这个指令:
begin;
插入完资料后要记得打这个指令,资料才会写进数据库中:
commit;
- SQLite 简单教程
- SQLite 简单教程
- SQLite 简单教程
- SQLite简单教程
- SQLite简单教程
- SQLite简单教程
- SQLite简单教程
- SQLite简单教程
- SQLite教程
- SQLite 教程
- SQLite 教程
- SQLite教程
- SQLite教程
- Sqlite教程
- SQLite 教程
- sqlite 教程
- SQLite 教程
- 简单的在Java中使用SQLite的教程
- 全面解读WM_NOTIFY
- 郁闷的一周
- Alternativa 3D 7 免费
- 2010年最后一次暴走——西溪湿地
- 郁闷,今天学习数据结构的链表,结果被模板给郁闷住了,动手能力还是要加强
- SQLite 简单教程
- 错误1075:依存服务不存在, 或已标记为删除(arcgis server启动不了弹出的错误)
- Oracle查询多行处理等总结(来自一DBA)
- Windows 控件的消息反射
- 关于张老师java视频的学习(十二)
- 关联,聚合,组合的区别及C++实现
- processes与sessions参数的学习
- error C4430: 缺少类型说明符
- 系统阿....