Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL
MySQL
  1. MyISAM vs InnoDB: ควรใช้ Storage Engine อันไหนใน MySQL

    InnoDB เป็น Default Storage Engine ตั้งแต่ MySQL 5.5+ (5.6 เป็น Default จริง) สมดุลระหว่าง Reliability และ Performance InnoDB - แนะนำสำหรับ Production ส่วนใหญ่ ✅ ข้อดี ACID Transactions: รองรับ Commit, Rollback, Crash Recovery Row-level Locking: Concurrency สูง (Lock แค่ Row ที่ Update) Foreign K

  2. วิธี Escape Apostrophe (Single Quote) ใน MySQL

    มี 2 วิธีหลักในการ Escape Apostrophe () ใน MySQL String Literal วิธีที่ 1: Backslash (\) - Standard SQL Escape INSERT INTO SingleQuotesDemo VALUES (1, John\s); -- หรือใน SELECT SELECT John\s; -- ผลลัพธ์: Johns วิธีที่ 2: Double Single Quote () - ANSI SQL Standard INSERT INTO SingleQuotesDemo VALU

  3. วิธีทำ Recursive SELECT Query ใน MySQL (Hierarchical Data)

    MySQL 8.0+ รองรับ Recursive CTE (Common Table Expression) สำหรับ Query ข้อมูลแบบ Hierarchical/Tree (Recursive Query) รุ่นเก่าไม่รองรับ ต้องใช้ Stored Procedure หรือ Application Layer MySQL 8.0+: Recursive CTE (แนะนำ) ตัวอย่าง: Employee Hierarchy CREATE TABLE employees ( id INT PRIMARY KEY,

  4. คำนวณความแตกต่างของ Timestamp 2 ค่าเป็นวินาทีใน MySQL

    มี 2 วิธีหลักในการคำนวณความต่างของ Timestamp 2 ค่าเป็นวินาทีใน MySQL วิธีที่ 1: TIMESTAMPDIFF() - แนะนำ (MySQL Native) SELECT TIMESTAMPDIFF(SECOND, 2018-10-17 11:51:55, 2018-10-17 11:51:58); -- ผลลัพธ์: 3 Syntax TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2) -- คืนค่า: datetime_expr2 - dateti

  5. แสดงผลลัพธ์ MySQL เป็น Comma Separated List ด้วย CONCAT และ GROUP_CONCAT

    มี 2 วิธีหลักในการแสดงผลเป็น Comma-separated List ใน MySQL วิธีที่ 1: CONCAT() - รวมคอลัมน์ในแถวเดียว (Row-level) CREATE TABLE CommaSeperateDemo ( Id INT, FirstName VARCHAR(100), LastName VARCHAR(100) ); INSERT INTO CommaSeperateDemo VALUES (1, John, Taylor), (2, Carol, Taylor), (3, J

  6. วิธี Reset/เปลี่ยน Root Password ใน MySQL

    วิธี Reset Root Password ขึ้นอยู่กับ MySQL Version และ OS นี่คือวิธีมาตรฐานสำหรับ MySQL 5.7.6+ / 8.0+ วิธีที่ 1: ALTER USER (MySQL 5.7.6+ / 8.0+) - แนะนำ -- เข้า MySQL ด้วย Root (ถ้ารู้ Password เดิม) mysql -u root -p -- เปลี่ยน Password ALTER USER root@localhost IDENTIFIED BY new_strong_password;

  7. คำสั่ง SHOW PROCESSLIST ใน MySQL ทำอะไร และอ่าน Output ยังไง

    SHOW PROCESSLIST แสดง Thread/Connection ที่กำลังทำงานอยู่ใน MySQL Server ช่วย Debug Slow Query, Lock, Connection Leak Syntax SHOW PROCESSLIST; -- หรือ แบบละเอียด SHOW FULL PROCESSLIST; -- หรือ แบบ Vertical (\G) SHOW FULL PROCESSLIST\G Output Columns ความหมาย Columnความหมาย IdConnection/Thread ID

  8. เมื่อไหร่ควรใช้ Composite Index (Multi-column Index) ใน MySQL

    Composite Index (Multi-column Index) คือ Index ที่สร้างจากหลายคอลัมน์รวมกัน ใช้ได้เมื่อ Query มีเงื่อนไขหลายคอลัมน์พร้อมกัน เมื่อไหร่ควรใช้ Composite Index JOIN: ON table1.col1 = table2.col1 AND table1.col2 = table2.col2 Filtering (WHERE): WHERE col1 = ? AND col2 = ? AND col3 = ? Sorting (ORDER BY

  9. วิธีเช็คว่าตารางมีอยู่ใน MySQL แบบต่างๆ

    มีหลายวิธีในการตรวจสอบว่าตารางมีอยู่ใน Database หรือไม่ วิธีที่ 1: SHOW TABLES (พื้นฐาน) -- แสดงทุกตาราง SHOW TABLES; -- เช็คตารางเฉพาะ (Pattern Matching) SHOW TABLES LIKE tblstudent; ผลลัพธ์ -- มีตาราง +---------------------------------+ | Tables_in_business (tblstudent) | +---------------------

  10. ทำให้ SUM() ใน MySQL คืนค่า 0 แทน NULL เมื่อไม่มีข้อมูล

    ฟังก์ชัน SUM() จะคืนค่า NULL เมื่อไม่มีแถวที่ Match (Empty Result Set) ใช้ IFNULL() หรือ COALESCE() เพื่อแปลงเป็น 0 ปัญหา SELECT SUM(NULL); -- ผลลัพธ์: NULL (ไม่ใช่ 0) วิธีที่ 1: IFNULL() - MySQL Specific SELECT IFNULL(SUM(NULL), 0) AS SUMOFTWO; -- ผลลัพธ์: 0 วิธีที่ 2: COALESCE() - ANSI Standard

  11. วิธีนับจำนวนค่าที่ซ้ำในคอลัมน์ MySQL (COUNT DISTINCT GROUP BY)

    ใช้ COUNT() ร่วมกับ GROUP BY เพื่อนับจำนวนการเกิดของแต่ละค่าในคอลัมน์ ตัวอย่างข้อมูล CREATE TABLE DistinctDemo1 ( id INT, name VARCHAR(100) ); INSERT INTO DistinctDemo1 VALUES (1, John), (2, John), (3, John), (4, Carol), (5, David); Query นับจำนวนแต่ละชื่อ SELECT name, COUNT(*)

  12. MySQL JOIN: ON vs USING - ความแตกต่างและเมื่อไหร่ใช้แบบไหน

    ทั้ง ON และ USING ใช้ระบุเงื่อนไขการ Join แต่มีความแตกต่างใน Syntax และความยืดหยุ่น ON - ยืดหยุ่นกว่า (ใช้ส่วนใหญ่) ระบุเงื่อนไขได้ทุกแบบ: table1.col = table2.col, table2.col, table1.col = value ชื่อคอลัมน์ใน 2 ตาราง ไม่ต้องเหมือนกัน รองรับ Multiple Conditions: ON t1.a = t2.a AND t1.b = t2.b ตั

  13. ใช้ MySQL JOIN โดยไม่มี ON Condition ด้วย CROSS JOIN

    CROSS JOIN** (Cartesian Product) คือการ Join โดยไม่มีเงื่อนไข ON ทุกแถวของตารางแรกจะจับคู่กับทุกแถวของตารางที่สอง สูตร: จำนวนแถวผลลัพธ์ = Rows(Table A) × Rows(Table B) ตัวอย่าง: สร้างตารางและข้อมูล ตาราง ForeignTableDemo (2 แถว) CREATE TABLE ForeignTableDemo ( Id INT, Name VARCHAR(100),

  14. การใช้ IF ELSE ใน MySQL ด้วย CASE WHEN

    MySQL ไม่มีคำสั่ง IF ... ELSE ใน SQL Statement แบบ Standalone (มีแค่ใน Stored Program) แต่ใช้ CASE WHEN แทนได้ใน SELECT, UPDATE, ORDER BY, v.v. Syntax: CASE WHEN (Searched Case) CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ตัวอย่าง: แส

  15. Best Practices การใช้ Index ใน MySQL

    Database Index เป็นโครงสร้างข้อมูลที่เพิ่มความเร็วในการ Query (SELECT) แต่นำไปสู่ Overhead ตอน INSERT/UPDATE/DELETE Best Practices สำคัญ 1. Index เฉพาะคอลัมน์ที่ใช้ใน WHERE, JOIN, ORDER BY, GROUP BY -- ดี: ใช้ใน WHERE CREATE INDEX idx_email ON users(email); -- ไม่ดี: ไม่ได้ Query บ่อย CREATE INDE

  16. ใช้ Function เป็น Default Value ใน MySQL ไม่ได้ - ใช้ Trigger แทน

    MySQL ไม่รองรับ การใช้ Function (เช่น NOW(), UUID(), RAND()) เป็น DEFAULT VALUE โดยตรง (ยกเว้น CURRENT_TIMESTAMP สำหรับ TIMESTAMP/DATETIME) วิธีแก้: ใช้ BEFORE INSERT TRIGGER 1. สร้างตาราง CREATE TABLE TbLFunctionTrigger ( id CHAR(36), -- สำหรับ UUID username VARCHAR(100) ); 2. สร้าง Tri

  17. จำลอง MySQL ORDER BY FIELD() ใน PostgreSQL ด้วย CASE WHEN

    MySQL มีฟังก์ชัน ORDER BY FIELD(col, val1, val2, val3) สำหรับจัดเรียงตามลำดับที่กำหนดเอง PostgreSQL ไม่มีฟังก์ชันนี้ ต้องใช้ CASE WHEN แทน MySQL Syntax (Original) SELECT * FROM table_name ORDER BY FIELD(countryName, IND, US, UK); PostgreSQL Equivalent: ใช้ CASE WHEN SELECT * FROM PostgreOrderIdDem

  18. วิธีเก็บ Username และ Password อย่างปลอดภัยใน MySQL (Hashing)

    ⚠️ สำคัญ: บทความต้นฉบับแนะนำใช้ MD5() ซึ่ง ไม่ปลอดภัยแล้วในปัจจุบัน (Broken, Fast, No Salt) ควรใช้ bcrypt, Argon2, หรือ PBKDF2 แทน วิธีเก่า (ไม่แนะนำ) - ใช้ MD5() CREATE TABLE UserNameAndPasswordDemo ( U_Id INT AUTO_INCREMENT PRIMARY KEY, UserId VARCHAR(255) UNIQUE, UserPassword VARCHAR

Total 4564 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:172/229  20-คอมพิวเตอร์/Page Goto:1 166 167 168 169 170 171 172 173 174 175 176 177 178