đ¸ SQL āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻĒā§āϰāĻļā§āύ āĻ āĻāϤā§āϤāϰāĻ
āĻĒā§āϰāĻļā§āύ ā§§: SQL āĻā§?
āĻāϤā§āϤāϰ:
SQL (Structured Query Language) āĻšāϞ⧠āĻāĻāĻāĻŋ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āϞā§āϝāĻžāĻā§āĻā§ā§ā§āĻ āϝāĻž āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻĄā§āĻāĻž insert, update, delete āĻāĻŦāĻ query āĻāϰāĻžāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
āĻĒā§āϰāĻļā§āύ ⧍: SELECT, INSERT, UPDATE āĻ DELETE āĻāϰ āĻāĻžāĻ āĻā§?
āĻāϤā§āϤāϰ:
-
SELECTâ āĻĄā§āĻāĻžāĻŦā§āĻāϏ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒā§āϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§ -
INSERTâ āύāϤā§āύ āĻĄā§āĻāĻž āϝā§āĻ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§ -
UPDATEâ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄā§āĻāĻž āĻāĻĒāĻĄā§āĻ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§ -
DELETEâ āĻĄā§āĻāĻž āĻŽā§āĻā§ āĻĢā§āϞāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§
āĻĒā§āϰāĻļā§āύ ā§Š: WHERE āĻāĻŦāĻ HAVING āĻāϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
WHERE āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§ row āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŦāĻ āĻāĻāĻŋ GROUP BY āĻāϰ āĻāĻā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
HAVING āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§ aggregate result (āϝā§āĻŽāύ COUNT(), SUM()) āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāϤ⧠āĻāĻŦāĻ āĻāĻāĻŋ GROUP BY āĻāϰ āĻĒāϰ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
āĻĒā§āϰāĻļā§āύ ā§Ē: GROUP BY āĻā§ āĻāĻžāĻā§ āϞāĻžāĻā§?
āĻāϤā§āϤāϰ:
GROUP BY āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§ āĻāĻ āĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ āĻāϞāĻžāĻŽā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻĄā§āĻāĻž āĻā§āϰā§āĻĒ āĻāϰāϤā§, āϏāĻžāϧāĻžāϰāĻŖāϤ aggregate function āĻāϰ āϏāĻžāĻĨā§āĨ¤
āĻĒā§āϰāĻļā§āύ ā§Ģ: Index āĻā§ āĻāĻŦāĻ āĻā§āύ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§?
āĻāϤā§āϤāϰ:
Index āĻšāϞ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏā§āϰ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āϝāĻž āĻĻā§āϰā§āϤ āϏāĻžāϰā§āĻ āĻ āϰāĻŋāĻā§āϰāĻžāĻāĻāĻžāϞ āϏā§āĻŦāĻŋāϧāĻž āĻĻā§ā§āĨ¤ āĻāĻāĻŋ query execution āĻĻā§āϰā§āϤ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
đ¸ āĻĄā§āĻāĻžāĻŦā§āĻāϏ āĻĄāĻŋāĻāĻžāĻāύ āĻ āĻāύāϏā§āĻĒā§āĻ āĻĒā§āϰāĻļā§āύāĻ
āĻĒā§āϰāĻļā§āύ ā§Ŧ: Normalization āĻā§?
āĻāϤā§āϤāϰ:
Normalization āĻšāϞ⧠āĻāĻāĻāĻŋ āĻĒā§āϰāĻā§āϰāĻŋā§āĻž āϝāĻž āĻĄā§āĻāĻžāĻŦā§āĻāϏāĻā§ redundancy (āĻāĻāĻ āĻĄā§āĻāĻž āĻŦāĻžāϰāĻŦāĻžāϰ āϰāĻžāĻāĻž) āĻāĻŽāĻŋā§ā§ āĻāĻŦāĻ āĻĄā§āĻāĻž integrity āĻŦāĻžā§āĻŋā§ā§ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰā§āĨ¤
āĻĒā§āϰāĻļā§āύ ā§: 1NF, 2NF, 3NF āĻā§?
āĻāϤā§āϤāϰ:
-
1NF: āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏā§āϞ āĻā§āϝāĻžāĻāĻŽāĻŋāĻ āĻā§āϝāĻžāϞ⧠āϰāĻžāĻā§ -
2NF: 1NF + āϏāĻŽā§āĻĒā§āϰā§āĻŖ primary key āύāĻŋāϰā§āĻāϰāĻļā§āϞāϤāĻž -
3NF: 2NF + āĻā§āϰāĻžāύāĻāĻŋāĻāĻŋāĻ āύāĻŋāϰā§āĻāϰāĻļā§āϞāϤāĻž āĻĻā§āϰ āĻāϰāĻž
āĻĒā§āϰāĻļā§āύ ā§Ž: Primary Key āĻāĻŦāĻ Unique Key āĻāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
-
Primary Key â
āĻĒā§āϰāϤāĻŋāĻāĻŋ row āĻā§ āĻāĻāύāĻŋāĻāĻāĻžāĻŦā§āĻļāύāĻžāĻā§āϤ āĻāϰā§,null āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠āύāĻž -
Unique Key â
āĻāĻāύāĻŋāĻ āĻŽāĻžāύāϰāĻžāĻāϤ⧠āĻĒāĻžāϰā§, āϤāĻŦā§āĻāĻāĻŦāĻžāϰ nullāĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§
āĻĒā§āϰāĻļā§āύ ⧝: Foreign Key āĻā§?
āĻāϤā§āϤāϰ:
āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞā§āϰ āĻāϞāĻžāĻŽ āϝāĻž āĻ
āύā§āϝ āĻā§āĻŦāĻŋāϞā§āϰ Primary Key āĻā§ āϰā§āĻĢāĻžāϰ āĻāϰā§, āĻāĻāĻžāĻā§ Foreign Key āĻŦāϞā§āĨ¤
āĻĒā§āϰāĻļā§āύ ā§§ā§Ļ: ACID āĻŽāĻžāύ⧠āĻā§ āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§? āĻāĻĻāĻžāĻšāϰāĻŖ āϏāĻš āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰā§?
āĻāϤā§āϤāϰ:
đ¸ ACID āĻā§?
ACID āĻšāϞ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻžāϰ ā§ĒāĻāĻŋ āĻŽā§āϞāĻŋāĻ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϝāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻĄā§āĻāĻž āύāĻŋāϰā§āĻā§āϞ, āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ āĻ āϏā§āϰāĻā§āώāĻŋāϤ āĻĨāĻžāĻāĻŦā§āĨ¤
ACID āĻāϰ āĻĒā§āϰ⧠āĻ
āϰā§āĻĨ:
- A â Atomicity
- C â Consistency
- I â Isolation
- D â Durability
đš 1. Atomicity (āĻĒāϰāĻŽāĻžāĻŖāĻŦāĻŋāĻāϤāĻž)
āĻŦā§āϝāĻžāĻā§āϝāĻž: āĻāĻāĻāĻŋ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϏāĻĢāϞ āĻšāϤ⧠āĻšāĻŦā§ āĻ
āĻĨāĻŦāĻž āĻāĻāĻĻāĻŽāĻ āĻšāĻŦā§ āύāĻžāĨ¤ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻā§āύ āĻāĻžāĻ āĻšāĻŦā§ āύāĻžāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰā§, āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϤāĻžāϰ āĻāĻāĻžāĻāύā§āĻ āĻĨā§āĻā§ āĻāĻžāĻāĻž āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϰāĻā§ āĻ
āύā§āϝ āĻāĻāĻžāĻāύā§āĻā§āĨ¤
- āĻĒā§āϰāĻĨāĻŽā§ āĻāĻžāĻāĻž āĻāĻžāĻāĻŦā§
- āϤāĻžāϰāĻĒāϰ āϏā§āĻ āĻāĻžāĻāĻž āĻ āύā§āϝ āĻāĻāĻžāĻāύā§āĻā§ āϝā§āĻ āĻšāĻŦā§
āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āϧāĻžāĻĒā§ āĻāĻžāĻāĻž āĻāĻžāĻā§ āĻāĻŋāύā§āϤ⧠āĻĻā§āĻŦāĻŋāϤā§ā§ āϧāĻžāĻĒā§ āĻā§āύ⧠āĻāĻžāϰāĻŖā§ āϝā§āĻ āύāĻž āĻšā§, āϤāĻžāĻšāϞ⧠āĻĒā§āϰ⧠āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ rollback āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤ āĻ āϰā§āĻĨāĻžā§, āĻāĻžāĻāĻž āĻāĻžāĻāĻž āĻšāĻŦā§ āύāĻž â āĻāĻāĻž AtomicityāĨ¤
đš 2. Consistency (āϏāĻžāĻŽāĻā§āĻāϏā§āϝāϤāĻž)
āĻŦā§āϝāĻžāĻā§āϝāĻž: āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύā§āϰ āĻĒāϰ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏ āĻ āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ valid āĻŦāĻž consistent state āĻ āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰ⧠āĻŦā§āϝāĻžāϞā§āύā§āϏ āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϰāĻžāϰ āύāĻŋā§āĻŽ āĻšāϞ⧠â āĻāĻāĻžāĻāύā§āĻā§ āύā§āϝā§āύāϤāĻŽ ā§Ģā§Ļā§Ļ āĻāĻžāĻāĻž āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤
āϝāĻĻāĻŋ ⧍ā§Ļā§Ļ āĻāĻžāĻāĻž āĻĨāĻžāĻāĻž āĻ
āĻŦāϏā§āĻĨāĻžā§ ā§§ā§Ļā§Ļ āĻāĻžāĻāĻž āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§, āϤāĻžāĻšāϞ⧠consistency rule āĻā§āĻā§ āϝāĻžāĻŦā§, āϤāĻžāĻ āĻāĻŽāύ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āϏāĻĢāϞ āĻšāĻŦā§ āύāĻžāĨ¤
đš 3. Isolation (āĻĒā§āĻĨāĻāϤāĻž)
āĻŦā§āϝāĻžāĻā§āϝāĻž: āĻāĻāĻžāϧāĻŋāĻ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻāĻāϏāĻžāĻĨā§ āĻāϞāϞā§āĻ, āϤāĻžāϰāĻž āϝā§āύ āĻāĻā§ āĻ
āĻĒāϰā§āϰ āĻāĻĒāϰ āĻĒā§āϰāĻāĻžāĻŦ āύāĻž āĻĢā§āϞ⧠āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋāϰ āϰā§āĻāĻžāϞā§āĻ āϝā§āύ āĻāϞāĻžāĻĻāĻž āĻāĻžāĻŦā§āĻ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ āĻĨāĻžāĻā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰ⧠āĻāĻāĻ āϏāĻŽā§ āĻĻā§āĻāĻāύ āĻāĻāĻāĻžāϰ āĻāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻžāϞā§āύā§āϏ āĻāĻĒāĻĄā§āĻ āĻāϰāĻā§āĨ¤ Isolation āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝā§āύ āĻāĻāĻāĻŋāϰ āĻāĻĒāĻĄā§āĻ āĻ
āύā§āϝāĻāĻŋāϰ āĻĄā§āĻāĻž corrupt āύāĻž āĻāϰā§āĨ¤ āύāĻž āĻšāϞ⧠race condition āĻŦāĻž dirty read āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
đš 4. Durability (āϏā§āĻĨāĻžā§āĻŋāϤā§āĻŦ)
āĻŦā§āϝāĻžāĻā§āϝāĻž: āĻāĻāĻŦāĻžāϰ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āϏāĻĢāϞ āĻšāϞ⧠āϤāĻž āϏā§āĻĨāĻžā§ā§āĻāĻžāĻŦā§ āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻĨā§āĻā§ āϝāĻžāĻŦā§, āϏāĻžāϰā§āĻāĻžāϰ āϰāĻŋāϏā§āĻāĻžāϰā§āĻ āĻšāϞā§āĻ āĻŽā§āĻā§ āϝāĻžāĻŦā§ āύāĻžāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
āĻāĻāĻāύ āĻāĻāĻāĻžāϰ āĻĒā§āĻŽā§āύā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āϏāĻĢāϞ āĻšā§āĨ¤ āĻāϰāĻĒāϰ āĻšāĻ āĻžā§ āϏāĻžāϰā§āĻāĻžāϰ āĻŦāύā§āϧ āĻšā§ā§ āϝāĻžā§āĨ¤ āĻāĻŋāύā§āϤ⧠āϝāĻāύ āĻāĻŦāĻžāϰ āĻāĻžāϞ⧠āĻšā§, āϤāĻāύāĻ āϏā§āĻ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤ āĻāĻāĻžāĻ DurabilityāĨ¤
đ§ ACID āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻā§āύ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ?
- āĻĄā§āĻāĻž corruption āϰā§āϧ āĻāϰā§
- āĻĄā§āĻāĻžāϰ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝāϤāĻž āĻŦāĻāĻžā§ āϰāĻžāĻā§
- āĻŦā§āϝāĻžāĻā§āĻāĻŋāĻ, e-commerce āĻŦāĻž multi-user system āĻ consistency āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§
- āϏāĻžāϰā§āĻāĻžāϰ failure āĻšāϞā§āĻ data safe āĻĨāĻžāĻā§
â āϏāĻāĻā§āώā§āĻĒā§ āĻŽāύ⧠āϰāĻžāĻāĻžāϰ āĻāĻŋāĻĒāϏ:
| āĻŦā§āĻļāĻŋāώā§āĻā§āϝ | āĻā§ āĻāϰ⧠| āĻāĻĻāĻžāĻšāϰāĻŖ |
|---|---|---|
| Atomicity | āϏāĻŦ āĻŦāĻž āĻāĻŋāĻā§āĻ āύāĻž | āĻāĻžāĻāĻž āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϰāϞ⧠āĻĻā§āĻāĻĒāĻžāĻļā§ āϏāĻĢāϞ āĻšāϤ⧠āĻšāĻŦā§ |
| Consistency | āύāĻŋāϝāĻŧāĻŽ āĻŽāĻžāύāĻž | āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύā§āϰ āĻĒāϰ āϰā§āϞ āĻāĻžāĻāĻž āϝāĻžāĻŦā§ āύāĻž |
| Isolation | āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻāϞāĻžāĻĻāĻž | āĻāĻāϏāĻžāĻĨā§ āĻāĻāĻžāϧāĻŋāĻ update āĻšāϞā§āĻ āĻāĻĄāĻŧāĻŽāĻŋāϞ āĻšāĻŦā§ āύāĻž |
| Durability | āϏā§āĻĨāĻžāϝāĻŧā§ āĻāϰ⧠| āϏāĻĢāϞ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻšāĻžāϰāĻžāĻŦā§ āύāĻž |
đ¸ SQL JOIN āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻĒā§āϰāĻļā§āύ āĻ āĻāϤā§āϤāϰāĻ
āĻĒā§āϰāĻļā§āύ ā§§ā§§: SQL JOIN āĻā§?
āĻāϤā§āϤāϰ:
JOIN āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻžāϧāĻŋāĻ āĻā§āĻŦāĻŋāϞ āĻĨā§āĻā§ āϏāĻŽā§āĻĒāϰā§āĻāϝā§āĻā§āϤ āĻĄā§āĻāĻž āĻāĻāϤā§āϰ⧠āĻāύāĻž āĻšā§āĨ¤
āĻĒā§āϰāĻļā§āύ ⧧⧍: INNER JOIN āĻā§?
āĻāϤā§āϤāϰ:
āĻĻā§āĻ āĻā§āĻŦāĻŋāϞā§āϰ āϝā§āϏāĻŦ āϰā§āĻāϰā§āĻĄ āĻŽā§āϝāĻžāĻ āĻāϰ⧠āĻā§āĻŦāϞ āϏā§āĻā§āϞā§āĻ āĻĻā§āĻāĻžā§āĨ¤
āĻĒā§āϰāĻļā§āύ ā§§ā§Š: LEFT JOIN āĻāĻŦāĻ RIGHT JOIN āĻāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
-
LEFT JOIN: āĻŦāĻžāĻŽ āĻā§āĻŦāĻŋāϞā§āϰ āϏāĻŦ āϰā§āĻāϰā§āĻĄ āĻāĻŦāĻ āĻĄāĻžāύ āĻā§āĻŦāĻŋāϞā§āϰ āĻŽā§āϝāĻžāĻ āĻāϰāĻž āϰā§āĻāϰā§āĻĄ -
RIGHT JOIN: āĻĄāĻžāύ āĻā§āĻŦāĻŋāϞā§āϰ āϏāĻŦ āϰā§āĻāϰā§āĻĄ āĻāĻŦāĻ āĻŦāĻžāĻŽ āĻā§āĻŦāĻŋāϞā§āϰ āĻŽā§āϝāĻžāĻ āĻāϰāĻž āϰā§āĻāϰā§āĻĄ
āĻĒā§āϰāĻļā§āύ ā§§ā§Ē: FULL OUTER JOIN āĻā§ āĻāϰā§?
āĻāϤā§āϤāϰ:
āĻĻā§āĻ āĻā§āĻŦāĻŋāϞā§āϰ āϏāĻŦ āϰā§āĻāϰā§āĻĄ āĻĻā§āĻāĻžā§, āϝāĻĻāĻŋ āύāĻž āĻŽā§āϝāĻžāĻ āĻāϰ⧠āϤāĻŦā§ null āĻĻā§āĻāĻžā§āĨ¤
āĻĒā§āϰāĻļā§āύ ā§§ā§Ģ: SELF JOIN āĻā§?
āĻāϤā§āϤāϰ:
āϝāĻāύ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞāĻā§ āύāĻŋāĻā§āϰ āϏāĻžāĻĨā§āĻ JOIN āĻāϰāĻž āĻšā§ āϤāĻāύ āϤāĻžāĻā§ SELF JOIN āĻŦāϞā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻšāĻžā§āĻžāϰāĻžāϰā§āĻāĻŋāĻāĻžāϞ āĻĄā§āĻāĻž (āϝā§āĻŽāύ employee-manager) āĻāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
āĻĒā§āϰāĻļā§āύ 16: View āĻāĻŦāĻ Materialized View āĻāϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
-
ViewāĻšāϞ⧠āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻā§ā§āĻžāϞ āĻā§āĻŦāĻŋāϞ āϝāĻž āĻāĻāĻāĻŋ SQL query āĻāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϤā§āϰāĻŋ āĻšā§āĨ¤ āĻāϤ⧠āĻŽā§āϞ āĻĄā§āĻāĻž āĻĨāĻžāĻā§ āύāĻž, āĻā§āĻŦāϞ query āĻāϞā§āĨ¤ -
Materialized ViewāĻšāϞ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻāĻŋāĻ āϝā§āĻāĻŋ query āĻāϰ āϰā§āĻāĻžāϞā§āĻāĻā§ āĻĢāĻŋāĻāĻŋāĻā§āϝāĻžāϞāĻŋ āϏā§āĻā§āϰ āĻāϰ⧠āϰāĻžāĻā§, āĻĢāϞ⧠āĻĻā§āϰā§āϤ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤
āĻĒā§āϰāĻļā§āύ 17: Stored Procedure āĻ Function āĻāϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
-
Stored ProcedureāĻāĻāĻžāϧāĻŋāĻ āϏā§āĻā§āĻāĻŽā§āύā§āĻā§āϰ āϏāĻŽāύā§āĻŦāϝāĻŧā§ āϤā§āϰāĻŋ āĻāĻŦāĻ āĻāĻāĻŋ return āύāĻž-āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ -
FunctionāϏāϰā§āĻŦāĻĻāĻž āĻāĻāĻāĻŋ āĻŽāĻžāύ return āĻāϰ⧠āĻāĻŦāĻ āϏāĻžāϧāĻžāϰāĻŖāϤ SELECT statement āĻāϰ āĻŽāϧā§āϝ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§āĨ¤
āĻĒā§āϰāĻļā§āύ 18: Index āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§? āĻāĻŦāĻ āĻāĻāύ Index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻāĻŋāϤ āύā§?
āĻāϤā§āϤāϰ:
Index āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ (āϝā§āĻŽāύ B-Tree) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāĻžāϰā§āĻ āĻ
āĻĒāĻžāϰā§āĻļāύ āĻĻā§āϰā§āϤ āĻāϰā§āĨ¤
Index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻāĻŋāϤ āύ⧠āϝāĻĻāĻŋ:
- āĻāĻĒāύāĻŋ āĻā§āĻŦāĻ āĻā§āĻ āĻā§āĻŦāĻŋāϞ āύāĻŋā§ā§ āĻāĻžāĻ āĻāϰāĻā§āύ
- āĻāĻĒāύāĻŋ āĻĒā§āϰāĻā§āϰ insert/update/delete āĻāϰāĻā§āύ (āĻāĻžāϰāĻŖ āĻāĻā§āϞ⧠index āϰāĻŋāĻĢā§āϰā§āĻļ āĻāϰāϤ⧠āĻšā§)
- āĻāĻĒāύāĻŋ āĻāĻŽāύ āĻāϞāĻžāĻŽā§ index āĻāϰāĻā§āύ āϝā§āĻāĻžāύ⧠āĻā§āϝāĻžāϞā§āĻā§āϞā§āϰ āĻā§āϝāĻžāϰāĻŋā§ā§āĻļāύ āĻā§āĻŦ āĻāĻŽ (low cardinality)
āĻĒā§āϰāĻļā§āύ 19: Query Optimization āĻā§āĻāĻžāĻŦā§ āĻāϰāĻŦā§āύ?
āĻāϤā§āϤāϰ:
- āĻĒā§āϰā§ā§āĻāύāĻšā§āύ
SELECT *āĻŦāĻžāĻĻ āĻĻāĻŋā§ā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϞāĻžāĻŽ āĻŦā§āĻā§ āύāĻŋāύ - Index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
- Subquery āĻāϰ āĻŦāĻĻāϞ⧠JOIN āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
-
Query Execution Plan (EXPLAIN)āĻĻā§āĻā§ āĻŦā§āĻā§āύ āĻā§āĻĨāĻžā§ āϏāĻŽā§ āĻŦā§āĻļāĻŋ āϞāĻžāĻāĻā§ - Aggregate query āĻā§āϞā§āϤ⧠GROUP BY āϏāĻžāĻŦāϧāĻžāύ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
āĻĒā§āϰāĻļā§āύ 20: Database Sharding āĻ Replication āĻāϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
- Sharding: āĻĄā§āĻāĻž āĻā§ horizontally āĻŦāĻŋāĻāĻŋāύā§āύ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻžāĻ āĻāϰ⧠āϰāĻžāĻā§ (āĻŦā§ āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āϞā§āĻĄ āĻāĻŽāĻžāϤā§)
- Replication: āĻāĻāĻ āĻĄā§āĻāĻž āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻĒāĻŋ āĻāϰ⧠āϰāĻžāĻāĻž āĻšā§ (failover āĻ read-performance āĻŦāĻžā§āĻžāϤā§)
āĻĒā§āϰāĻļā§āύ 21: Deadlock āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻŦā§āύ?
āĻāϤā§āϤāϰ:
Deadlock āϤāĻāύ āĻāĻā§ āϝāĻāύ āĻĻā§āĻāĻŋ āĻŦāĻž āϤāϤā§āϧāĻŋāĻ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻāĻā§ āĻ
āĻĒāϰā§āϰ āϰāĻŋāϏā§āϰā§āϏā§āϰ āĻāύā§āϝ āĻ
āĻĒā§āĻā§āώāĻž āĻāϰāϤ⧠āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻā§āĻāĻ āĻāĻžāĻ āĻļā§āώ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤
Deadlock āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻžāϰ āĻāĻĒāĻžā§āĻ
- āϞāĻ āύā§āĻŦāĻžāϰ order āĻ āĻŋāĻ āϰāĻžāĻāĻž
- āĻā§āĻ transaction āϰāĻžāĻāĻž
- Retry mechanism āϝā§āĻā§āϤ āĻāϰāĻž
- Timeout āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž
āĻĒā§āϰāĻļā§āύ 22: ORM (āϝā§āĻŽāύ Eloquent) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠performance issue āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻā§āύ?
āĻāϤā§āϤāϰ:
- Eager loading āύāĻž āĻāϰāϞā§
N+1problem āĻšā§ - Unnecessary query generate āĻšā§ āϝāĻĻāĻŋ āϝāĻĨāĻžāϝāĻĨāĻāĻžāĻŦā§
scope āĻŦāĻž relationship define āύāĻž āĻāϰāĻž āĻšā§ - Raw SQL āĻŦāĻž
optimized query āĻŦā§āϝāĻŦāĻšāĻžāϰā§performance āĻ āύā§āĻ āĻŦā§ā§ā§ āϝā§āϤ⧠āĻĒāĻžāϰ⧠ORM āĻāϰ āϤā§āϞāύāĻžā§
āĻĒā§āϰāĻļā§āύ 23: Eager Loading vs Lazy Loading â āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
- Eager Loading: āĻāĻāϏāĻžāĻĨā§ related āĻĄā§āĻāĻž āϞā§āĻĄ āĻāϰ⧠(query optimization friendly)
- Lazy Loading: āϝāĻāύ āĻĒā§āϰā§ā§āĻāύ āĻšā§ āϤāĻāύ related āĻĄā§āĻāĻž āϞā§āĻĄ āĻāϰ⧠(āϧā§āϰ⧠āĻāĻžāĻ āĻāϰā§, N+1 problem āĻšāϤ⧠āĻĒāĻžāϰā§)
āĻĒā§āϰāĻļā§āύ 24: Transaction isolation level āĻā§āϞ⧠āĻā§ āĻā§?
āĻāϤā§āϤāϰ:
-
Read Uncommitted:āĻ āύā§āϝ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻĨā§āĻā§ uncommitted āĻĄā§āĻāĻž āĻĒā§āĻž āϝāĻžā§ (Dirty Read) -
Read Committed: āĻā§āĻŦāϞ committed āĻĄā§āĻāĻž āĻĒā§ā§ -
Repeatable Read: āĻāĻāĻ query āĻŦāĻžāϰāĻŦāĻžāϰ āĻāϰāϞ⧠āĻāĻāĻ āϰā§āĻāĻžāϞā§āĻ āĻĒāĻžāĻŦā§āύ -
Serializable: āϏāϰā§āĻŦā§āĻā§āĻ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž, āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻāĻā§ āĻ āĻĒāϰā§āϰ āĻŽāϤ⧠behave āĻāϰ⧠āϝā§āύ āϏāĻŋāĻā§āĻā§āϞ āĻĨā§āϰā§āĻĄā§ āĻšāĻā§āĻā§
āĻĒā§āϰāĻļā§āύ 25: âEXPLAINâ āĻāĻŽāĻžāύā§āĻĄ āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§?
āĻāϤā§āϤāϰ:
EXPLAIN āĻāĻŽāĻžāύā§āĻĄ āĻĻāĻŋā§ā§ SQL query āĻāϰ execution plan āĻĻā§āĻāĻž āϝāĻžā§āĨ¤ āĻāĻāĻŋ āĻĻā§āĻāĻžā§ āĻā§āύ āĻā§āĻŦāĻŋāϞ āĻāĻāύ āϏā§āĻā§āϝāĻžāύ āĻšāĻā§āĻā§, āĻā§āύ index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻā§āĻā§ āĻāϤā§āϝāĻžāĻĻāĻŋ â performance tuning āĻāϰ āĻāύā§āϝ āĻāĻāĻŋ āĻā§āĻŦ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤
āĻĒā§āϰāĻļā§āύ 26: SQL āĻāϰ āĻā§āϝāĻžāĻāĻžāĻāϰāĻŋāĻā§āϞ⧠āĻ āϤāĻžāĻĻā§āϰ āĻāĻžāĻ?
āĻāϤā§āϤāϰ:
i. DDL (Data Definition Language)
đ āĻāĻĻā§āĻĻā§āĻļā§āϝ: āĻĄā§āĻāĻžāĻŦā§āĻāϏā§āϰ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āĻŦāĻž āϏā§āĻāĻŋāĻŽāĻž āϤā§āϰāĻŋ āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāĨ¤
| āĻāĻŽāĻžāύā§āĻĄ | āĻŦā§āϝāĻžāĻā§āϝāĻž |
|---|---|
| CREATE | āύāϤā§āύ āĻā§āĻŦāĻŋāϞ āĻŦāĻž āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰ⧠|
| ALTER | āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻ āύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠|
| DROP | āĻā§āĻŦāĻŋāϞ āĻŦāĻž āĻ āĻŦāĻā§āĻā§āĻ āĻĄāĻŋāϞāĻŋāĻ āĻāϰ⧠|
| TRUNCATE | āĻā§āĻŦāĻŋāϞ āĻāĻžāϞāĻŋ āĻāϰ⧠(structure āĻĨāĻžāĻā§) |
| RENAME | āĻā§āĻŦāĻŋāϞ āĻŦāĻž āĻāϞāĻžāĻŽā§āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠|
ii. DML (Data Manipulation Language)
đ āĻāĻĻā§āĻĻā§āĻļā§āϝ: āĻĄā§āĻāĻž āĻāύāϏāĻžāϰā§āĻ, āĻāĻĒāĻĄā§āĻ āĻŦāĻž āĻĄāĻŋāϞāĻŋāĻ āĻāϰāĻžāĨ¤
| āĻāĻŽāĻžāύā§āĻĄ | āĻŦā§āϝāĻžāĻā§āϝāĻž |
|---|---|
| SELECT | āĻĄā§āĻāĻž āϰāĻŋāĻĄ āĻāϰ⧠|
| INSERT | āĻĄā§āĻāĻž āϝā§āĻ āĻāϰ⧠|
| UPDATE | āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠|
| DELETE | āĻĄā§āĻāĻž āĻĄāĻŋāϞāĻŋāĻ āĻāϰ⧠|
đ āĻ āύā§āĻā§ āϏāĻŽāϝāĻŧ
SELECTāĻā§ DQL (Data Query Language) āĻšāĻŋāϏā§āĻŦā§āĻ āĻĻā§āĻāĻž āĻšāϝāĻŧāĨ¤
3. DQL (Data Query Language)
đ āĻāĻĻā§āĻĻā§āĻļā§āϝ: āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĄā§āĻāĻž query āĻāϰāĻž āĻŦāĻž āϰāĻŋāĻĄ āĻāϰāĻžāĨ¤
| āĻāĻŽāĻžāύā§āĻĄ | āĻŦā§āϝāĻžāĻā§āϝāĻž |
|---|---|
| SELECT | āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāĻžāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ |
â ī¸ āĻā§āĻāύāĻŋāĻā§āϝāĻžāϞāĻŋ SELECT DML āĻāϰ āĻ
āĻāĻļ āĻšāϞā§āĻ āĻ
āύā§āĻ āϏāĻŽāϝāĻŧ āĻāϞāĻžāĻĻāĻžāĻāĻžāĻŦā§ DQL āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻšāϝāĻŧāĨ¤
4. DCL (Data Control Language)
đ āĻāĻĻā§āĻĻā§āĻļā§āϝ: āĻĄā§āĻāĻžāĻŦā§āĻāϏā§āϰ access control āĻŦāĻž āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻāϝāĻŧāĻž/āύā§āĻāϝāĻŧāĻžāĨ¤
| āĻāĻŽāĻžāύā§āĻĄ | āĻŦā§āϝāĻžāĻā§āϝāĻž |
|---|---|
| GRANT | āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻĻā§āϝāĻŧ |
| REVOKE | āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻŦāĻžāϤāĻŋāϞ āĻāϰ⧠|
5. TCL (Transaction Control Language)
đ āĻāĻĻā§āĻĻā§āĻļā§āϝ: āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāĻžāĨ¤
| āĻāĻŽāĻžāύā§āĻĄ | āĻŦā§āϝāĻžāĻā§āϝāĻž |
|---|---|
| COMMIT | āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āϏā§āĻĨāĻžāϝāĻŧā§ āĻāϰ⧠|
| ROLLBACK | āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻŦāĻžāϤāĻŋāϞ āĻāϰ⧠āĻĒā§āϰā§āĻŦāĻžāĻŦāϏā§āĻĨāĻžāϝāĻŧ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āύā§āϝāĻŧ |
| SAVEPOINT | āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāϝāĻŧā§āύā§āĻā§ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āϏā§āĻ āĻāϰ⧠|
| SET TRANSACTION | āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻāϏā§āϞā§āĻļāύ āϞā§āĻā§āϞ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰ⧠|
6. CCL (Concurrency Control Language) đ
đ āĻāĻāĻŋ āĻ āύā§āĻ āϏāĻŽāϝāĻŧ āĻāϞā§āĻāύāĻž āĻšāϝāĻŧ, āĻāĻŋāύā§āϤ⧠SQL standard āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻāĻāĻžāĻŦā§ CCL āύā§āĻāĨ¤ āϤāĻŦā§ āĻāĻāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦā§āĻāĻžāύ⧠āĻšāϝāĻŧ:
- LOCK, UNLOCK, āĻŦāĻž Concurrency Handling Techniques
- āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻŦāĻž Deadlock/Isolation Level āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖā§āϰ āĻāύā§āϝāĨ¤
â ī¸ āĻāĻāĻŋ āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻāϞāĻžāĻĻāĻž āĻā§āϝāĻžāĻāĻžāĻāϰāĻŋ āĻšāĻŋāϏā§āĻŦā§ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ āύāĻž, āĻāĻŋāύā§āϤ⧠concurrency control mechanism āĻāϰ āĻ āĻāĻļ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧāĨ¤
â āϏāĻāĻā§āώā§āĻĒā§ āĻŽāύ⧠āϰāĻžāĻāĻžāϰ āĻā§āϰāĻŋāĻ:
| āĻā§āϝāĻžāĻāĻžāĻāϰāĻŋ | āĻāĻžāĻ |
|---|---|
| DDL | Structure define āĻāϰ⧠|
| DML | āĻĄā§āĻāĻž manage āĻāϰ⧠|
| DQL | āĻĄā§āĻāĻž query āĻāϰ⧠|
| DCL | āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰ⧠|
| TCL | āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰ⧠|
| CCL | concurrency āĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ āĻāĻā§āϏā§āϏ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰ⧠(non-standard) |
āĻĒā§āϰāĻļā§āύ 27: constraint āĻāĻŋ āĻ āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāϞā§āĻāύāĻž āĻāϰā§?
āĻāϤā§āϤāϰ:
â Constraint āĻā§?
Constraint āĻšāϞ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏā§āϰ āĻāĻāĻāĻŋ āύāĻŋā§āĻŽ āĻŦāĻž āĻŦāĻŋāϧāĻŋāύāĻŋāώā§āϧ (rule) āϝāĻž āĻā§āĻŦāĻŋāϞā§āϰ āĻĄā§āĻāĻžāϰ āĻāĻĒāϰ āĻĒā§āϰā§ā§āĻ āĻāϰāĻž āĻšā§, āϝāĻžāϤ⧠āĻĄā§āĻāĻžāϰ āϏāĻ āĻŋāĻāϤāĻž (accuracy), āύāĻŋāϰā§āĻā§āϞāϤāĻž (integrity) āĻāĻŦāĻ consistency āĻŦāĻāĻžā§ āĻĨāĻžāĻā§āĨ¤
đ āϏāĻšāĻāĻāĻžāĻŦā§:
Constraint āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏ⧠āĻā§āϞ āĻŦāĻž āĻ
āĻĒā§āϰā§ā§āĻāύā§ā§ āĻĄā§āĻāĻž āĻĸā§āĻāϤ⧠āύāĻž āĻĒāĻžāϰā§āĨ¤
đ¯ Constraint āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§?
Constraint āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻŽā§āϞ āĻāĻĻā§āĻĻā§āĻļā§āϝ:
- â āĻā§āϞ āĻĄā§āĻāĻž āĻāύāϏāĻžāϰā§āĻ āĻšāĻā§āĻž āĻŦāύā§āϧ āĻāϰāĻž
- â āĻĄā§āĻāĻžāϰ integrity āĻŦāĻāĻžā§ āϰāĻžāĻāĻž
- đ āĻā§āĻŦāĻŋāϞāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āϏāĻŽā§āĻĒāϰā§āĻ āĻ āĻŋāĻ āϰāĻžāĻāĻž
- ⥠āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āϞāĻāĻŋāĻā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āύāĻž āĻāϰ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏ āϞā§āĻā§āϞā§āĻ validation āĻāϰāĻž
đ¸ Constraint āĻāϰ āϧāϰāύ āĻ āĻŦā§āϝāĻžāĻā§āϝāĻž
1. PRIMARY KEY
đ āĻĒā§āϰāϤāĻŋāĻāĻŋ row āĻā§ āĻāĻāύāĻŋāĻāĻāĻžāĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰā§āĨ¤
āĻŦā§āĻļāĻŋāώā§āĻā§āϝ:
- āĻāĻāύāĻŋāĻ āĻšāϤ⧠āĻšāĻŦā§
- NULL āĻšāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻž
āĻāĻĻāĻžāĻšāϰāĻŖ:
id INT PRIMARY KEY
đ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ⧠āĻāĻāĻāĻŋāĻ PRIMARY KEY āĻĨāĻžāĻā§āĨ¤
2. FOREIGN KEY
đ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞā§āϰ āĻāϞāĻžāĻŽ āĻ āύā§āϝ āĻā§āĻŦāĻŋāϞā§āϰ PRIMARY KEY āĻā§ āϰā§āĻĢāĻžāϰ āĻāϰā§āĨ¤
āĻāĻžāĻ:
- āĻā§āĻŦāĻŋāϞā§āϰ āĻŽāϧā§āϝ⧠relationship āϤā§āϰāĻŋ āĻāϰā§
- invalid reference āĻāĻāĻāĻžā§
āĻāĻĻāĻžāĻšāϰāĻŖ:
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
đ āϝāĻĻāĻŋ users āĻā§āĻŦāĻŋāϞ⧠āĻāĻ id āύāĻž āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠insert āĻšāĻŦā§ āύāĻžāĨ¤
3. UNIQUE
đ āĻāϞāĻžāĻŽā§āϰ āϏāĻŦ āĻā§āϝāĻžāϞ⧠āĻāĻāύāĻŋāĻ āĻšāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
email VARCHAR(255) UNIQUE
đ Duplicate email āĻĸā§āĻāĻžāύ⧠āϝāĻžāĻŦā§ āύāĻžāĨ¤
4. NOT NULL
đ āĻā§āύ⧠āĻāϞāĻžāĻŽā§ NULL āĻā§āϝāĻžāϞ⧠āϰāĻžāĻāĻž āϝāĻžāĻŦā§ āύāĻžāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
name VARCHAR(100) NOT NULL
đ name āĻ āĻŦāĻļā§āϝāĻ āĻĻāĻŋāϤ⧠āĻšāĻŦā§āĨ¤
5. CHECK
đ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻļāϰā§āϤ āĻĒā§āϰāĻŖ āĻāϰāϞ⧠āϤāĻŦā§āĻ āĻĄā§āĻāĻž āĻāύāϏāĻžāϰā§āĻ/āĻāĻĒāĻĄā§āĻ āĻšāĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
age INT CHECK (age >= 18)
đ ā§§ā§Ž āĻŦāĻāϰā§āϰ āĻāĻŽ āĻŦā§āϏ āĻšāϞ⧠insert āĻšāĻŦā§ āύāĻžāĨ¤
6. DEFAULT
đ āĻā§āύ⧠āĻā§āϝāĻžāϞ⧠āύāĻž āĻĻāĻŋāϞ⧠āĻĄāĻŋāĻĢāϞā§āĻ āĻā§āϝāĻžāϞ⧠āϏā§āĻ āĻāϰā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
status VARCHAR(20) DEFAULT 'active'
đ status āύāĻž āĻĻāĻŋāϞ⧠auto 'active' āĻšāĻŦā§āĨ¤
đĨ āĻŦāĻžāϏā§āϤāĻŦ āĻāĻĻāĻžāĻšāϰāĻŖ (Real-world scenario)
āϧāϰ⧠āĻāĻāĻāĻŋ orders āĻā§āĻŦāĻŋāϞ:
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2) CHECK (amount > 0),
status VARCHAR(20) DEFAULT 'pending',
FOREIGN KEY (user_id) REFERENCES users(id)
);
đ āĻāĻāĻžāύā§:
-
idâ āĻāĻāύāĻŋāĻ (PRIMARY KEY) -
user_idâ āĻ āĻŦāĻļā§āϝāĻ users āĻā§āĻŦāĻŋāϞ⧠āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§ (FOREIGN KEY) -
amountâ 0 āĻāϰ āĻŦā§āĻļāĻŋ āĻšāϤ⧠āĻšāĻŦā§ (CHECK) -
statusâ āύāĻž āĻĻāĻŋāϞ⧠'pending' āĻšāĻŦā§ (DEFAULT)
⥠Interview Tips (āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻĒā§ā§āύā§āĻ)
Constraint = Data integrity enforcement at DB level
Application validation āĻĨāĻžāĻāϞā§āĻ DB constraint āĻĨāĻžāĻāĻž āĻāϰā§āϰāĻŋ
Foreign key = relationship + data safety
CHECK constraint āϏāĻŦ DB-āϤ⧠fully supported āύāĻž (āϝā§āĻŽāύ āĻāĻŋāĻā§ MySQL version āĻ limitation āĻāĻā§)
â āϏāĻāĻā§āώā§āĻĒā§:
| Constraint | āĻāĻžāĻ |
|---|---|
| PRIMARY KEY | āĻāĻāύāĻŋāĻ āĻāĻāĻĄāĻŋ |
| FOREIGN KEY | āϏāĻŽā§āĻĒāϰā§āĻ āϤā§āϰāĻŋ |
| UNIQUE | āĻĄā§āĻĒā§āϞāĻŋāĻā§āĻ āϰā§āϧ |
| NOT NULL | āĻĢāĻžāĻāĻāĻž āύāĻž āϰāĻžāĻāĻž |
| CHECK | āĻļāϰā§āϤ āĻāϰā§āĻĒ |
| DEFAULT | āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύ āĻĻā§āĻāϝāĻŧāĻž |
āĻĒā§āϰāĻļā§āύ 28: Sql āĻ group_by āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ āĻāĻĻāĻžāĻšāϰāĻŖ āϏāĻš āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰā§?
āĻāϤā§āϤāϰ:
SQL-āĻāϰ GROUP BY āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§ āϝāĻāύ āĻāĻŽāϰāĻž āĻāĻāĻ āϧāϰāύā§āϰ āĻĄā§āĻāĻžāĻā§ āĻā§āϰā§āĻĒ āĻāϰ⧠āϤāĻžāϰ āĻāĻĒāϰ aggregate calculation (COUNT, SUM, AVG, MAX, MIN) āĻāϰāϤ⧠āĻāĻžāĻāĨ¤
āĻāĻŽāĻŋ āϏāĻšāĻ āĻāĻžāώāĻžā§ āĻāĻĻāĻžāĻšāϰāĻŖāϏāĻš āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻāĻŋ đ
đš GROUP BY āĻā§?
GROUP BY āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻāĻ āĻŽāĻžāύā§āϰ row āĻā§āϞā§āĻā§ āĻāĻāϤā§āϰ (group) āĻāϰā§
āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ group-āĻāϰ āĻāĻĒāϰ aggregate function āĻĒā§āϰā§ā§āĻ āĻāϰā§āĨ¤
đ āĻāĻĻāĻžāĻšāϰāĻŖ āĻā§āĻŦāĻŋāϞ: orders
| id | customer | amount |
|---|---|---|
| 1 | Rahim | 500 |
| 2 | Karim | 700 |
| 3 | Rahim | 300 |
| 4 | Karim | 200 |
| 5 | Hasan | 400 |
1ī¸âŖ Customer āĻ
āύā§āϝāĻžā§ā§ āĻŽā§āĻ āĻ
āϰā§āĻĄāĻžāϰ āĻāϤ?
SELECT customer, SUM(amount) AS total_amount
FROM orders
GROUP BY customer;
đ āĻĢāϞāĻžāĻĢāϞ:
| customer | total_amount |
|---|---|
| Rahim | 800 |
| Karim | 900 |
| Hasan | 400 |
â āĻāĻāĻ customer-āĻāϰ amount āϝā§āĻ āĻšāϝāĻŧā§āĻā§
2ī¸âŖ Customer āĻ
āύā§āϝāĻžā§ā§ āĻā§āĻāĻž order?
SELECT customer, COUNT(*) AS total_orders
FROM orders
GROUP BY customer;
3ī¸âŖ Average amount per customer
SELECT customer, AVG(amount) AS avg_amount
FROM orders
GROUP BY customer;
4ī¸âŖ GROUP BY + WHERE āĻŦā§āϝāĻŦāĻšāĻžāϰ
WHERE â grouping-āĻāϰ āĻāĻā§āĻ filter āĻāϰā§
SELECT customer, SUM(amount) AS total_amount
FROM orders
WHERE amount > 300
GROUP BY customer;
â ā§Šā§Ļā§Ļ āĻāĻžāĻāĻžāϰ āύāĻŋāĻā§āϰ order āĻŦāĻžāĻĻ
5ī¸âŖ GROUP BY + HAVING āĻŦā§āϝāĻŦāĻšāĻžāϰ
HAVING â grouping-āĻāϰ āĻĒāϰ⧠filter āĻāϰā§
SELECT customer, SUM(amount) AS total_amount
FROM orders
GROUP BY customer
HAVING total_amount > 500;
â āϝāĻžāĻĻā§āϰ total 500-āĻāϰ āĻŦā§āĻļāĻŋ
đ WHERE vs HAVING āĻĒāĻžāϰā§āĻĨāĻā§āϝ
| āĻŦāĻŋāώāϝāĻŧ | WHERE | HAVING |
|---|---|---|
| āĻāĻāύ āĻāĻžāĻ āĻāϰ⧠| GROUP BY āĻāϰ āĻāĻā§ | GROUP BY āĻāϰ āĻĒāϰ⧠|
| Aggregate function | â āύāĻž | â āĻšā§āϝāĻžāĻ |
â ī¸ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āύāĻŋā§āĻŽ
-
SELECT-āĻ āϝā§āϏāĻŦ āĻāϞāĻžāĻŽ aggregate āύāĻž, āϏā§āĻā§āϞ⧠āĻ āĻŦāĻļā§āϝāĻGROUP BY-āϤ⧠āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§
â āĻā§āϞ:
SELECT customer, amount FROM orders
GROUP BY customer;
â āĻ āĻŋāĻ:
SELECT customer, SUM(amount)
FROM orders
GROUP BY customer;
đ§ Interview Ready (1 line):
> GROUP BY āĻāĻāĻ āĻŽāĻžāύā§āϰ row āĻā§āϞā§āĻā§ āĻā§āϰā§āĻĒ āĻāϰ⧠aggregate calculation āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§
āĻĒā§āϰāĻļā§āύ 29: Query Execution Order āĻā§? āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§?
āĻāϤā§āϤāϰ:
đ¸ Query Execution Order āĻā§?
Query Execution Order āĻšāϞ⧠SQL query āϰāĻžāύ āĻāϰāĻžāϰ āϏāĻŽā§ āĻĄā§āĻāĻžāĻŦā§āĻāϏ āĻāĻā§āĻāĻŋāύ āĻā§āύ āĻā§āϰāĻŽā§ (Serial) āĻŦāĻŋāĻāĻŋāύā§āύ clause (āϝā§āĻŽāύ SELECT, WHERE, JOIN) execute āĻāϰ⧠āϤāĻžāϰ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϧāĻžāĻĒāĻāĻŋāϤā§āϤāĻŋāĻ āĻĒā§āϰāĻā§āϰāĻŋā§āĻžāĨ¤
đ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦāĻŋāώā§:
āĻāĻŽāϰāĻž āϝā§āĻāĻžāĻŦā§ SQL āϞāĻŋāĻāĻŋ, āĻĄā§āĻāĻžāĻŦā§āĻāϏ āϏā§āĻ order-āĻ execute āĻāϰ⧠āύāĻž!
đš SQL Query Execution Order (Actual Order):
FROM
JOIN
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT
đš āϏāĻšāĻāĻāĻžāĻŦā§ āĻŦā§āĻāĻŋ:
āϧāϰ⧠āĻāĻāĻāĻŋ query:
SELECT name, COUNT(*)
FROM users
WHERE status = 'active'
GROUP BY name
HAVING COUNT(*) > 1
ORDER BY name;
đ Execution āĻšāĻŦā§ āĻāĻāĻžāĻŦā§:
1. FROM â users āĻā§āĻŦāĻŋāϞ āϞā§āĻĄ āĻāϰā§
2. WHERE â status = 'active' āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰā§
3. GROUP BY â name āĻ
āύā§āϝāĻžā§ā§ āĻā§āϰā§āĻĒ āĻāϰā§
4. HAVING â COUNT() > 1 āĻā§āϰā§āĻĒ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰā§
5. SELECT â name, COUNT() āύā§ā§
6. ORDER BY â name āĻ
āύā§āϝāĻžā§ā§ āϏāĻžāĻāĻžā§
đ¯ āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ/āĻāĻžāύāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ?
1. â Query Debugging āϏāĻšāĻ āĻšā§
āĻā§āύ
WHEREāĻ aggregate function āĻāĻžāĻ āĻāϰ⧠āύāĻž â āĻāĻžāϰāĻŖWHEREāĻāĻā§ execute āĻšā§
2. ⥠Performance OptimizationāĻāĻā§ filter (WHERE) āĻāϰāϞ⧠āĻāĻŽ āĻĄā§āĻāĻž āύāĻŋā§ā§ āĻāĻžāĻ āĻšā§ â query fast āĻšā§
3. đĨ āϏāĻ āĻŋāĻ Result āĻĒāĻžāĻā§āĻžHAVINGvsWHEREāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§ āĻŦā§āĻāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§
4. đĄ Interview Trick Question Handle āĻāϰāϤā§āĻ āύā§āĻ āϏāĻŽā§ āĻāĻŋāĻā§āĻā§āϏ āĻāϰā§:
đ "SELECT āĻāĻā§ āϞāĻŋāĻāĻŋ, āĻāĻŋāύā§āϤ⧠execute āĻļā§āώ⧠āĻšā§ āĻā§āύ?"
đ§ āϏāĻāĻā§āώā§āĻĒā§ āĻŽāύ⧠āϰāĻžāĻāĻžāϰ āĻā§āϰāĻŋāĻ:
đ "From â Where â Group â Having â Select â Order â Limit"
â Final Summary:
Query Execution Order = SQL internally āĻā§āĻāĻžāĻŦā§ step-by-step query execute āĻāϰā§
āĻāĻāĻŋ āĻāĻžāύāĻž āĻĨāĻžāĻāϞā§:
- āĻā§āϞ āĻāĻŽ āĻšāĻŦā§
- performance āĻŦāĻžā§āĻŦā§
- complex query āϏāĻšāĻā§ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§
āĻĒā§āϰāĻļā§āύ 30: SELECT āĻāĻā§ āϞāĻŋāĻāĻŋ, āĻāĻŋāύā§āϤ⧠execute āĻļā§āώ⧠āĻšā§ āĻā§āύ?
āĻāϤā§āϤāϰ:
đ¸ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻāϤā§āϤāϰ (Interview-ready):
āĻāĻŽāϰāĻž SQL query-āϤ⧠SELECT āĻāĻā§ āϞāĻŋāĻāĻŋ āĻāĻžāϰāĻŖ āĻāĻāĻŋ declarative syntax (āĻāĻŋ āĻāĻžāĻ āϤāĻž āĻŦāϞāĻŋ), āĻāĻŋāύā§āϤ⧠āĻĄā§āĻāĻžāĻŦā§āĻāϏ āĻāĻā§āĻāĻŋāύ internally query execute āĻāϰ⧠āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ logical order āĻ
āύā§āϝāĻžā§ā§ â āϝā§āĻāĻžāύ⧠āĻāĻā§ āĻĄā§āĻāĻž āĻā§āĻāĻā§ (FROM, WHERE), āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϏā§āϏ āĻāϰ⧠(GROUP BY, HAVING), āĻāĻŦāĻ āĻļā§āώ⧠āĻā§ āĻĻā§āĻāĻžāĻŦā§ āϤāĻž āĻ āĻŋāĻ āĻāϰ⧠(SELECT)āĨ¤
đš āϏāĻšāĻāĻāĻžāĻŦā§ āĻŦā§āĻāĻŋ (Real Logic):
āϧāϰā§, āϤā§āĻŽāĻŋ āĻŦāϞāĻā§:
đ âāĻāĻŽāĻžāĻā§ active user āĻā§āϞā§āϰ āύāĻžāĻŽ āĻĻā§āĻāĻžāĻâ
āĻāĻāύ DB āĻā§ āĻāϰāĻŦā§?
1. FROM â āĻāĻā§ āĻā§āĻŦāĻŋāϞ (users) āĻĨā§āĻā§ āĻĄā§āĻāĻž āύā§āĻŦā§
2. WHERE â āϤāĻžāϰāĻĒāϰ active user āĻā§āϞ⧠āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāĻŦā§
3. GROUP BY / HAVING â āĻĻāϰāĻāĻžāϰ āĻšāϞ⧠āĻā§āϰā§āĻĒāĻŋāĻ āĻāϰāĻŦā§
4. â
SELECTâ āĻļā§āώ⧠āĻ āĻŋāĻ āĻāϰāĻŦā§ āĻā§āύ āĻāϞāĻžāĻŽ (name) āĻĻā§āĻāĻžāĻŦā§
đ āϤāĻžāĻ SELECT logically āĻļā§āώ⧠execute āĻšā§
đš āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ:
SELECT name
FROM users
WHERE status = 'active';
đ Execution flow:
-
FROM usersâ āϏāĻŦ āĻĄā§āĻāĻž āϞā§āĻĄ -
WHERE status = 'active'â āĻļā§āϧ⧠active user āϰāĻžāĻā§ -
SELECT nameâ āĻļā§āϧ⧠name āĻāϞāĻžāĻŽ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰā§
đĨ āĻŽā§āϞ āĻāĻžāϰāĻŖ (Why SELECT last?):
1. â
Data Filtering āĻāĻā§ āĻĻāϰāĻāĻžāϰ
- āĻāĻā§ decide āĻāϰāϤ⧠āĻšāĻŦā§ āĻā§āύ data āϞāĻžāĻāĻŦā§ (WHERE)
āϤāĻžāϰāĻĒāϰ decide āĻšāĻŦā§ āĻā§ āĻĻā§āĻāĻžāĻŦā§ (SELECT)
2. ⥠Performance OptimizationāϏāĻŦ āĻĄā§āĻāĻž āύāĻž āĻāύ⧠āĻāĻā§ filter āĻāϰāϞ⧠query fast āĻšā§
3. đ§ Logical Processing ModelSQL āĻāĻāĻāĻŋ declarative language
āϤā§āĻŽāĻŋ āĻŦāϞ⧠âāĻāĻŋ āĻāĻžāĻâ, DB āύāĻŋāĻā§ āĻ āĻŋāĻ āĻāϰ⧠âāĻāĻŋāĻāĻžāĻŦā§ āĻāύāĻŦā§â
đ¯ Interview Pro Tip:
đ āϝāĻĻāĻŋ interviewer āĻāĻŋāĻā§āĻā§āϏ āĻāϰā§:
"WHERE āĻ alias āĻā§āύ āĻāĻžāĻ āĻāϰ⧠āύāĻž?"
āĻāϤā§āϤāϰ:
- āĻāĻžāϰāĻŖ
SELECTāĻĒāϰ⧠execute āĻšā§, āϤāĻžāĻ alias āϤāĻāύ⧠define āĻšā§āύāĻŋ
â āϏāĻāĻā§āώā§āĻĒā§:
- āĻāĻŽāϰāĻž
SELECTāĻāĻā§ āϞāĻŋāĻāĻŋ â readability & syntax āĻāϰ āĻāύā§āϝ - āĻāĻŋāύā§āϤ⧠DB execute āĻāϰ⧠āĻļā§āώ⧠â āĻāĻžāϰāĻŖ āĻāĻā§ data filter/process āĻāϰāϤ⧠āĻšā§
āĻĒā§āϰāĻļā§āύ 31: what is TRUNCATE? DELETE āĻāĻŦāĻ TRUNCATE āĻāϰ āĻŽāϧā§āϝā§āĻāĻžāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻā§āϞ⧠āύāĻŋā§ā§ āĻāϰāĻ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāϤ⧠āĻāĻžāύ? DROP āĻāĻŽāĻžāύā§āĻĄ āĻāĻŦāĻ TRUNCATE āĻāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāύāϤ⧠āĻāĻžāύ?
āĻāϤā§āϤāϰ:
SQL āĻŦāĻž āĻĄā§āĻāĻžāĻŦā§āϏā§āϰ āĻāĻžāώāĻžā§ TRUNCATE āĻšāϞ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻāĻŽāĻžāύā§āĻĄ āϝāĻž āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞā§āϰ āĻā§āϤāϰā§āϰ āϏāĻŦ āĻĄā§āĻāĻž āĻŦāĻž āϰā§āĻāϰā§āĻĄ āĻāĻāĻŦāĻžāϰ⧠āĻŽā§āĻā§ āĻĢā§āϞā§āĨ¤ āĻāĻāĻŋ āĻŽā§āϞāϤ āĻā§āĻŦāĻŋāϞāĻāĻŋāĻā§ āĻāĻāĻĻāĻŽ āĻāĻžāϞāĻŋ āĻāϰ⧠āĻĻā§ā§, āĻāĻŋāύā§āϤ⧠āĻā§āĻŦāĻŋāϞā§āϰ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ (āĻāϞāĻžāĻŽā§āϰ āύāĻžāĻŽ āĻŦāĻž āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ) āĻ āĻŋāĻ āϰāĻžāĻā§āĨ¤
āϏāĻšāĻāĻāĻžāĻŦā§ āĻŦā§āĻāĻžāϰ āĻāύā§āϝ āĻāϰ āĻŽā§āϞ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞ⧠āύāĻŋāĻā§ āĻĻā§āĻā§āĻž āĻšāϞā§:
ā§§. āϏāĻŦ āĻĄā§āĻāĻž āĻĄāĻŋāϞāĻŋāĻ: āĻāĻāĻŋ āĻā§āĻŦāĻŋāϞā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋ (row) āĻŽā§āĻā§ āĻĢā§āϞā§āĨ¤ āĻāĻĒāύāĻŋ āĻāĻžāĻāϞ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āύ⧠āϏāĻžāϰāĻŋ (āϝā§āĻŽāύ: WHERE id=1) āĻĄāĻŋāϞāĻŋāĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž; āĻāϰāϞ⧠āϏāĻŦ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
⧍. āĻ
āĻā§-āĻāύāĻā§āϰāĻŋāĻŽā§āύā§āĻ āϰāĻŋāϏā§āĻ: āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āĻŦāĻŋāϞ⧠āĻā§āύ⧠ID āĻāϞāĻžāĻŽ āĻĨāĻžāĻā§ āϝāĻž āĻ
āĻā§āĻŽā§āĻāĻŋāĻ āĻŦāĻžā§ā§ (Auto-increment), āϤāĻŦā§ TRUNCATE āĻāϰāĻžāϰ āĻĒāϰ āϏā§āĻāĻŋ āĻāĻŦāĻžāϰ ā§§ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻšāĻŦā§āĨ¤
ā§Š. āĻĻā§āϰā§āϤ āĻāĻžāĻ āĻāϰā§: āĻāĻāĻŋ DELETE āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻā§ā§ā§ āĻ
āύā§āĻ āĻĻā§āϰā§āϤ āĻāĻžāĻ āĻāϰ⧠āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋāϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻžāĻāĻžāĻŦā§ āϞāĻ āĻā§āύāĻžāϰā§āĻ āĻāϰ⧠āύāĻžāĨ¤
ā§Ē. āϰā§āϞāĻŦā§āϝāĻžāĻ āĻāϰāĻž āĻāĻ āĻŋāύ: āϏāĻžāϧāĻžāϰāĻŖ āĻĄāĻŋāĻĢāϞā§āĻ āϏā§āĻāĻŋāĻāϏ⧠TRUNCATE āĻāϰāϞ⧠āϏā§āĻ āĻĄā§āĻāĻž āĻāϰ āϏāĻšāĻā§ āĻĢāĻŋāϰāĻŋā§ā§ āĻāύāĻž (Undo/Rollback) āϝāĻžā§ āύāĻžāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰāĻž āϝāĻžāĻ, āĻāĻĒāύāĻžāϰ users āύāĻžāĻŽā§ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻāĻā§āĨ¤ āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻŋāĻā§āϰ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϞāĻžāύ:
TRUNCATE TABLE users;
āϤāĻžāĻšāϞ⧠āĻāĻ āĻā§āĻŦāĻŋāϞā§āϰ āϏāĻŦ āĻāĻāĻāĻžāϰ āĻĄāĻŋāϞāĻŋāĻ āĻšā§ā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ āĻā§āĻŦāĻŋāϞāĻāĻŋ āĻāĻāĻĻāĻŽ āύāϤā§āύ āĻ āĻŦāϏā§āĻĨāĻžāϰ āĻŽāϤ⧠āĻāĻžāϞāĻŋ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤
TRUNCATE āĻŦāύāĻžāĻŽ DELETE:
-
DELETE: āĻāĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāϰ⧠āϏāĻžāϰāĻŋ āĻŽā§āĻā§ āĻāĻŦāĻ āĻāĻžāĻāϞ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻžāϰāĻŋ āĻŽā§āĻāĻž āϝāĻžā§ (āϝā§āĻŽāύ:
DELETE FROM users WHERE id=5)āĨ¤ āĻāĻāĻŋ āĻ āĻā§-āĻāύāĻā§āϰāĻŋāĻŽā§āύā§āĻ āϰāĻŋāϏā§āĻ āĻāϰ⧠āύāĻžāĨ¤ - TRUNCATE: āĻĒā§āϰ⧠āĻā§āĻŦāĻŋāϞ āĻāĻāĻŦāĻžāϰ⧠āĻāĻžāϞāĻŋ āĻāϰ⧠āĻĻā§ā§ āĻāĻŦāĻ āĻ āĻā§-āĻāύāĻā§āϰāĻŋāĻŽā§āύā§āĻ āϰāĻŋāϏā§āĻ āĻāϰ⧠āĻĻā§ā§āĨ¤
DELETE āĻāĻŦāĻ TRUNCATE āĻāϰ āĻŽāϧā§āϝā§āĻāĻžāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻā§āϞ⧠āύāĻŋā§ā§ āĻāϰāĻ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāϤ⧠āĻāĻžāύ?
Answer:
DELETE āĻāĻŦāĻ TRUNCATE āĻāϰ āĻŽā§āϞ āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻā§āϞ⧠āύāĻŋāĻā§ āϏāĻšāĻāĻāĻžāĻŦā§ āĻĻā§āĻā§āĻž āĻšāϞā§:
| āĻŦā§āĻļāĻŋāώā§āĻā§āϝ | DELETE | TRUNCATE |
|---|---|---|
| āϧāϰāύ (Type) | āĻāĻāĻŋ āĻāĻāĻāĻŋ DML (Data Manipulation Language) āĻāĻŽāĻžāύā§āĻĄāĨ¤ | āĻāĻāĻŋ āĻāĻāĻāĻŋ DDL (Data Definition Language) āĻāĻŽāĻžāύā§āĻĄāĨ¤ |
| āĻļāϰā§āϤ (Condition) |
WHERE āĻā§āϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻŋāĻā§ āϏāĻžāϰāĻŋ (row) āĻŽā§āĻāĻž āϝāĻžā§āĨ¤ |
āĻā§āύ⧠āĻļāϰā§āϤ āĻĻā§āĻā§āĻž āϝāĻžā§ āύāĻž; āĻĒā§āϰ⧠āĻā§āĻŦāĻŋāϞā§āϰ āϏāĻŦ āĻĄā§āĻāĻž āĻāĻāϏāĻžāĻĨā§ āĻŽā§āĻā§ āϝāĻžā§āĨ¤ |
| āĻāϤāĻŋ (Speed) | āĻāĻāĻŋ āϧā§āϰ⧠āĻāĻžāĻ āĻāϰ⧠(āĻāĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋ āĻāϞāĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻŽā§āĻā§)āĨ¤ | āĻāĻāĻŋ āĻ āύā§āĻ āĻĻā§āϰā§āϤ āĻāĻžāĻ āĻāϰā§āĨ¤ |
| āĻ āĻā§-āĻāύāĻā§āϰāĻŋāĻŽā§āύā§āĻ | āĻāĻāĻŋ āĻ āĻā§-āĻāύāĻā§āϰāĻŋāĻŽā§āύā§āĻ (ID) āϰāĻŋāϏā§āĻ āĻāϰ⧠āύāĻžāĨ¤ āĻĒāϰāĻŦāϰā§āϤ⧠āĻĄā§āĻāĻž āĻāĻā§āϰ āϏāĻŋāϰāĻŋā§āĻžāϞ āĻĨā§āĻā§āĻ āĻļā§āϰ⧠āĻšā§āĨ¤ | āĻāĻāĻŋ āĻ āĻā§-āĻāύāĻā§āϰāĻŋāĻŽā§āύā§āĻ āϰāĻŋāϏā§āĻ āĻāϰ⧠āĻĻā§ā§āĨ¤ āĻĒāϰāĻŦāϰā§āϤ⧠āĻĄā§āĻāĻž ā§§ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻšā§āĨ¤ |
| āϰā§āϞāĻŦā§āϝāĻžāĻ (Undo) | (Undo) āĻāĻāĻŋ āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĢāĻŋāϰāĻŋā§ā§ āĻāύāĻž (Rollback āĻāϰāĻž) āϏāĻŽā§āĻāĻŦāĨ¤ | āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϰā§āϞāĻŦā§āϝāĻžāĻ āĻāϰāĻž āϝāĻžā§ āύāĻž (āĻĄā§āĻāĻžāĻŦā§āϏ āĻā§āĻĻā§ āĻāĻŋāύā§āύ āĻšāϤ⧠āĻĒāĻžāϰā§)āĨ¤ |
| āϞāĻ (Log) | āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰāĻŋ āĻŽā§āĻāĻžāϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āϞāĻ āϤā§āϰāĻŋ āĻāϰā§āĨ¤ | āĻļā§āϧ⧠āĻŽā§āĻŽā§āϰāĻŋ āĻĄāĻŋ-āĻ ā§āϝāĻžāϞā§āĻā§āĻļāύ āϞāĻ āĻāϰā§, āϤāĻžāĻ āϞāĻā§āϰ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻāĻŽāĨ¤ |
āĻāĻāύ āĻā§āύāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ?
- āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āĻŦāĻŋāϞ āĻĨā§āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āύ⧠āĻāĻāĻāĻžāϰ āĻŦāĻž āϤāĻĨā§āϝ āĻŽā§āĻāϤ⧠āĻšā§, āϤāĻŦā§ DELETE āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
- āϝāĻĻāĻŋ āĻā§āύ⧠āĻā§āϏā§āĻ āĻĄā§āĻāĻž āĻŦāĻž āĻā§āĻŽā§āĻĒā§āϰāĻžāϰāĻŋ āĻā§āĻŦāĻŋāϞ āĻĒā§āϰā§āĻāĻž āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰ⧠āύāϤā§āύā§āϰ āĻŽāϤ⧠āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻŦā§ TRUNCATE āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻāĻŋ DROP āĻāĻŽāĻžāύā§āĻĄ āĻāĻŦāĻ TRUNCATE āĻāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāύāϤ⧠āĻāĻžāύ?
Answer:
DROP āĻāĻŦāĻ TRUNCATE āĻāϰ āĻŽā§āϞ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻšāϞā§âāĻāĻāĻāĻŋ āĻĒā§āϰ⧠āĻā§āĻŦāĻŋāϞāĻāĻŋāĻā§āĻ āĻ
āϏā§āϤāĻŋāϤā§āĻŦāĻšā§āύ āĻāϰ⧠āĻĻā§ā§, āĻāϰ āĻ
āύā§āϝāĻāĻŋ āĻļā§āϧ⧠āĻā§āĻŦāĻŋāϞā§āϰ āĻā§āϤāϰā§āϰ āĻĄā§āĻāĻž āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰā§āĨ¤
āύāĻŋāĻā§ āĻāĻĻā§āϰ āĻĒā§āϰāϧāĻžāύ āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻā§āϞ⧠āĻĻā§āĻā§āĻž āĻšāϞā§:
| āĻŦā§āĻļāĻŋāώā§āĻā§āϝ | TRUNCATE | DROP |
|---|---|---|
| āĻāĻžāĻ | āĻā§āĻŦāĻŋāϞā§āϰ āĻā§āϤāϰā§āϰ āϏāĻŦ āĻĄā§āĻāĻž āĻŽā§āĻā§ āĻĢā§āϞā§, āĻāĻŋāύā§āϤ⧠āĻā§āĻŦāĻŋāϞāĻāĻŋ āĻĨā§āĻā§ āϝāĻžā§āĨ¤ | āĻā§āĻŦāĻŋāϞā§āϰ āĻĄā§āĻāĻž āĻāĻŦāĻ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ (āĻāϰāĻŦāĻžā§āĻŋ) āϏāĻŦ āĻŽā§āĻā§ āĻĢā§āϞā§āĨ¤ |
| āĻĢāϞāĻžāĻĢāϞ | āĻā§āĻŦāĻŋāϞāĻāĻŋ āĻāĻžāϞāĻŋ āĻšā§ā§ āϝāĻžā§, āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āĻāĻžāĻāϞ⧠āĻāĻŦāĻžāϰ āύāϤā§āύ āĻĄā§āĻāĻž āĻĸā§āĻāĻžāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤ | āĻĄā§āĻāĻžāĻŦā§āϏ⧠āĻāĻ āĻā§āĻŦāĻŋāϞā§āϰ āĻāϰ āĻā§āύ⧠āύāĻžāĻŽ-āύāĻŋāĻļāĻžāύāĻž āĻĨāĻžāĻā§ āύāĻžāĨ¤ |
| āϏā§āĻĒā§āϏ (Space) | āĻāĻāĻŋ āĻŽā§āĻŽā§āϰāĻŋ āϏā§āĻĒā§āϏ āĻāĻžāϞāĻŋ āĻāϰ⧠āĻĻā§ā§āĨ¤ | āĻāĻāĻŋ āĻŽā§āĻŽā§āϰāĻŋ āĻĨā§āĻā§ āĻā§āĻŦāĻŋāϞā§āϰ āĻĒā§āϰ⧠āĻŽā§āϝāĻžāĻĒ āĻŦāĻž āĻĄā§āĻĢāĻŋāύāĻŋāĻļāύ āĻŽā§āĻā§ āĻĢā§āϞā§āĨ¤ |
| āĻŦā§āϝāĻŦāĻšāĻžāϰ | āϝāĻāύ āĻļā§āϧ⧠āĻĄā§āĻāĻž āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āĻāĻŋāύā§āϤ⧠āĻā§āĻŦāĻŋāϞāĻāĻŋ āĻĒāϰ⧠āĻāĻžāĻā§ āϞāĻžāĻāĻŦā§āĨ¤ | āϝāĻāύ āĻā§āĻŦāĻŋāϞāĻāĻŋāϰ āĻāϰ āĻā§āύ⧠āĻĒā§āϰā§ā§āĻāύ āύā§āĻ āĻāĻŦāĻ āϏā§āĻāĻŋ āĻĄāĻŋāϞāĻŋāĻ āĻāϰ⧠āĻĻāĻŋāϤ⧠āĻāĻžāύāĨ¤ |
āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦ āĻāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰāĻž āϝāĻžāĻ, āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻŦāĻā§ā§āϰ āĻāϞāĻŽāĻžāϰāĻŋ āĻāĻā§āĨ¤
- TRUNCATE āĻāϰāĻž āĻŽāĻžāύ⧠āĻšāϞā§: āĻāϞāĻŽāĻžāϰāĻŋāϰ āϏāĻŦ āĻŦāĻ āĻŦā§āϰ āĻāϰ⧠āĻĢā§āϞ⧠āĻĻā§āĻā§āĻžāĨ¤ āĻāϤ⧠āĻāϞāĻŽāĻžāϰāĻŋāĻāĻŋ āĻāĻžāϞāĻŋ āĻšā§ā§ āĻā§āϞ, āĻāĻŋāύā§āϤ⧠āĻāϞāĻŽāĻžāϰāĻŋāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻāϰā§āĻ āĻĨāĻžāĻāϞ āĻāĻŦāĻ āĻāĻĒāύāĻŋ āĻāĻŦāĻžāϰ āύāϤā§āύ āĻŦāĻ āϰāĻžāĻāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤
- DROP āĻāϰāĻž āĻŽāĻžāύ⧠āĻšāϞā§: āĻāϞāĻŽāĻžāϰāĻŋāĻāĻŋāϏāĻš āĻā§āϤāϰā§āϰ āϏāĻŦ āĻŦāĻ āĻā§āĻā§ āĻāϰ āĻĨā§āĻā§ āĻŦā§āϰ āĻāϰ⧠āĻĻā§āĻā§āĻžāĨ¤ āĻāĻāύ āĻāĻĒāύāĻžāϰ āĻāϰ⧠āĻāϰ āĻā§āύ⧠āĻāϞāĻŽāĻžāϰāĻŋāĻ āύā§āĻāĨ¤

Top comments (0)