本文只是对于sqlite的学习做一个最基础的总结,如果要系统的学习sqlite超级推荐这个网站:http://www.runoob.com/sqlite/sqlite-tutorial.html
下载安装sqlite
去sqlite官方首页下载想要的版本的sqlite源码包
[lwn@localhost sqlite]$ wget http://www.sqlite.org/sqlite-3.6.16.tar.gz
进入下载目录,解压文件sqlite-3.6.16.tar.gz解压后生成sqlite-3.6.16目录. cd 进入sqlite-3.6.16
[lwn@localhost sqlite]$ tar -xzvf sqlite-3.6.16.tar.gz
[lwn@localhost sqlite]$ cd sqlite-3.6.16
执行配置脚本,生成相关文件之后使用make命令编译
[lwn@localhost sqlite-3.6.16]$ ./configure
[lwn@localhost sqlite-3.6.16]$ make
[lwn@localhost sqlite-3.6.16]$ sudo make install
安装完成之后会在sqlite-3.6.16目录下生成sqlite3等文件,
测试
创建数据库
在任意目录下新建一个数据库,比如test.db ,
[lwn@localhost sqlite_test]$ sqlite3 test.db
出现如下提示:
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
输入.help可以看到命令列表。
help命令中英文对照表:
命令 | 描述 |
---|---|
.backup ?DB? FILE | 备份 DB 数据库(默认是 “main”)到 FILE 文件。 |
.bail ON|OFF | 发生错误后停止。默认为 OFF。 |
.databases | 列出附加数据库的名称和文件。 |
.dump ?TABLE? | 以 SQL 文本格式转储数据库。如果指定了 TABLE 表,则只转储匹配 LIKE 模式的 TABLE 表。 |
.echo ON|OFF | 开启或关闭 echo 命令。 |
.exit | 退出 SQLite 提示符。 |
.explain ON|OFF | 开启或关闭适合于 EXPLAIN 的输出模式。如果没有带参数,则为 EXPLAIN on,及开启 EXPLAIN。 |
.header(s) ON|OFF | 开启或关闭头部显示。 |
.help | 显示消息。 |
.import FILE TABLE | 导入来自 FILE 文件的数据到 TABLE 表中。 |
.indices ?TABLE? | 显示所有索引的名称。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表的索引。 |
.load FILE ?ENTRY? | 加载一个扩展库。 |
.log FILE|off | 开启或关闭日志。FILE 文件可以是 stderr(标准错误)/stdout(标准输出)。 |
.mode MODE | 设置输出模式 |
.nullvalue STRING | 在 NULL 值的地方输出 STRING 字符串。 |
.output FILENAME | 发送输出到 FILENAME 文件。 |
.output stdout | 发送输出到屏幕。 |
.print STRING… | 逐字地输出 STRING 字符串。 |
.prompt MAIN CONTINUE | 替换标准提示符。 |
.quit | 退出 SQLite 提示符。 |
.read FILENAME | 执行 FILENAME 文件中的 SQL。 |
.schema ?TABLE? | 显示 CREATE 语句。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表。 |
.separator STRING | 改变输出模式和 .import 所使用的分隔符。 |
.show | 显示各种设置的当前值。 |
.stats ON | OFF |
.tables ?PATTERN? | 列出匹配 LIKE 模式的表的名称。 |
.timeout MS | 尝试打开锁定的表 MS 毫秒。 |
.width NUM NUM | 为 “column” 模式设置列宽度。 |
.timer ON | OFF |
在数据库文件中创建一张表COMPANY
用sql语句create table tab_name创建表,tab_name为表的名字,例如:创建一个名为COMPANY的表
sqlite> CREATE TABLE COMPANY(
>ID INT PRIMARY KEY NOT NULL,
>NAME TEXT NOT NULL,
>AGE INT NOT NULL,
>ADDRESS CHAR(50),
>SALARY REAL
>);
用tables命令可以查看我们创建的表
sqlite> .tables
COMPANY
插入数据
用 insert into tab_name values()语句向已经创建的表中插入数据
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)VALUES (2, 'Allen', 25, 'Texa', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)VALUES (3, 'Teddy', 23, 'Norway', 25000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 );
查看表中数据
输入sql语句select * from tab_name; 可以查看表中的数据.
sqlite> .mode colum /*竖行显示*/
sqlite> .header on/*显示表头*/
sqlite> select * from COMPANY; /*注意sql命令末尾的分号";"不能丢。*/
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texa 15000.0
3 Teddy 23 Norway 25000.0
4 Mark 25 Rich-Mond 65000.0
可以用where关键字条件查找,比如查找年龄在30岁以下的
sqlite> select * from COMPANY where AGE<30;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texa 15000.0
3 Teddy 23 Norway 25000.0
4 Mark 25 Rich-Mond 65000.0
where关键字还可以搭配like,各种运算符等使用。这里不一一列举了。
更新表中数据
如果表中的数据发生变化我们用update命令更新表中的数据
例如Allen搬家啦,从Texas搬到了Newyork。
sqlite> update COMPANY set ADDRESS = 'Newyork' where NAME = 'Allen';
sqlite> select * from COMPANY where NAME = 'Allen';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Newyork 15000.0
看看,Allen地址是不是变啦。
删除表中的记录
用delect语句来删除表中的记录
例如:如果Mark从公司离职了,我们要把他的信息删除掉,命令如下:
sqlite> delete from COMPANY where NAME = 'Mark';
sqlite> select * from COMPANY;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Newyork 15000.0
3 Teddy 23 Norway 25000.0
sqlite>
删除之后是不是查询不到Mark的记录了呢。
删除表
刚刚是删除了表中的记录用delete语句,那如果要删除整张表就用drop语句
例如:由于公司发展不好,需要将该部门解散。需要删掉这个部门所有的信息即删除这张表。
sqlite> .tables
COMPANY
sqlite> drop table COMPANY;
sqlite> .tables
sqlite>
数据库的基本操作都在这里了,懂了这些基本操作以后才能方便我们后续编程。