======================================================================
 DB::Handy SQL Cheat Sheet
======================================================================

[ Data Types (ប្រភេទ​ទិន្នន័យ) ]
  INT          : ចំនួនគត់ (Integer)
  FLOAT        : ចំនួនទសភាគ (Floating point)
  VARCHAR(n)   : អត្ថបទដែល​អាច​ប្រែប្រួលប្រវែង (អតិបរមា n bytes)
  CHAR(n)      : អត្ថបទដែលមានប្រវែងថេរ (តែងតែ n bytes)

[ 1. CREATE / DROP (បង្កើត និង​លុប​តារាង) ]
  CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(20), score INT);
  DROP TABLE student;

[ 2. INSERT (បញ្ចូល​ទិន្នន័យ) ]
  -- បញ្ចូលទិន្នន័យដោយបញ្ជាក់ជួរឈរ (បានណែនាំ)
  INSERT INTO student (id, name, score) VALUES (1, 'Alice', 85);
  -- បញ្ចូលទិន្នន័យដោយមិនបញ្ជាក់ជួរឈរ
  INSERT INTO student VALUES (2, 'Bob', 70);

[ 3. SELECT (ស្វែងរក​ទិន្នន័យ) ]
  -- ទាញយកទិន្នន័យទាំងអស់
  SELECT * FROM student;
  -- បញ្ជាក់លក្ខខណ្ឌ (WHERE)
  SELECT name, score FROM student WHERE score >= 80;
  -- តម្រៀបទិន្នន័យ (ORDER BY)
  SELECT * FROM student ORDER BY score DESC;
  -- កំណត់ចំនួនជួរដេក (LIMIT)
  SELECT * FROM student ORDER BY score DESC LIMIT 3;

[ 4. UPDATE (កែប្រែ​ទិន្នន័យ) ]
  UPDATE student SET score = 90 WHERE id = 1;

[ 5. DELETE (លុប​ទិន្នន័យ) ]
  DELETE FROM student WHERE id = 2;

[ Operators (សញ្ញាប្រមាណវិធី) ]
  ប្រៀបធៀប  : =, <>, !=, >, <, >=, <=
  ចន្លោះ     : BETWEEN 70 AND 90
  បញ្ជី      : IN (1, 2, 3) ឬ NOT IN (1, 2, 3)
  អត្ថបទ     : LIKE 'A%' (ចាប់ផ្តើមដោយ A), LIKE '%A' (បញ្ចប់ដោយ A)
  ពិនិត្យ NULL : IS NULL, IS NOT NULL
  តក្កវិជ្ជា   : AND, OR, NOT

[ Aggregate Functions (អនុគមន៍សរុប) ]
  COUNT(*) : រាប់ចំនួនជួរដេក
  SUM(col) : គណនាផលបូកសរុប
  AVG(col) : គណនាមធ្យមភាគ
  MAX(col) : ស្វែងរកតម្លៃធំបំផុត
  MIN(col) : ស្វែងរកតម្លៃតូចបំផុត
  (ឧទាហរណ៍) SELECT COUNT(*), AVG(score) FROM student;

[ Indexes (បង្កើនល្បឿនដោយប្រើលិបិក្រម) ]
  CREATE INDEX idx_score ON student (score);
  CREATE UNIQUE INDEX uq_name ON student (name);
======================================================================
