简介:
SQLite 是实现了SQL 92标准的一个大子集的嵌入式数据库.其以在一个库中组合了数据库引擎和接口,能将所有数据存储于单个文件中而著名.我觉得SQLite的功能一定程度上居于MySQL 和PostgreSQL之间.尽管如此,在性能上面,SQLite常常快2-3倍 (甚至更多).这利益于其高度调整了的内部架构,因为它除去了服务器端到客户端和客户端到服务器端的通信。
而令人印象深刻的特点是你可将你的整个数据库系统放在其中.利用非常高效的内存组织,SQLite只需在很小的内存中维护其很小的尺寸,远远比其它任何数据库系统都小.这些特点使得其成为在需要高效地应用数据库的任务中一个非常方便的工具.
SQLite优势:
一 . 除了速度和效率,SQLite还有其它好多的优势使得其能成为许多任务中一个理想的解决方案.因为SQLite的数据库都是简单文件,因此无须一个管理队伍花时间来构造复杂的权限结构来保护用户的数据库.因为权限通过文件系统自动进行.这也同时意味着(数据库空间的大小只与环境有关,与本身无关)无段特殊的规则来了解用户磁盘空间.用户可以从创建他们想要的任意多的数据库和对其对这些数据库的绝对控制权而得到好处.
二 . 数据库就是一个文件的事实使用SQLite可以轻易地在服务器间移动.SQLite也除去了需要大量内存和其它系统资源的伺候进程.即使当数据库在大量地使用时也是如此.
1,安装
下载地址: Wget http://www.sqlite.org/2014/sqlite-autoconf-3080403.tar.gz
开始安装:
tar xvfzsqlite-autoconf-3080403.tar.gz
cd sqlite-autoconf-3080403
./configure --prefix=/usr/local
make
make install
2,登录
不过因为一般centos的linux系统自带了版本比较低的sqlite,所以你不安装,直接运行sqlite3就可以登录进去:
[root@mysqlvm2 ~]# sqlite3
SQLite version 3.3.6.32014-04-03 16:53:12
Enter ".help" forinstructions
Enter SQL statements terminatedwith a ";"
sqlite> .exit
[root@mysqlvm2 ~]#
为了使用新版本,我们这里用自己的全路径或者在设置PATH路径
[root@mysqlvm2 ~]#/root/sqlite-autoconf-3080403/sqlite3
SQLite version 3.8.4.32014-04-03 16:53:12
Enter ".help" forusage hints.
Connected to a transientin-memory database.
Use ".open FILENAME"to reopen on a persistent database.
sqlite>
3,创建数据库和表
3.1,默认登录
默认登录时,临时操作的是临时内存库,等退出的时候,创建的临时库以及表以及数据会被释放的,使用.databases命令展示的时候会看到file列下面是null的没有数据库记录,如下所示:
[root@localhostsqlite-autoconf-3080403]# sqlite3
SQLite version 3.8.4.32014-04-03 16:53:12
Enter ".help" forusage hints.
Connected to a transientin-memory database.
Use ".open FILENAME"to reopen on a persistent database.
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main
sqlite>
sqlite> .tables
sqlite> create table t1(idint);
sqlite> insert into t1 select1;
sqlite> insert into t1 select2;
sqlite> select * from t1;
1
2
sqlite> .table
t1
sqlite>
我们创建了一张表t1,并且录入了数据,退出后重新登录,表t1已经不存在了,如下所示:
[root@localhostsqlite-autoconf-3080403]# sqlite3
SQLite version 3.8.4.32014-04-03 16:53:12
Enter ".help" forusage hints.
Connected to a transientin-memory database.
Use ".open FILENAME"to reopen on a persistent database.
sqlite> .table
sqlite> .tables
sqlite> select * from t1;
Error: no such table: t1
sqlite>
3.2,创建数据库
直接登录时候带上数据库名tim,就表示建库tim,注意:这时tim数据库确实已经创建好了注意:这时test.db数据库确实已经创建好了但是这时还是看不到这个数据库,还是个临时的,所以要输入SQL命令 ,等表格创建完后关闭sqlite3退出来的时候,就可以看到这个库了。
[root@localhost ~]# sqlite3 tim
SQLite version 3.8.4.32014-04-03 16:53:12
Enter ".help" forusage hints.
sqlite> .schema
sqlite> CREATE TABLEtest_auto_incre(id INT AUTO_INCREMENT primary key,msg_to VARCHAR(20), TYPECHAR(1), create_date DATE );
sqlite> .schema
CREATE TABLE test_auto_incre(idINT AUTO_INCREMENT,msg_to VARCHAR(20), TYPE CHAR(1), create_date DATE,PRIMARYKEY (id) );
sqlite> .tables
test_auto_incre
sqlite>
sqlite> exit
...> ;
Error: near "exit":syntax error
sqlite>
用.exit或者.quit退出来,或者使用CTRL+D 按钮退出sqlite命令行操作界面。
[root@localhostsqlite-autoconf-3080403]# ll -t
total 11152
-rw-r--r-- 1 rootroot 3072 Aug 27 16:52 tim
再次登录进去查看已经存在的库以及表:
sqlite> .databases
seq name file
--- --------------- -----------------------------------