SQLite数据库入门

本文将告诉您如何使用 SQLite 入门,并让你迅速上手。

一、了解SQLite

1.SQLite简介

SQLite是一个软件库,是一个进程内的库,是一种嵌入式数据库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。

它是一个零配置的数据库,这意味着与其他数据库不一样,不需要在系统中配置,它的数据库就是一个文件。

SQLite 是在世界上最广泛部署的 SQL 数据库引擎,由于SQLite本身是C写的,而且体积很小,所以经常被集成到各种应用程序中,Python就内置了SQLite3,所以在Python中使用SQLite,不需要安装任何东西,直接使用。

2.SQLite特点

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

二、使用SQLite

1.安装SQLite

1.1 windows

  • 进入 SQL 下载页面: 下载页面

  • 搜索"Windows",从 Windows 区下载预编译的二进制文件

    img

  • 下载  sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件

  • 创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件

  • 添加 “C:\sqlite” 到 PATH 环境变量

    1646896173297

  • 命令提示符下,使用 sqlite3 命令

    1
    2
    3
    4
    5
    
    C:\>sqlite3
    SQLite version 3.38.0. 2021-01-09 11:53:05
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite>
    

1.2 linux

目前,几乎所有版本的 Linux 操作系统都附带 SQLite。所以,只要使用下面的命令来检查您的机器上是否已经安装了 SQLite。

  • 检测是否安装sqlite

    1
    2
    3
    4
    5
    
    [root@node1 /var/datatom]# sqlite3
    SQLite version 3.7.17 2013-05-20 00:56:22
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite>
    

如果没有看到上面的结果,那么就意味着没有在 Linux 机器上安装 SQLite。因此,让我们按照下面的步骤安装 SQLite:

  • 进入 SQL 下载页面: 下载页面

  • 搜索"Source Code “,从源代码区下载 sqlite-autoconf-*.tar.gz

  • 安装步骤如下:

    1
    2
    3
    4
    5
    
    $ tar xvzf sqlite-autoconf-3380000.tar.gz
    $ cd sqlite-autoconf-3380000
    $ ./configure --prefix=/usr/local
    $ make
    $ make install
    

2.SQLite命令

在命令提示符下键入一个简单的 sqlite3 命令,在 SQLite 命令提示符下,您可以使用各种 SQLite 命令

1
2
3
4
5
[root@node1 /var/datatom]# sqlite3
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

如需获取可用的点命令的清单,可以在任何时候输入 “.help”。例如:

1
sqlite>.help

让我们尝试使用 .show 命令,来查看 SQLite 命令提示符的默认设置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
sqlite> .show
     echo: off
  explain: off
  headers: off
     mode: list
nullvalue: ""
   output: stdout
separator: "|"
    stats: off
    width:
sqlite>

确保 sqlite> 提示符与点命令之间没有空格,否则将无法正常工作。

3.SQLite语法

3.1语法敏感

SQLite 是不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOB 和 glob 在 SQLite 的语句中有不同的含义。

3.2注释

SQL 注释以两个连续的 “-” 字符(ASCII 0x2d)开始,并扩展至下一个换行符(ASCII 0x0a)或直到输入结束,以先到者为准。

您也可以使用 C 风格的注释,以 “/” 开始,并扩展至下一个 “/” 字符对或直到输入结束,以先到者为准。SQLite的注释可以跨越多行。

1
sqlite>.help -- 这是一个简单的注释

3.2其他语法类似mysql

3.3示例

3.3.1 进入sqlite
1
2
3
4
5
sqlite3

#或者以打开某个数据库文件的形式 

sqlite3 /etc/dt.d/disk_cache.db
3.3.2 列出数据库
1
.databases
3.3.3 列出数据表
1
.tables
3.3.4 查询列表
1
SELECT * FROM disk_base;
3.3.5 退出
1
.quit

4.python使用sqlite

由于SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库

在Python交互式命令行实践一下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 导入SQLite驱动:
>>> import sqlite3
# 连接到SQLite数据库
# 数据库文件是test.db
# 如果文件不存在,会自动在当前目录创建:
>>> conn = sqlite3.connect('test.db')
# 创建一个Cursor:
>>> cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
<sqlite3.Cursor object at 0x10f8aa260>
# 继续执行一条SQL语句,插入一条记录:
>>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
<sqlite3.Cursor object at 0x10f8aa260>
# 通过rowcount获得插入的行数:
>>> cursor.rowcount
1
# 关闭Cursor:
>>> cursor.close()
# 提交事务:
>>> conn.commit()
# 关闭Connection:
>>> conn.close()

查询记录 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
>>> conn = sqlite3.connect('test.db')
>>> cursor = conn.cursor()
# 执行查询语句:
>>> cursor.execute('select * from user where id=?', ('1',))
<sqlite3.Cursor object at 0x10f8aa340>
# 获得查询结果集:
>>> values = cursor.fetchall()
>>> values
[('1', 'Michael')]
>>> cursor.close()
>>> conn.close()