SQL Lite 备忘录1

目录

[1. SQLite 是什么?](#1. SQLite 是什么?)

[2. SQLite 和 MySQL 最大区别是什么?](#2. SQLite 和 MySQL 最大区别是什么?)

[3. SQLite 支持哪些数据类型?](#3. SQLite 支持哪些数据类型?)

[4. 什么是 SQLite 动态类型?](#4. 什么是 SQLite 动态类型?)

[5. SQLite 自增主键怎么写?](#5. SQLite 自增主键怎么写?)

[6. SQLite 怎么查看所有表?](#6. SQLite 怎么查看所有表?)

[7. SQLite 怎么查看表结构?](#7. SQLite 怎么查看表结构?)

[8.sqlite 左右连接全连接及关键字](#8.sqlite 左右连接全连接及关键字)

1. SQLite 是什么?

标准答案:

SQLite 是一个嵌入式、轻量级、文件型关系数据库。

它不需要单独启动数据库服务器,数据库通常直接存储在一个文件中。应用程序通过 SQLite 库直接读写这个数据库文件。

特点:

  • 无需独立服务器
  • 单文件数据库
  • 支持标准 SQL
  • 支持事务和 ACID
  • 支持索引、触发器、视图、外键
  • 适合移动端、桌面软件、嵌入式设备、本地数据存储
  • 不支持存储过程

追问:为什么 SQLite 不需要启动服务?

因为 SQLite 是嵌入到应用程序中的数据库引擎,而 MySQL/PostgreSQL 通常需要独立的数据库服务进程。

2. SQLite 和 MySQL 最大区别是什么?

最大的区别是架构:

SQLite MySQL(C/S架构)
嵌入式数据库 客户端/服务器数据库
数据通常是本地文件 数据由数据库服务管理
不需要启动服务 通常需要数据库服务
没有传统用户权限体系 有用户、角色、权限体系
单机使用非常方便 更适合多客户端、集中式服务
并发写入能力有限 更适合高并发写入

一句话:

SQLite 是嵌入式文件型数据库,MySQL 是服务器型数据库。

3. SQLite 支持哪些数据类型?

严格来说,SQLite 有 5 种 Storage Class(存储类):

复制代码
NULL
INTEGER
REAL
TEXT
BLOB

其中:

  • NULL:空值
  • INTEGER:整数
  • REAL:浮点数
  • TEXT:文本
  • BLOB:二进制数据

4. 什么是 SQLite 动态类型?

SQLite 的一个重要特点是:

列的声明类型不是绝对限制,实际数据有自己的存储类型。

sql 复制代码
CREATE TABLE test (
    value INTEGER
) STRICT;

STRICT 表可以进行更严格的类型检查

5. SQLite 自增主键怎么写?

推荐:

sql 复制代码
CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT
);

你没有提供 ID,SQLite 会给这一行分配一个 ROWID。

如果写:

复制代码
id INTEGER PRIMARY KEY AUTOINCREMENT

则会使用 AUTOINCREMENT 机制,避免重用已经删除的 ROWID。

重要:

"给我一个这个表历史上从没用过的更大的 ROWID。

6. SQLite 怎么查看所有表?

sql 复制代码
SELECT name
FROM sqlite_schema
WHERE type = 'table';

也可以使用:

sql 复制代码
SELECT name
FROM sqlite_master
WHERE type = 'table';

sqlite_master 是经典写法,sqlite_schema 是更推荐的现代名称。

7. SQLite 怎么查看表结构?

复制代码
PRAGMA table_info(users);

如果需要查看更多信息,可以了解:

复制代码
PRAGMA table_xinfo(users);

8.sqlite 左右连接全连接及关键字

  1. 常用关键字 :SELECT 查询、INSERT 插入、UPDATE 修改、DELETE 删除;WHERE 筛选、ORDER BY 排序、GROUP BY 分组、HAVING 分组筛选、LIMIT 限制数量、DISTINCT 去重。

WHERE 筛选分组前的数据,HAVING 筛选分组后的数据。

  1. JOIN 表连接:

  2. INNER JOIN 只保留两表匹配的数据;

  3. LEFT JOIN 保留左表全部数据,右表匹配不到则为 NULL;

  4. RIGHT JOIN 保留右表全部数据;

  5. FULL OUTER JOIN 保留两表全部数据,匹配不到的一方为 NULL。

相关推荐
xn713311 小时前
本地 AI 知识库跨设备同步:SQLite FTS5、Embedding、Tombstone 和引用校验
人工智能·sqlite·ai编程
北方的银狐-Zero1 天前
OntoL 7.0|面向工业多智能体的语义本体套件,让异构系统真正 “看懂彼此”——OntoL的本体产品矩阵
人工智能·mysql·sqlite·1024程序员节·本体论·本体产品
CS创新实验室4 天前
改了模型,数据库为什么能自动跟上?——Django 迁移(migrations)的底层
数据库·django·sqlite
誰能久伴不乏4 天前
桌面客户端的运行日志系统:SQLite 分块 + 独立写线程 + 文本降级
数据库·c++·qt·架构·sqlite
l1t4 天前
测试用go语言执行脚本把数据保存到SQLite数据库
数据库·golang·sqlite
l1t5 天前
DeepSeek辅助编写连接sqlite的CLI
数据库·golang·sqlite
l1t6 天前
在windows中测试musql数据库
数据库·sqlite·go·1024程序员节
爱好曙光6 天前
SQLite WAL 高并发写入:busy_timeout 与 checkpoint 调优实战
sqlite·性能调优·checkpoint·wal·并发写入
从零数据分析6 天前
零基础学SQL 23:和上月比总对不上?LAG/LEAD 一步取出上一次(附 4 个模板)
java·数据库·sql·mysql·oracle·sqlite·database
ycydynq7 天前
django利用不涉及数据库form自定义表单 表单元素验证
数据库·django·sqlite