SQLiteStudio基本操作教程

1、创建数据库

点击数据库->添加数据库,选择文件或者输入一个新文件及名称:

2、创建表

2.1 表的基本概念解释

约束解释:

约束选项 作用说明
主键 用来唯一标识表中的每一行数据,一个表最多只能有 1 个主键(可以是单个字段,也可以是多个字段组合的 "复合主键")。特点:值不能重复、不能为 NULL,通常用于关联其他表(作为外键的关联对象)。
外键 用来关联其他表的主键,保证数据的 "参照完整性"(比如订单表的user_id关联用户表的id,避免出现不存在的用户 ID)。注意:SQLite 默认不自动开启外键约束,需手动开启(可在 SQLiteStudio 的 "设置 - 数据库" 中勾选 "启用外键")。
唯一 保证该字段的值在整个表中不能重复,但可以为 NULL(一个表可以有多个 "唯一" 约束)。例:用户表的email字段设为 "唯一",避免注册重复邮箱。
条件 自定义 "检查约束",限制字段的取值范围(比如age > 0 AND age < 150)。例:学生表的score字段设为score BETWEEN 0 AND 100,避免出现负数或超过 100 的分数。
非空 保证该字段的值不能为 NULL(必须填写),避免数据缺失。例:用户表的username字段设为 "非空",确保每个用户都有用户名。
字符序 针对 TEXT 类型字段,指定字符串的排序 / 比较规则(比如区分大小写、使用哪种语言的排序方式)。默认使用数据库的字符序,特殊场景(如多语言数据)才需要自定义。
生成的值 让字段的值自动生成(比如自增 ID、默认时间戳)。常见场景:主键字段设为 "INTEGER + 生成的值(自增)",插入数据时无需手动填写 ID,系统自动递增。
默认 为字段设置 "默认值",当插入数据时未填写该字段,自动使用默认值。例:订单表的status字段设为默认值0(代表 "待支付"),插入订单时若不填status,自动填充为 0。

类型解释:

类型选项 作用说明
TEXT 存储字符串(如文本、字符),长度不限(比如用户名、描述)。
BLOB 存储二进制数据(如图片、文件),以原始字节形式保存。
INTEGER 存储整数(可正可负),支持不同长度(如INTBIGINT),常用作自增主键。
NUMERIC 存储数值(整数、小数、日期时间等),会自动处理数值精度(比如金额、分数)。
REAL 存储浮点数(小数),但精度不如NUMERIC(通常用于非精确计算场景)。

触发器:

预先定义的 "自动执行的操作",当表发生特定事件(如插入、更新、删除数据)时,触发器会自动触发执行对应的 SQL 语句。举例:若给students表建一个触发器,设置 "当插入新学生时,自动记录操作日志到log表",那么每次插入数据,日志会自动生成,无需手动写代码。

索引:

数据库中用于加速数据查询的结构(类似书籍的目录)。

DDL:

DDL 是 "数据定义语言(Data Definition Language)" 的缩写,用来定义数据库结构的 SQL 语句(比如创建表、修改表、创建索引等)。

2.2 界面操作创建表

右键点击表,选择创建表,填写表名称后新增列:

在students中添加name列:

依次添加age和score列,其中score添加条件1-100:

点击创建后会提示生成该表的数据库语句,确定即可:

依次添加以下内容,其中name主键重复或者score超过条件约束会报错:

2.3 sql语句创建表

也可以直接用sql语句创建表,创建一个log表:

2.4 触发器测试

添加触发器,在新增学生数据的时候将信息打印的log表中:

新增学生数据后log表显示:

3、常用sql语句

3.1 创建
复制代码
-- 创建学生表,name为主键(唯一+非空),score约束1-100
CREATE TABLE IF NOT EXISTS students (
    name  TEXT (16) PRIMARY KEY NOT NULL,  -- 姓名(主键,最多16字符)
    age   INTEGER NOT NULL,                -- 年龄(非空)
    score INTEGER NOT NULL CHECK (score BETWEEN 1 AND 100)  -- 分数(1-100)
);
3.2 增

单条:

复制代码
INSERT INTO students (name, age, score) 
VALUES ('张三', 18, 95); 

多条:

复制代码
INSERT INTO students (name, age, score) 
VALUES 
('李四', 17, 88),
('王五', 16, 92),
('赵六', 19, 76);
3.3 删

按主键:

复制代码
-- 删除姓名为"赵六"的学生(主键唯一,只删1条)
DELETE FROM students WHERE name = '赵六';

按条件:

复制代码
-- 删除年龄大于18且分数小于80的学生
DELETE FROM students WHERE age > 18 AND score < 80;

-- 删除分数等于100的所有学生
DELETE FROM students WHERE score = 100;
3.4 改

修改单条数据单个字段:

复制代码
-- 把"李四"的分数改成90
UPDATE students 
SET score = 90 
WHERE name = '李四';  -- 按主键定位,只改1条

修改单条数据多个字段:

复制代码
-- 把"王五"的年龄改成17,分数改成95
UPDATE students 
SET age = 17, score = 95 
WHERE name = '王五';
3.5 查

查询所有:

复制代码
-- 查询所有学生的所有字段
SELECT * FROM students;

指定字段:

复制代码
-- 查询所有学生的姓名和分数(不看年龄)
SELECT name, score FROM students;

条件查询:

复制代码
-- 1. 查询分数大于90的学生
SELECT * FROM students WHERE score > 90;

-- 2. 查询年龄在16-18之间的学生
SELECT name, age FROM students WHERE age BETWEEN 16 AND 18;

-- 3. 查询分数等于95或88的学生
SELECT * FROM students WHERE score IN (88, 95);

-- 4. 查询姓名包含"张"字的学生(模糊查询)
SELECT * FROM students WHERE name LIKE '%张%';

顺序查询:

复制代码
-- 按分数降序排列(从高到低),分数相同按年龄升序
SELECT * FROM students ORDER BY score DESC, age ASC;

-- 按年龄升序排列(从低到高)
SELECT name, age FROM students ORDER BY age;
相关推荐
香蕉鼠片13 小时前
Mysql进阶篇
数据库·mysql·oracle
数厘13 小时前
2.12 sql 数据插入(INSERT INTO)
数据库·sql·oracle
薛定e的猫咪13 小时前
2026 年 4 月实测:OpenAI Codex 保姆级教程,从安装到 MCP、Skills 与多智能体协作
前端·数据库·人工智能
wgzrmlrm7413 小时前
Django怎么优雅发送邮件_Python配置SMTP后端实现异步通知
jvm·数据库·python
014-code13 小时前
Redis 删除缓存失败怎么办?重试、死信、补偿的工程化方案
数据库·redis·缓存
I love studying!!!13 小时前
Web应用程序:用户账户
前端·数据库·sqlite
窝子面14 小时前
NestJs+MongoDB+Deepseek+Langchain实现ai聊天助手
javascript·数据库·人工智能·mongodb
zjshuster14 小时前
流程引擎(Process Engine)简介
java·数据库·servlet
leonkay14 小时前
关于.NET中的队列理解
数据库·性能优化·.net·个人开发·设计规范·队列
斌味代码14 小时前
Redis 分库分表实战:从垂直拆分到水平扩容完整记录
数据库·redis·bootstrap