SQLite 语法大全
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 |
| JSON | json_extract() |
SQLite 语法简单且强大,可以从表的创建和数据插入开始!更多详细内容请关注其他相关文章。