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;
相关推荐
q***49862 小时前
在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
数据库·django·sqlite
q***18062 小时前
如何使用C#与SQL Server数据库进行交互
数据库·c#·交互
Wang's Blog2 小时前
MySQL: 操作系统对MySQL性能的影响及选型指南
数据库·mysql
Lucifer三思而后行2 小时前
Oracle ADG 配置闪回导致报表查询延时!
数据库·oracle
挨踢攻城2 小时前
【OCP考试喜报】2025.11月 ORACLE OCP 考试通过
数据库·mysql·oracle·dba·oracle ocp·公众号:厦门微思网络·ocp19c
纪莫2 小时前
技术面:MySQL篇(为啥会有非关系型数据库?MySQL的数据存储一定在磁盘吗?)
java·数据库·java面试⑧股
一 乐3 小时前
个人健康系统|健康管理|基于java+Android+微信小程序的个人健康系统设计与实现(源码+数据库+文档)
android·java·数据库·vue.js·spring boot·生活
q***23923 小时前
【SQL技术】不同数据库引擎 SQL 优化方案剖析
数据库·sql
老华带你飞4 小时前
医疗保健|医疗养老|基于Java+vue的医疗保健系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医疗保健