使用 SQLite 创建数据库和表
目录
使用SQLite
创建数据库
使用navicat选择sqlite然后,类型选为新建SQLite3,选择本地保存名称和路径为music下的database目录中创建数据库。如下:

查看版本
bash
SELECT sqlite_version() as ver
创建数据表
Sql语句如下:
sql
-- 清理旧表/触发器(可选)
DROP TABLE IF EXISTS music;
DROP TRIGGER IF EXISTS trigger_music_update_time;
-- 音乐表(3.45.0 支持字段+表注释)
CREATE TABLE IF NOT EXISTS music (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
title VARCHAR(100) NOT NULL,
singer VARCHAR(100) NOT NULL,
path VARCHAR(255) NOT NULL,
cover VARCHAR(255) DEFAULT NULL,
sort INTEGER NOT NULL DEFAULT 0,
`status` INTEGER NOT NULL DEFAULT 1,
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- 触发器:自动更新 update_time(3.45.0 优化了触发器执行效率)
CREATE TRIGGER IF NOT EXISTS trigger_music_update_time
AFTER UPDATE ON music
FOR EACH ROW
BEGIN
UPDATE music SET update_time = CURRENT_TIMESTAMP WHERE id = old.id;
END;
新增数据
新增数据sql语句如下:
sql
INSERT INTO `music` (`id`, `title`, `singer`, `path`, `cover`, `sort`, `status`, `create_time`, `update_time`) VALUES (1, '雨一直下', '张宇', '/music/yuyizhixia.mp3', '/cover/yuyizhixia.png', 1, 1, '2025-12-06 17:25:13', '2025-12-12 10:38:41');
INSERT INTO `music` (`id`, `title`, `singer`, `path`, `cover`, `sort`, `status`, `create_time`, `update_time`) VALUES (2, '趁早', '张宇', '/music/chenzao.mp3', '/cover/chenzao.png', 2, 1, '2025-12-06 17:25:13', '2025-12-12 10:38:43');
INSERT INTO `music` (`id`, `title`, `singer`, `path`, `cover`, `sort`, `status`, `create_time`, `update_time`) VALUES (3, '一言难尽', '张宇', '/music/yiyannanjin.mp3', '/cover/yiyannanjin.png', 3, 1, '2025-12-06 17:25:13', '2025-12-12 10:38:45');
项目改为SQLite
直接修改项目config目录下的database.php文件,数据库改为sqlite,
需要php开启pdo_sqlite扩展。
配置如下:
php
<?php
return [
// 默认使用的数据库连接配置
'default' => 'sqlite',
//'default' => env('database.driver', 'mysql'),
// 自定义时间查询规则
'time_query_rule' => [],
// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 时间字段配置 配置格式:create_time,update_time
'datetime_field' => '',
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database', ''),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', ''),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', ''),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
],
'sqlite' => [
// 数据库类型(固定为sqlite)
'type' => 'sqlite',
// DSN:sqlite: + 数据库文件绝对路径(关键!)
'dsn' => 'sqlite:' . app()->getRootPath() . 'database/sqlite.db',
// 数据库字符集(SQLite 默认UTF-8,可省略)
'charset' => 'utf8',
// 数据库文件权限(可选,默认0666)
'file_permission' => 0666,
// 是否开启调试(可选)
'debug' => true,
],
// 更多的数据库配置信息
],
];
改为sqlite后,数据存放在本地,就变成了本地应用。
总结
使用 SQLite 创建数据库和表