SQLite数据库简介与基本使用

时间:2022-05-15 23:01:03

1.SQLite简介:

SQLite是一款轻量级开源嵌入式数据库,由D.Richard Hipp2000年发布。SQLite使用方便,性能出众,广泛应用于消费电子、医疗、工业控制、军事等各种领域。

2.SQLite的特点:

(1)体积小:最低只需要几百K的内存就可以运行。

(2)性能高:对数据库的访问性能很高,其运行速度比Mysql等开源数据库要快很多。

(3)可移植性强:能支持各种32位和64位体系的硬件平台,也能在WindowsLinuxBSDMac OSSolaries等软件平台中运行。

(4)SQL支持:SQLite支持ANSI SQL92中的大多数标准,提供了对子查询、视图、触发器等机制的支持。

(5)接口:SQLiteCJavaPHPPython等多种语言提供了API接口,所有的应用程序都必须通过接口访问SQLite数据库。

SQLite数据库简介与基本使用

  1)编译器。编译器由词法分析、语法分析和中间代码生成三个模块组成。其中,词法分析模块和语法分析模块负责检查SQL语句的语法,然后把生成的语法树传递给中间代码生成模块。中间代码生成模块负责生成SQLite引擎可以识别的中间代码。

  2)数据库引擎。数据库引擎是SQLite的核心,负责运行中间代码,指挥数据库的具体操作。

  3)后台。后台由B树、页缓存和系统调用三个模块组成。其中,B树负责维护索引,页缓存负责页面数据的传送,系统调用负责和操作系统交互,最终实现数据库的访问。

3.SQLite3的下载与使用:

(1)下载:SQLite3是目前最新的SQLite版本。可以从http://www.sqlite.org/download.html网站上下载SQLite3的源代码。下载完成后,解压到某一盘符下。

(2)注意:SQLite3支持的基本数据类型主要有以下几类:

1).NULL------------------blob

2).INTEGER---------------int

3).REAL------------------float、double

4).TEXT------------------char、varchar

5).NUMERIC---------------其余

(3)使用:

1)在Windows平台下,打开Dos窗口,切换到含有刚解压的sqlite3.exe的目录下,输入 sqlite3 -version后回车,出现对应的版本号信息 :

SQLite数据库简介与基本使用

2)数据库的使用与创建:假设需要使用一个test.db数据库,只需在命令行下输入 “sqlite3 test.db”即可,如果数据库test.db已经存在,则命令“sqlite3 test.db会在当前目录下打开test.db。如果数据库test.db不存在,则命会在当前目录下新建数据库test.db。为了提高效率,sqlite3并不会马上创建test.db,而是等到第一个表创建完成后才会在物理上创建数据库。

SQLite数据库简介与基本使用SQLite数据库简介与基本使用

3)数据库的查询:使用“.database”命令可以查询所在在使用的数据库。

SQLite数据库简介与基本使用

4)表创建:由于SQLite3是弱类型的数据库,所以在create语句中并不要求给出列的类型(当然给出也不错)。另外注意所以的SQL指令都是以分号(;)结尾的。如果遇到两个减号(–)则代表注解,sqlite3会略过去。

SQLite数据库简介与基本使用

5)数据库的表查询:使用命令“.table”可以查询数据库中的表有哪些。

SQLite数据库简介与基本使用

6)插入

SQLite数据库简介与基本使用

7)查询

查询所有:

SQLite数据库简介与基本使用

     按指定条件查询和查询指定字段:

                        SQLite数据库简介与基本使用

     模糊查询:

     SQLite数据库简介与基本使用

8)更改:

SQLite数据库简介与基本使用SQLite数据库简介与基本使用

9)删除:

SQLite数据库简介与基本使用SQLite数据库简介与基本使用

10)其他说明:

  a.批量提交数据

     sqlite> begin;

      sqlite> insert into test_table values ('xiaoxue', 'female', 18);

      sqlite> insert into test_table values ('xiaoliu', 'male', 20);

      sqlite> commit;


   b.设置主键,使用命令“paimary key” 

SQLite数据库简介与基本使用

SQLite数据库简介与基本使用

但是注意:超出所定义的范围和类型是没有关系的

  

   c.模糊查询


1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'


2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;


3,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);

如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;

4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

  

d.SQLite内置命令:

SQLite数据库简介与基本使用

SQLite数据库简介与基本使用SQLite数据库简介与基本使用

SQLite数据库简介与基本使用

   见如下常用示例:
   1). 备份和还原数据库。
  --在当前连接的main数据库中创建一个数据表,之后再通过.backup命令将main数据库备份到D:/mydb.db文件中。
 sqlite> CREATE TABLE mytable (first_col integer);
     sqlite> .backup 'D:/mydb.db'
                sqlite> .exit
                --通过在命令行窗口下执行sqlite3.exe以重新建立和SQLite的连接。
                --从备份文件D:/mydb.db中恢复数据到当前连接的main数据库中,再通过.tables命令可以看到mytable表。
                sqlite> .restore 'D:/mydb.db'
                sqlite> .tables
                mytable
    
                2). DUMP数据表的创建语句到指定文件。
                --先将命令行当前的输出重定向到D:/myoutput.txt,之后在将之前创建的mytable表的声明语句输出到该文件。
                sqlite> .output D:/myoutput.txt
                sqlite> .dump mytabl%
                sqlite> .exit
                --在DOS环境下用记事本打开目标文件。
                D:\>notepad myoutput.txt
    
                3). 显示当前连接的所有Attached数据库和main数据库。
                sqlite> ATTACH DATABASE 'D:/mydb.db' AS mydb;
                sqlite> .databases
                seq  name               file
                ---  ---------------  ------------------------
                 0    main
                 2    mydb                D:\mydb.db
    
                 4). 显示main数据库中的所有数据表。
                 sqlite> .tables
                 mytable
    
                 5). 显示匹配表名mytabl%的数据表的所有索引。
                 sqlite> CREATE INDEX myindex on mytable(first_col);
                 sqlite> .indices mytabl%
                 myindex        
    
                  6). 显示匹配表名mytable%的数据表的Schema信息。
                  --依赖该表的索引信息也被输出。
                  sqlite> .schema mytabl%
                  CREATE TABLE mytable (first_col integer);
                  CREATE INDEX myindex on mytable(first_col);
    
                  7). 格式化显示SELECT的输出信息。
                  --插入测试数据
                 sqlite> INSERT INTO mytable VALUES(1);
                 sqlite> INSERT INTO mytable VALUES(2);
                 sqlite> INSERT INTO mytable VALUES(3);    
                 --请注意没有任何设置时SELECT结果集的输出格式。
                 sqlite> SELECT * FROM mytable;
                 1
                 2
                 3    
                  --显示SELECT结果集的列名。
                  --以列的形式显示各个字段。
                  --将其后输出的第一列显示宽度设置为10.
                 sqlite> .header on
                 sqlite> .mode column
                 sqlite> .width 10
                 sqlite> SELECT * FROM mytable;
                 first_col
                 ----------
                  1
                  2
                  3

 e.找不到SQLite3.dll的解决办法

直接拷贝SQLite3.dll文件到系统目录里:

Windows NT/2000系统,把这个文件复制到c:\WINNT\System32目录下。
Windows XP/WIN7系统,把这个文件复制到c:\Windows\System32目录下。
Windows 95/98/Me系统,把这个文件复制到c:\Windows\System目录下。

然后打开"开始-运行-输入regsvr32 此文件名称",再按回车错误就得以解决了!

飞翔小知识:

动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。