SQLite 语法大全
                           
天天向上
发布: 2025-03-04 08:26:55

原创
972 人浏览过

SQLite 语法大部分与标准 SQL 兼容,但由于其轻量级特性,有些 SQL 功能有所不同。下面是 SQLite 的主要 SQL 语法,包括数据库管理、表操作、数据操作、查询、索引、视图等。


1. SQLite 数据库管理

创建数据库

SQLite 不需要手动创建数据库,只需在 sqlite3 命令后指定文件名:

sqlite3 mydatabase.db

如果 mydatabase.db 不存在,则 SQLite 会自动创建它。

打开数据库

sqlite3 mydatabase.db

删除数据库

SQLite 没有 DROP DATABASE 语法,直接删除文件即可:

rm mydatabase.db  # Linux/macOS
del mydatabase.db # Windows

2. SQLite 表操作

创建表

CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER DEFAULT 18,
    email TEXT UNIQUE
);

查看表结构

.schema users

修改表

SQLite 不支持 ALTER TABLE 删除列,只能添加列或重命名表:

ALTER TABLE users ADD COLUMN phone TEXT;
ALTER TABLE users RENAME TO customers;

删除表

DROP TABLE users;

3. SQLite 数据操作

插入数据

INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');  -- age 默认值18

查询数据

SELECT * FROM users;
SELECT name, age FROM users WHERE age > 20;
SELECT * FROM users ORDER BY age DESC;
SELECT COUNT(*) FROM users;

更新数据

UPDATE users SET age = 30 WHERE name = 'Alice';

删除数据

DELETE FROM users WHERE name = 'Bob';
DELETE FROM users;  -- 清空表

4. SQLite 查询

基本查询

SELECT * FROM users;
SELECT name, age FROM users WHERE age > 20;

条件查询

SELECT * FROM users WHERE age BETWEEN 20 AND 30;
SELECT * FROM users WHERE name LIKE 'A%';  -- 以 A 开头

排序

SELECT * FROM users ORDER BY age DESC;

分组

SELECT age, COUNT(*) FROM users GROUP BY age;

LIMIT 分页

SELECT * FROM users LIMIT 10;  -- 取前 10 条
SELECT * FROM users LIMIT 10 OFFSET 20;  -- 从第 21 条开始取 10 条

5. SQLite 约束

约束说明
PRIMARY KEY主键,唯一且非空
AUTOINCREMENT自增,配合 INTEGER PRIMARY KEY 使用
NOT NULL不能为空
UNIQUE唯一
CHECK约束
DEFAULT默认值
FOREIGN KEY外键

示例:

CREATE TABLE orders (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INTEGER,
    amount REAL CHECK(amount > 0),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

6. SQLite 事务

开启事务

BEGIN TRANSACTION;

提交事务

COMMIT;

回滚事务

ROLLBACK;

示例:

BEGIN TRANSACTION;
INSERT INTO users (name, age) VALUES ('Charlie', 40);
ROLLBACK;  -- 撤销插入操作

7. SQLite 索引

创建索引

CREATE INDEX idx_users_name ON users (name);

删除索引

DROP INDEX idx_users_name;

8. SQLite 视图

创建视图

CREATE VIEW user_names AS
SELECT id, name FROM users;

查询视图

SELECT * FROM user_names;

删除视图

DROP VIEW user_names;

9. SQLite 触发器

CREATE TRIGGER user_insert_trigger
AFTER INSERT ON users
BEGIN
    INSERT INTO logs (message) VALUES ('New user added: ' || NEW.name);
END;

10. SQLite JSON 支持

SQLite 支持 JSON 解析:

SELECT json_extract('{"name": "Alice", "age": 25}', '$.name');

总结

分类语法
数据库管理sqlite3 mydatabase.db rm mydatabase.db
表管理CREATE TABLE DROP TABLE ALTER TABLE
数据操作INSERT SELECT UPDATE DELETE
事务BEGIN TRANSACTION COMMIT ROLLBACK
索引CREATE INDEX DROP INDEX
视图CREATE VIEW DROP VIEW
触发器CREATE TRIGGER DROP TRIGGER
JSONjson_extract()

SQLite 语法简单且强大,可以从表的创建和数据插入开始!更多详细内容请关注其他相关文章。

发表回复 0

Your email address will not be published. Required fields are marked *