使用 SQLite 创建数据库和表

使用 SQLite 创建数据库和表

目录

使用SQLite

创建数据库

查看版本

创建数据表

新增数据

项目改为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 创建数据库和表

相关推荐
瑞克-桑切斯2 小时前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
4SAPI7 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
发量惊人的中年网工9 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
zyseo810 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
益莱储中国11 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
xiaogai_gai12 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o12 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
吹什么轩12 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
专注仿真13 小时前
ThinkPHP6 API接口开发实例:从零搭建RESTful风格接口
后端·php·restful
这个DBA有点耶13 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构