如何从零开始创建第一个SQLite数据库和表?

来源:JS脚本作者:小宵头衔:网络博主
导读:本期聚焦于小宵创作的《如何从零开始创建第一个SQLite数据库和表?》,敬请观看详情。SQLite 是一款轻量级的嵌入式数据库,不需要单独安装服务进程,一个文件就是一个完整的数据库,非常适合个人项目、移动应用和小型网站的入门学习。本文将带你从零开始创建第一个 SQLite 数据库文件,讲解 sqlite3 命令行工具的启动方式、基本交互命令,并用 CREATE TABLE 语句建出第一张用户表,同时补充主键、自增字段、常用数据类型以及插入和查询验证的完整流程。读完之后你就能独立完成数据库和表的创建,并掌握查看表结构、退出命令行等基础操作,为后续学习打下扎实基础。

SQLite 是目前世界上最流行的嵌入式数据库之一,它不需要像 MySQL、SQL Server 那样安装独立的服务端程序,整个数据库被保存在一个单独的文件中,启动程序时直接读写文件即可。正因为这种零配置的特性,SQLite 被广泛用于手机 App、桌面软件、浏览器和小型网站。对初学者来说,从 SQLite 入门数据库是一个非常好的选择,本文将手把手带你创建第一个数据库文件和第一张表。

如何从零开始创建第一个SQLite数据库和表?

一、准备工作:安装并进入 sqlite3 命令行工具

在开始创建数据库之前,首先需要确认系统中是否已经安装了 SQLite。Windows 用户可以前往 SQLite 官网下载预编译的工具包,解压后得到 sqlite3.exe;Linux 用户一般可以通过包管理器直接安装,例如 Ubuntu 下执行 sudo apt install sqlite3;macOS 系统则自带 sqlite3 命令,打开终端输入 sqlite3 --version 即可查看版本号,如果输出了版本信息,说明环境已经就绪。

安装完成后,打开命令行窗口,切换到一个工作目录,例如在 Windows 下进入 D:\sqlite_demo 目录,然后执行以下命令即可创建(或打开)一个数据库文件:

sqlite3 mydb.db

这条命令的含义是:如果当前目录下存在 mydb.db 文件就直接打开它,如果不存在就新建一个同名文件作为数据库。需要注意的是,SQLite 采用惰性创建机制,只有在执行了第一条建表或其他写入操作之后,.db 文件才会真正落盘。执行成功后,命令提示符会变成 sqlite>,表示你已经进入了 SQLite 的交互式环境。

在交互环境中,所有以点号开头的命令是 SQLite 自身的元命令,常用的有 .help 查看帮助、.databases 查看当前打开的数据库、.tables 列出所有表、.schema 查看建表语句、.quit 退出交互环境。这些命令不需要以分号结尾,而 SQL 语句则必须以分号结尾,这是初学者最容易混淆的地方。

二、创建第一张表:CREATE TABLE 语句详解

有了数据库之后,接下来就可以建表了。假设我们要建一张用户表 users,包含编号、用户名、邮箱和注册时间四个字段,可以在 sqlite> 提示符下输入以下 SQL 语句:

CREATE TABLE users (
    id       INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT NOT NULL,
    email    TEXT UNIQUE,
    created  DATETIME DEFAULT CURRENT_TIMESTAMP
);

这条语句中有几个关键点值得仔细理解。INTEGER PRIMARY KEY 表示 id 字段是整型主键,在 SQLite 中整型主键会自动与行号关联,按主键查询速度极快;AUTOINCREMENT 关键字保证每插入一行 id 自动递增,且不会复用被删除行的编号;NOT NULL 约束要求 username 字段必须填值;UNIQUE 约束保证 email 字段不能出现重复值;DEFAULT CURRENT_TIMESTAMP 则让 created 字段在插入时自动记录当前时间,无需手动填写。

SQLite 采用动态类型系统,常用的存储类型有五种:NULL、INTEGER、REAL、TEXT 和 BLOB。与传统数据库不同,SQLite 允许向 TEXT 字段插入数字,也允许向 INTEGER 字段插入字符串,它会尽量做类型转换,这种机制被称为类型亲和性。虽然灵活,但在实际开发中仍然建议声明字段类型并按类型写入数据,这样可以让数据更规范,也方便将来迁移到其他数据库。

建表完成后,可以执行 .tables 命令验证,如果输出中出现了 users,说明表创建成功。再执行 .schema users 可以看到 SQLite 保存的完整建表语句,这也是一种备份表结构的好方法。

三、插入数据并验证表结构

表创建好之后,我们插入几条测试数据来验证字段约束是否生效,示例如下:

INSERT INTO users (username, email) VALUES ('zhangsan', 'zhangsan@ipipp.com');
INSERT INTO users (username, email) VALUES ('lisi', 'lisi@ipipp.com');
INSERT INTO users (username, email) VALUES ('wangwu', 'zhangsan@ipipp.com');

前两条语句会顺利插入,id 由 1 和 2 自动生成,created 字段自动填入当前时间。第三条语句故意使用了与第一条相同的邮箱,由于 email 字段带有 UNIQUE 约束,SQLite 会报错并提示 UNIQUE constraint failed,这正好验证了约束的作用。如果不希望程序因重复数据中断,可以使用 INSERT OR IGNORE 语法,遇到冲突时静默跳过该条记录。

插入完成后,使用 SELECT 语句查询全表数据:

SELECT * FROM users;

查询结果会以默认格式展示各字段的值,如果想要更清晰的表格样式,可以先执行 .headers on 打开表头显示,再执行 .mode column 设置列对齐模式,输出会整齐很多。最后执行 .quit 退出交互环境,回到系统命令行后,你会发现在工作目录下多了一个 mydb.db 文件,这就是你的第一个完整的 SQLite 数据库文件,可以直接拷贝到其他机器上使用。

四、常见问题与最佳实践建议

初学者在第一次操作时常遇到几个典型问题。第一是忘了写分号就回车,此时 SQLite 不会报错而是显示续行提示符 ...>,等待你继续输入,补上一个分号回车即可。第二是在错误的目录下创建了 .db 文件,导致后来找不到数据库,建议固定一个工作目录来管理数据库文件。第三是误以为执行 sqlite3 mydb.db 后文件立即生成,实际上没有写入操作时文件不会真正创建。

在表设计方面,有几点最佳实践值得遵循:每个表都应定义整型自增主键作为唯一标识;对用户名、邮箱等业务上唯一的字段加上 UNIQUE 约束;对不能为空的字段显式声明 NOT NULL;时间字段尽量交给数据库通过默认值自动维护。此外,SQLite 默认没有开启外键约束,如果需要在多表之间建立关联,应在打开数据库后执行 PRAGMA foreign_keys = ON;,否则外键声明不会生效。掌握这些细节后,你就已经完成了数据库学习中最关键的第一步,后续可以继续学习更新、删除、索引和事务等进阶内容。

SQLite数据库建表SQL语句修改时间:2026-09-01 23:50:43

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。