sqlite3的学习使用--轻量级数据库


使用技巧如下:

打开一个已有的数据库,比如当前文件夹下面的cache.db

平时使用官方提供的sqlite3.exe工具来操作 sqlite的数据库
进入管理:

>.databases//显示所有数据库

>.tables //显示数据库中所有的表

>.schema tablename//显示表格结构 和MysqL的 SHOW Create TABLE tbl_name


>.output f:\\test.sql//导出当前数据库sql语句 和MysqLMysqLdump

>.dump

>.import f:\\test.sql//导入 //MysqL 用source


------------------------

导入
命令: .import
sqlite> .import 文件名 表名

注1: 不要忘了开头的点

注2: 这条语句不能用分号结束. 非sql不需要分号结束.
注3: 需要查看默认的分隔符separator. 必须一致. 如果不一致可能导致sqlite字段分割错误.
查看分隔符使用命令 .show,如果不一致可直接修改,比如:
sqlite>.separator ","
将分隔符转为逗号.

sqlite的简单使用

1 建立数据库

C:\sqlite> sqlite3.exe dbname.db

sqlite3.exe后面跟数据库文件

2 创建数据表

sqlite> create table users(userid varchar(20) PRIMARY KEY,...> age int,...> birthday datetime);

3 添加记录

insert into users values('wang',20,'1989-5-4');
insert into users values('li',22,'1987-11-16');

4 查询记录

select * from users order by birthday;

5 删除记录

delete from users where userid='wang';

6 退出sqlite

sqlite> .exit

sqlite数据库的数据结构是存贮在 "sqlite_master" 表中

具体命令可以输入 .help查看或参考帮助文档

sqlite详细使用:

(1)创建数据库
在命令行中切换到sqlite.exe所在的文件
在命令中键入sqlite3 test.db;即可创建了一个名为test.db的数据库
由于此时的数据库中没有任何表及数据存在,这时候是看不到test.db的,必须往里面插入一张表即可看到数据库

(2)创建表
create table Test(Id Integer primary key,value text);
此时即可完成表的创建,当把主键设为Integer时,则该主键为自动增长,插入数据时,可直接使用如下语句:
insert into Test values(null,'Acuzio');

(3)获取最后一次插入的主键: select last_insert_rowid();

(4)sqlite>.mode col
sqlite>.headers on
数据库查询的时候,显示行数和头!

(5)在DOS中,键入Ctrl+C,退出数据库,Unix中,使用Ctrl+D

(6)sqlite Master Table Schema
-----------------------------------------------------------------
Name Description
-----------------------------------------------------------------
type The object’s type (table,index,view,trigger)
name The object’s name
tbl_name The table the object is associated with
rootpage The object’s root page index in the database (where it begins)
sql The object’s sql definition (DDL)

eg.
sqlite> .mode col
sqlite> .headers on
sqlite> select type,name,tbl_name,sql from sqlite_master order by type;
这样就能看到所有数据库中的信息,表、索引、视图等等

(7)导出数据
.output [filename],导出到文件中,如果该文件不存在,则自动创建
.dump 导出数据命令
.output stdout 返回输出到屏幕(进行其他操作)

eg.
sqlite>.output Acuzio.sql
sqlite>.dump
sqlite>.output stdout
这样就可以把数据导入到Acuzio.sql

(8)导入数据
导入数据使用.read命令
eg.
如导入(7)中的数据
sqlite>.read Acuio.sql

(9)备份数据库
在切换到sqlite文件
sqlite3 test.db .dump > test.sql
如果在数据库
sqlite> .output file.sql
sqlite> .dump
sqlite> .exit

(10)导入数据库
在切换到sqlite文件
sqlite3 test.db < test.sql

(11)备份二进制格式数据库,vacuum:释放掉已经被删除的空间(数据和表等被删除,不会被清空空间)
sqlite3 test.db VACUUM
cp test.db test.backup

(12)获取数据库信息
如果想获得物理数据库结构的信息,可以去sqlite网站上下载sqlite Analyzer工具
使用: sqlite3_analyzer test.db

(13)其他的sqlite工具
sqlite Database Browser (http://sqlitebrowser.sourceforge.net)
sqlite Control Center (http://bobmanc.home.comcast.net/sqlitecc.html)
sqliteManager (www.sqlabs.net/sqlitemanager.PHP)

(13)sqlite 与其他数据库不同,它是以(;)来执行语句,而不是(go).

(14)sqlite注释(--)或(/* */)
eg.
-- This is a comment on one line
/* This is a comment spanning
two lines */

(15)创建表结构

CREATE [TEMP|TEMPORARY] TABLE table_name (column_definitions [,constraints]);

关键字TEMP、TEMPORARY表示创建的是临时表

(16)在sqlite中有5种基本类型:
Integer/Real/Text/Blob/Null

(17)确保唯一性可以用关键字UNIQUE
eg.
CREATE TABLE contacts ( id INTEGER PRIMARY KEY,
name TEXT NOT NULL COLLATE NOCASE,
phone TEXT NOT NULL DEFAULT 'UNKNOWN',
UNIQUE (name,phone) );

(18)修改
ALTER TABLE table { RENAME TO name | ADD COLUMN column_def }
eg.
sqlite> ALTER TABLE contacts
ADD COLUMN email TEXT NOT NULL DEFAULT '' COLLATE NOCASE;
sqlite> .schema contacts
CREATE TABLE contacts ( id INTEGER PRIMARY KEY,
email TEXT NOT NULL DEFAULT '' COLLATE NOCASE,51); font-family:Arial; font-size:14px; line-height:26px"> (19)查询
SELECT DISTINCT heading FROM tables WHERE predicate
GROUP BY columns HAVING predicate
ORDER BY columns LIMIT count,offset;

(20)Limit和Offset关键字 Limit 指返回记录的最大行数 Offset 指跳过多少行数据

相关文章

安装 在Windows上安装SQLite。 访问官网下载下Precompliled Binaries for Windows的两个压缩包。 创建s...
一、安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Windows下的包下...
实例: 会员信息管理 功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 6.查找会员  ...
关于SQLite SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、延迟时间和整...