【SQLite简介 】

SQLite简介

一、SQLite 是什么?

你可以把它理解为一个超轻量的"文件数据库"

我们平时用的 Excel 表格,数据存在 .xlsx 文件里。SQLite 的数据库,就全部存放在一个独立的 .db 文件中,比如 mydata.db。不同的是,Excel 靠鼠标操作,SQLite 靠一种叫 SQL 的语言来查询和管理数据。

用一句话概括:

它是一个不需要安装、不需要配置、直接把所有数据装在一个文件里的小型数据库引擎。


二、它最迷人的地方:零配置、自给自足

  • 不用装服务器:像 MySQL 需要先启动一个服务,监听端口,配账号密码。SQLite 完全不用。

  • 不需要 DBA:没有复杂的用户权限、主机配置。

  • 跨平台即拖即用:把那个 .db 文件复制到 Windows、Mac、Linux 甚至手机上,都能直接读写,数据格式完全一致。

  • 小到极致:整个库文件只有几百 KB,可以轻易嵌入到任何 App 里。


三、数据库长什么样?

想象你有一个叫 school.db 的文件,里面可以放很多张表(Table),表就像一张张 Excel 工作表:

students 表(学生信息)

id name age city
1 小明 20 北京
2 小红 21 上海
3 小刚 22 广州
每一行是一条记录,每一列是一个字段。
SQLite 用 id 这种唯一标识来区分每一行,通常设为主键(PRIMARY KEY)。

四、它和 MySQL、PostgreSQL 哪里不一样?

特性 SQLite MySQL / PostgreSQL
架构 嵌入式库,和你的程序在一起 独立的服务器程序
访问方式 直接读写 .db 文件 通过网络(TCP/IP)连接
并发写入 只支持单写(锁整个库) 支持高并发多写
数据类型 灵活,列不强制类型 严格,定义什么就存什么
使用场景 手机 App、桌面软件、嵌入式设备、个人小工具 网站后端、大型业务系统

简单说:SQLite 是给自己/小团队用的单机数据库;MySQL 是给多人同时访问的网络数据库。


五、怎么开始用?

  1. 命令行方式(几乎任何系统自带)
    在终端(Mac/Linux)或命令提示符(Windows)输入:

    sqlite3 mydata.db

就进去了!然后你可以敲 SQL 命令了。

如果提示找不到 sqlite3,去官网下载一个可执行文件放到电脑里就行。

  1. 推荐图形化工具(小白首选)
    不想手敲命令,可以装这些免费的图形工具:
  • DB Browser for SQLite (电脑端,界面清爽)

  • SQLiteStudio (功能很全)

  • Navicat for SQLite (更美观,但收费)

打开后,新建数据库文件,然后就能像操作 Excel 那样建表、填数据、查数据了。

六、核心概念速览

  • 数据库(Database):就是那个 .db 文件。

  • 表(Table):存放具体数据的结构,如学生表、成绩表。

  • 行(Row)/ 记录:一条数据。

  • 列(Column)/ 字段:数据的属性名,如 name。

  • SQL:用来建表、增删改查数据的标准语言。

常用数据类型:

  • NULL------空值

  • INTEGER------整数

  • REAL------小数(浮点)

  • TEXT------文字

  • BLOB------二进制文件(图片、音乐,但不建议存大文件)

SQLite 的类型比较宽松:你给定义为 INTEGER 的列塞一个 "hello" 文本,它也不会报错(除非特殊设置)。

七、用 SQL 动手玩一下

下面以命令行或图形工具的 SQL 窗口为例,建一个学生表,然后折腾数据。

  1. 建表

    CREATE TABLE students (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER,
    city TEXT
    );

  • PRIMARY KEY 主键,唯一标识一行。

  • AUTOINCREMENT 让 id 自动递增,不用自己填。

  1. 插入数据

    INSERT INTO students (name, age, city) VALUES ('小明', 20, '北京');
    INSERT INTO students (name, age, city) VALUES ('小红', 21, '上海');
    INSERT INTO students (name, age, city) VALUES ('小刚', 22, '广州');

  2. 查询

    -- 查所有列、所有行
    SELECT * FROM students;

    -- 只查名字和年龄
    SELECT name, age FROM students;

    -- 加上条件:年龄大于20的
    SELECT * FROM students WHERE age > 20;

    -- 按年龄倒序排列
    SELECT * FROM students ORDER BY age DESC;

  3. 更新数据

    -- 把小明的城市改成深圳
    UPDATE students SET city = '深圳' WHERE name = '小明';

  4. 删除数据

    -- 删除 id 为 3 的那一行
    DELETE FROM students WHERE id = 3;

  5. 删表(慎用)

    DROP TABLE students;

八、在 Python 里用 SQLite(选看)

如果你写代码,SQLite 超级方便。Python 自带了 sqlite3 模块,不需要装任何东西。

复制代码
import sqlite3

# 连接数据库(没有就会自动创建)
conn = sqlite3.connect('mydata.db')
cursor = conn.cursor()

# 建表
cursor.execute('''CREATE TABLE IF NOT EXISTS students
                  (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

# 插入
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ('小明', 20))

# 查询
cursor.execute("SELECT * FROM students")
print(cursor.fetchall())   # 输出所有结果

# 提交并关闭
conn.commit()
conn.close()