Học SQLite cơ bản

Bài 3: Cú pháp cơ bản trong SQLite

SQLite được theo sau bởi bộ quy tắc và hướng dẫn duy nhất được gọi là cú pháp (syntax). Trong bài này mình sẽ cùng tìm hiểu về cú pháp trong SQLite.

1. Không phân biệt kiểu chữ

Điều quan trọng bạn cần ghi nhớ về SQLite là không phân biệt kiểu chữ. Nhưng có một số lệnh là phân biệt kiểu chữ, ví dụ: GLOB và glob có ý nghĩa khác nhau trong các lệnh SQLite.

2. Comment trong SQLite

Bạn có thể thêm Comment trong SQLite code để tăng cao khả năng đọc cho code và chúng có thể xuất hiện ở bất cứ đâu; whitespace có thể xuất hiện, bao gồm bên trong các biểu thức và ở giữa các lệnh SQL khác nhưng chúng không thể lồng nhau.
Comment trong SQLite bắt đầu với hai ký tự dấu gạch nối "-" (ASCII 0x2d) và kéo dài tới và bao gồm ký tự newline (dòng mới) (ASCII 0x0a) hoặc tới phần cuối của input, bất cứ cái gì được nhập vào đầu tiên.
Bạn cũng có thể sử dụng C-style comment, bắt đầu với "/*" và kéo dài tới và bao gồm ký tự "*/" hoặc tới phần cuối của input, bất cứ cái gì được nhập vào đầu tiên. C-style comment có thể trải rộng nhiều dòng.
sqlite> .help -- This is a single line comment

3. Lệnh trong SQLite

Tất cả các lệnh SQLite bắt đầu với bất kỳ từ khóa nào như SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, … và tất cả các lệnh kết thúc với một dấu chấm phảy (;).
Lệnh ANALYSE trong SQLite
ANALYZE;
or
ANALYZE database_name;
or
ANALYZE database_name.table_name;
Mệnh đề AND/OR trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION-1 {AND|OR} CONDITION-2;
Lệnh ALTER TABLE trong SQLite
ALTER TABLE table_name ADD COLUMN column_def...;
Lệnh ALTER TABLE (Rename) trong SQLite
ALTER TABLE table_name RENAME TO new_table_name;
Lệnh ATTACH DATABASE trong SQLite
ATTACH DATABASE 'DatabaseName' As 'Alias-Name';
Lệnh BEGIN TRANSACTION trong SQLite
BEGIN;
or
BEGIN EXCLUSIVE TRANSACTION;
Mệnh đề BETWEEN trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name BETWEEN val-1 AND val-2;
Lệnh COMMIT trong SQLite
COMMIT;
Lệnh CREATE INDEX trong SQLite
CREATE INDEX index_name
ON table_name ( column_name COLLATE NOCASE );
Lệnh CREATE UNIQUE INDEX trong SQLite-
CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);
Lệnh CREATE TABLE trong SQLite
CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);
Lệnh CREATE TRIGGER trong SQLite
CREATE TRIGGER database_name.trigger_name 
BEFORE INSERT ON table_name FOR EACH ROW
BEGIN 
   stmt1; 
   stmt2;
   ....
END;
Lệnh CREATE VIEW trong SQLite
CREATE VIEW database_name.view_name  AS
SELECT statement....;
Lệnh CREATE VIRTUAL TABLE trong SQLite
CREATE VIRTUAL TABLE database_name.table_name USING weblog( access.log );
or
CREATE VIRTUAL TABLE database_name.table_name USING fts3( );
Lệnh COMMIT TRACSACTION trong SQLite
COMMIT;
Mệnh đề COUNT trong SQLite
SELECT COUNT(column_name)
FROM   table_name
WHERE  CONDITION;
Lệnh DELETE trong SQLite
DELETE FROM table_name
WHERE  {CONDITION};
Lệnh DETACH DATABASE trong SQLite
DETACH DATABASE 'Alias-Name';
Mệnh đề DISTINCT trong SQLite
SELECT DISTINCT column1, column2....columnN
FROM   table_name;
Lệnh DROP INDEX tyỏng 
DROP INDEX database_name.index_name;
Lệnh DROP TABLE trong SQLite
DROP TABLE database_name.table_name;
Lệnh DROP VIEW trong SQLite
DROP INDEX database_name.view_name;
Lệnh DROP TRIGGER trong SQLite
DROP INDEX database_name.trigger_name;
Mệnh đề EXISTS trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name EXISTS (SELECT * FROM   table_name );
Lệnh EXPLAIN trong SQLite
EXPLAIN INSERT statement...;
or 
EXPLAIN QUERY PLAN SELECT statement...;
Mệnh đề GLOB trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name GLOB { PATTERN };
Mệnh đề GROUP BY trong SQLite
SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name;
Mệnh đề HAVING trong SQLite
SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name
HAVING (arithematic function condition);
Lệnh INSERT INTO trong SQLite
INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);
Mệnh đề IN trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name IN (val-1, val-2,...val-N);
Mệnh đề LIKE trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name LIKE { PATTERN };
Mệnh đề NOT IN trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name NOT IN (val-1, val-2,...val-N);
Mệnh đề ORDER BY trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION
ORDER BY column_name {ASC|DESC};
Lệnh PRAGMA trong SQLite
PRAGMA pragma_name;

For example:

PRAGMA page_size;
PRAGMA cache_size = 1024;
PRAGMA table_info(table_name);
Lệnh RELEASE SAVEPOINT trong SQLite
RELEASE savepoint_name;
Lệnh REINDEX trong SQLite
REINDEX collation_name;
REINDEX database_name.index_name;
REINDEX database_name.table_name;
Lệnh ROLLBACK trong SQLite
ROLLBACK;
or
ROLLBACK TO SAVEPOINT savepoint_name;
Lệnh SAVEPOINT trong SQLite
SAVEPOINT savepoint_name;
Lệnh SELECT trong SQLite
SELECT column1, column2....columnN
FROM   table_name;
Lệnh UPDATE trong SQLite
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE  CONDITION ];
Lệnh VACUUM trong SQLite
VACUUM;
Mệnh đề WHERE trong SQLite
SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION;