Mệnh đề INDEXED BY trong SQLite
Trong bài học này chúng ta sẽ cùng tìm hiểu về một khái niệm quá lạ trong SQLite
đó là mệnh đề INDEXED BY
. Vậy mệnh đề INDEXED BY
trong SQLite
là gì? INDEXED BY
trong SQLite
được sử dụng như thế nào? Chúng ta sẽ cùng tìm hiểu trong nội dung tiếp theo.
1. INDEXED BY trong SQLite là gì?
Mệnh đề "INDEXED BY index-name" chỉ định rằng index-name
phải được sử dụng để tìm kiếm các giá trị trên preceding table.
Nếu index-name
không tồn tại hoặc không thể được sử dụng cho truy vấn, thì việc chuẩn bị câu lệnh SQLite
thất bại.
Mệnh đề "NOT INDEXED" chỉ định rằng không có index nào được sử dụng khi truy cập vào preceding table, bao gồm các implied index
được tạo bởi các ràng buộc UNIQUE
và PRIMARY KEY
.
Bài viết này được đăng tại [free tuts .net]
Tuy nhiên, INTEGER PRIMARY KEY
vẫn có thể được sử dụng để tìm kiếm các entry ngay cả khi "NOT INDEXED" được chỉ định.
2. Cú pháp INDEXED BY trong SQLite
Sau đây là cú pháp cho mệnh đề INDEXED BY
trong SQLite
và INDEXED BY
có thể được sử dụng với câu lệnh DELETE
, UPDATE
hoặc SELECT
.
SELECT|DELETE|UPDATE column1, column2... INDEXED BY (index_name) table_name WHERE (CONDITION);
3. Ví dụ INDEXED BY trong SQLite
Giả sử chúng ta có bảng COMPANY
có cấu trúc định nghĩa bảng như sau:
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL );
Chúng ta sẽ sử dụng lệnh INSERT
để chèn dữ liệu vào bảng COMPANY
như sau:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'David', 27, 'Texas', 85000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 ); INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
Bây giờ chúng ta sẽ tạo một index và sử dụng nó để thực hiện thao tác INDEXED BY
.
sqlite> CREATE INDEX salary_index ON COMPANY(salary); sqlite>
Bây giờ để lấy dữ liệu từ bảng COMPANY
, chúng ta có thể sử dụng mệnh đề INDEXED BY
như sau:
sqlite> SELECT * FROM COMPANY INDEXED BY salary_index WHERE salary > 5000;
Điều này sẽ tạo ra kết quả sau đây:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 7 James 24 Houston 10000.0 2 Allen 25 Texas 15000.0 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0 6 Kim 22 South-Hall 45000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0