SQLite 高频面试题问题(含答案讲解)

编程开发 wes 2 hours ago (2026-04-07) 6 views

        本文小结了汇总了SQLite 的高频面试题问题包含答案和讲解,刚入门学习及应试的同学可以参考一下。

一、基础概念题

  1. SQLite 是什么?有什么特点? 答:嵌入式文件型数据库,无服务、无端口、无账号密码,单文件存储,轻量小巧,支持标准 SQL,适合移动端、桌面软件、本地存储。
  2. SQLite 和 MySQL 最大区别是什么? 答:SQLite 是文件型数据库,无服务进程、无权限体系;MySQL 是 C/S 架构,需要启动服务,有用户权限、高并发能力更强。
  3. SQLite 支持哪些数据类型? 答:NULL、INTEGER、REAL、TEXT、BLOB 五种基本类型,采用动态类型,不强制校验类型。
  4. 什么是 SQLite 的动态类型? 答:字段定义的类型只是 “建议”,不是强制约束。比如 INTEGER 字段可以存字符串,MySQL 则会严格拒绝。
  5. SQLite 自增主键怎么写? 答:id INTEGER PRIMARY KEY AUTOINCREMENT; 注意:不加 AUTOINCREMENT 也能自增,但不会保证 id 绝对不重复利用。

二、SQL 与使用题

  1. SQLite 如何查看所有表?
sql

SELECT name FROM sqlite_master WHERE type='table';

  1. SQLite 如何查看表结构?
sql

PRAGMA table_info(表名);

  1. SQLite 支持哪些 ALTER TABLE 操作? 答:只支持:
  • 重命名表
  • 添加字段
  • 重命名字段 不支持直接删除字段、修改字段类型、修改约束
  1. 想在 SQLite 中删除字段怎么办? 答:不能直接删,必须重建表:
  2. 创建新表
  3. 导入数据
  4. 删除旧表
  5. 重命名新表
  6. SQLite 支持事务吗? 答:支持,且默认就是事务安全。
sql

BEGIN;
执行操作...
COMMIT; 或 ROLLBACK;

  1. VACUUM 命令作用? 答:清理数据库碎片、回收空间、压缩数据库文件。
  2. SQLite 分页怎么写?
sql

SELECT * FROM 表 LIMIT 条数 OFFSET 偏移;

和 MySQL 一致。
  1. SQLite 支持索引吗? 答:支持普通索引、唯一索引、联合索引、部分索引,语法和 MySQL 基本一致。

三、高级与原理题

  1. SQLite 的 WAL 模式是什么? 答:Write-Ahead Logging 预写日志模式,提高并发读写性能,替代传统回滚日志。 开启:PRAGMA journal_mode=WAL;
  2. SQLite 支持高并发吗? 答:不适合超高并发。写操作会锁库,多读单写没问题,大量并发写入性能下降明显。
  3. SQLite 支持存储过程、函数、触发器吗? 答:支持触发器; 不支持存储过程; 内置常用函数,不支持自定义函数(扩展除外)。
  4. SQLite 支持外键吗? 答:支持,但默认关闭,需手动开启:
sql

PRAGMA foreign_keys = ON;

  1. SQLite 适合做大型网站数据库吗? 答:不适合。无用户权限、并发有限、无集群、无主从复制,适合本地 / 嵌入式场景。
  2. SQLite 的数据库文件是什么? 答:单个文件(.db/.sqlite),复制文件即备份,非常方便。
  3. SQLite 支持 JSON 吗? 答:新版支持 JSON1 扩展,可以操作 JSON 字段,功能接近 MySQL 的 JSON 类型。

四、易踩坑对比题

  1. MySQL 的 AUTO_INCREMENT 对应 SQLite 什么? 答:AUTOINCREMENT(注意拼写少一个下划线)。
  2. MySQL 的 DATETIME 在 SQLite 用什么? 答:用 TEXT 或 REAL 存储,SQLite 无独立日期时间类型。
  3. SQLite 有没有布尔类型? 答:没有,用 0/1 代替。
  4. MySQL 可以随意修改字段,SQLite 为什么不行? 答:SQLite 架构简单,为了轻量和稳定,不支持复杂的表结构修改。
  5. SQLite 有账号密码吗? 答:没有。文件本身不加密,想加密需要用 SQLCipher 扩展。3y4.net