Skip to content

SQLite 增删改查

插入数据

sql
INSERT INTO users (name, email, age)
VALUES ('Tom', 'tom@example.com', 18);

INSERT INTO users (name, email, age)
VALUES
  ('Alice', 'alice@example.com', 20),
  ('Bob', 'bob@example.com', 22);

更新数据

sql
UPDATE users
SET age = 19
WHERE id = 1;

删除数据

sql
DELETE FROM users
WHERE id = 1;

查询数据

sql
SELECT id, name, email
FROM users
WHERE age >= 18
ORDER BY id DESC
LIMIT 10 OFFSET 0;

关联查询

sql
PRAGMA foreign_keys = ON;

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  user_id INTEGER NOT NULL,
  amount REAL NOT NULL,
  created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

SELECT u.id, u.name, o.id AS order_id, o.amount
FROM users AS u
INNER JOIN orders AS o ON o.user_id = u.id
WHERE u.id = 1;

事务

sql
BEGIN;

UPDATE users SET age = age + 1 WHERE id = 1;
INSERT INTO orders (user_id, amount) VALUES (1, 99.00);

COMMIT;
-- ROLLBACK;

索引

sql
CREATE INDEX idx_users_age_created_at ON users (age, created_at);
CREATE UNIQUE INDEX uk_users_email ON users (email);
DROP INDEX idx_users_age_created_at;

执行计划

sql
EXPLAIN QUERY PLAN
SELECT *
FROM users
WHERE email = 'tom@example.com';

常用函数

sql
SELECT sqlite_version();
SELECT datetime('now');
SELECT date('now');
SELECT IFNULL(NULL, 'default');

基于 MIT 许可发布