0

Query trong sqlite

I. Nhóm thao tác dữ liệu (CRUD)

  • SELECT: Lấy dữ liệu từ bảng

    • SELECT * FROM settings: lấy tất cả
    • SELECT key, value FROM settings: Chỉ lấy cột cụ thể
  • INSERT INTO: Thêm dữ liệu mới

    • INSERT INTO settings (id, key, value) VALUES (1, 'theme', 'dark');
  • UPDATE: chỉnh sửa dữ liệu đã có

    • UPDATE settings SET value = 'light' WHERE key = 'theme';
  • DELETE: Xóa dữ liệu

    • DELETE FROM settings WHERE id = 1

II. Nhóm lọc và sắp xếp

Giúp ta lấy chính xác thứ mình cần thay vì lấy một đống dữ liệu

  • WHERE: Bộ lọc điều kiện.
    • SELECT * FROM settings WHERE id > 10 AND key LIKE '%color%';
  • ORDER BY: Sắp xếp kết quả.
    • SELECT * FROM settings ORDER BY id DESC; (Giảm dần)
  • DISTINCT: Loại bỏ các kết quả trùng lặp.
    • SELECT DISTINCT key FROM settings;
  • LIMIT / OFFSET: Giới hạn số lượng bản ghi trả về (rất quan trọng để làm phân trang).
    • SELECT * FROM settings LIMIT 10 OFFSET 0; (Lấy 10 dòng đầu tiên)

III. Nhóm tổng hợp và thống kê

Dùng khi bạn cần tính toán thay vì chỉ liệt kê.

  • COUNT(): Đếm số dòng.

    • SELECT COUNT(*) FROM settings;
  • SUM(), AVG(), MIN(), MAX(): Tính tổng, trung bình, nhỏ nhất, lớn nhất.

    • SELECT MAX(id) FROM settings;
  • GROUP BY: Nhóm các dòng có cùng giá trị.

    • SELECT key, COUNT(*) FROM settings GROUP BY key;
  • HAVING: Bộ lọc điều kiện dành riêng cho các nhóm sau khi GROUP BY.

    • SELECT key FROM settings GROUP BY key HAVING COUNT(*) > 1;

Một số lưu ý

  • Sử dụng INDEX: Nếu table lên đến hàng nghìn dòng, hãy tạo index cho các cột hay dùng để tìm kiếm. Tốc độ tìm kiếm sẽ nhanh hơn rất nhiều.
  • Transaction. Nếu cần chèn 1000 dữ liệu, đừng gọi 1000 lần insert. Hãy bọc chúng vào trong một transaction -> giúp tốc độ ghi vào ổ cứng nhanh hơn.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí