使用 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 创建数据库和表

相关推荐
qinyia2 小时前
如何在服务器上查看网络连接数并进行综合分析
linux·运维·服务器·开发语言·人工智能·php
m0_706653232 小时前
自然语言处理(NLP)入门:使用NLTK和Spacy
jvm·数据库·python
Big Cole2 小时前
PHP 面试:MySQL 核心问题之索引与优化
mysql·面试·php
m0_736919102 小时前
Python游戏中的碰撞检测实现
jvm·数据库·python
猴哥聊项目管理2 小时前
2026年免费项目管理工具,支持任务分配+甘特图+协作 推荐
大数据·数据库·甘特图·项目管理工具·项目管理软件·免费项目管理软件·研发项目管理软件
江湖有缘2 小时前
基于华为openEuler部署Sqliteviz轻量级SQLite可视化工具
jvm·华为·sqlite
jiunian_cn2 小时前
【Redis】list数据类型相关指令
数据库·redis·list
晚霞的不甘2 小时前
Flutter for OpenHarmony实现高性能流体粒子模拟:从物理引擎到交互式可视化
前端·数据库·经验分享·flutter·microsoft·计算机视觉
子木鑫2 小时前
[SUCTF2019 & GXYCTF2019] 文件上传绕过实战:图片马 + .user.ini / .htaccess 构造 PHP 后门
android·开发语言·安全·php