Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL
MySQL
  1. ตรวจสอบว่าตารางมีอยู่หรือไม่ด้วย CASE WHEN และ INFORMATION_SCHEMA ใน MySQL

    สถานการณ์ ต้องการตรวจสอบว่าตารางชื่อหนึ่งมีอยู่ใน Database ปัจจุบันหรือไม่ และต้องการผลลัพธ์เป็น Boolean (Yes/No) ใน Query เดียว วิธีแก้: Query INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA.TABLES เก็บข้อมูลเมตาของตารางทั้งหมด สามารถ Query ได้เหมือนตารางทั่วไป ตัวอย่างการใช้งาน 1. สร้างตารางทดสอบ

  2. สร้าง Function รวมค่า Comma-separated String ใน MySQL

    สถานการณ์ คอลัมน์ VARCHAR เก็บตัวเลขคั่นด้วย Comma เช่น 20,10,40,50,60 ต้องการคำนวณผลรวม (Sum) โดยไม่ต้อง Normalize ตาราง วิธีแก้: สร้าง Stored Function ใช้ Loop วนลูปตัดค่าทีละตัวด้วย SUBSTRING_INDEX และ SUBSTRING แล้วสะสมผลรวม ตัวอย่างการสร้าง Function 1. สร้างตาราง ); Query OK, 0 rows affecte

  3. ค้นหาตัวเลขในข้อความ Comma-separated ด้วย LIKE ใน MySQL

    สถานการณ์ คอลัมน์ VARCHAR เก็บตัวเลขคั่นด้วย Comma (CSV format) เช่น 80.2,90.5,88.90 ต้องการค้นหาแถวที่มีตัวเลข 80 ปรากฏอยู่ วิธีง่าย: ใช้ LIKE WHERE column LIKE %80% - ค้นหาสตริงที่มี 80 อยู่ที่ไหนก็ได้ ตัวอย่างการใช้งาน 1. สร้างตาราง ); Query OK, 0 rows affected (0.58 sec) 2. เพิ่มข้อมูล INS

  4. จัดเรียงด้วย ORDER BY FIELD() และ ID พร้อมกันใน MySQL

    สถานการณ์ ต้องการจัดเรียงข้อมูลโดย: 1) นำ Name ที่ระบุ (เช่น Mike) มาก่อน 2) ส่วนที่เหลือจัดเรียงตาม Id จากมากไปน้อย (DESC) วิธีแก้: ใช้ FIELD() ใน ORDER BY หลายระดับ ORDER BY FIELD(Name, Mike) DESC, Id DESC FIELD(Name, Mike) คืนค่า 1 หาเจอ, 0 หาไม่เจอ DESC ทำให้ 1 (เจอ) อยู่บน, 0 (ไม่เจอ

  5. ค้นหาแถวที่ตรงกับวันที่ปัจจุบันใน MySQL ด้วย STR_TO_DATE และ CURDATE

    ปัญหา วันที่เก็บอยู่ใน VARCHAR ด้วยรูปแบบเฉพาะ (เช่น DD/MM/YYYY) ต้องการเปรียบเทียบกับวันที่ปัจจุบัน (CURDATE()) ซึ่งเป็น DATE Type วิธีแก้: ใช้ STR_TO_DATE() แปลง String → DATE STR_TO_DATE(str, format) แปลงสตริงเป็น DATE/DATETIME ตาม Format Specifier Format Specifiers พื้นฐาน

  6. หาความต่างของวันที่เป็นเดือนด้วย TIMESTAMPDIFF ใน MySQL

    ฟังก์ชัน TIMESTAMPDIFF() คำนวณความต่างระหว่างสองวันที่/เวลาในหน่วยที่กำหนด (MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR) คืนค่าจำนวนเต็ม (Integer) รูปแบบคำสั่ง TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2) คืนค่า: datetime_expr2 - datetime_expr1 ในหน่วย unit ตัวอย่างก

  7. นับจำนวนคู่ค่าที่ซ้ำกันในสองคอลัมน์ด้วย GREATEST/LEAST ใน MySQL

    สถานการณ์ มีตารางเก็บคู่ค่า (Name1, Name2) ต้องการนับจำนวนครั้งที่คู่ค่านี้ปรากฏ โดยถือว่า (A, B) และ (B, A) เป็นคู่เดียวกัน (Order-independent) วิธีแก้: ใช้ GREATEST() และ LEAST() GREATEST(a, b) คืนค่าที่มากกว่า LEAST(a, b) คืนค่าที่น้อยกว่า จับคู่ (A, B) และ (B, A) ให้กลายเป็นคู่เดี

  8. แยกวันที่จากข้อความใน MySQL ด้วย SUBSTRING_INDEX

    สถานการณ์ ข้อมูลวันที่เก็บรวมอยู่ในข้อความ (String) เช่น John has got joining date.12/31/2018 ต้องการดึงเฉพาะส่วนวันที่ออกมา วิธีแก้: ใช้ SUBSTRING_INDEX() ซ้อนกัน SUBSTRING_INDEX(str, delim, count) คืนค่าส่วนของสตริงก่อน/หลัง Delimiter ครั้งที่ count ตัวอย่างการใช้งาน 1. สร้างตาราง ); Query OK,

  9. ใช้ INSERT INTO SELECT คัดลอกข้อมูลระหว่างตารางใน MySQL

    คำสั่ง INSERT INTO SELECT ใช้คัดลอกข้อมูลจากตารางหนึ่งไปอีกตารางหนึ่งในคำสั่งเดียว โดยสามารถกรองข้อมูลด้วย WHERE, จัดรูปแบบด้วย Function, หรือ Join หลายตารางได้ รูปแบบคำสั่ง INSERT INTO target_table (col1, col2, ...) SELECT col1, col2, ... FROM source_table WHERE condition; ตัวอย่างการใช้งาน 1. ส

  10. ค้นหาและแทนที่ข้อความในคอลัมน์ Text ด้วย SUBSTRING_INDEX และ CONCAT ใน MySQL

    สถานการณ์ มีคอลัมน์เก็บรายการชื่อคั่นด้วย Comma ต้องการแทนที่ชื่อเฉพาะรายการ (เช่น John ตัวที่ 2) เป็นชื่อใหม่ (Adam) โดยไม่กระทบชื่อ John ตัวแรก วิธีแก้: ใช้ SUBSTRING_INDEX + CONCAT SUBSTRING_INDEX(str, delim, count) - ตัดสตริงจาก Delimiter ครั้งที่ count (บวก=นับจากซ้าย, ลบ=นับจากขวา)

  11. เพิ่มข้อมูลที่มีเครื่องหมายคำพูดคู่ (") ใน MySQL ด้วย Escape Character

    ปัญหา ต้องการเก็บข้อความที่มีเครื่องหมายคำพูดคู่ (Double quotes) อยู่ภายใน เช่น John แต่ MySQL ใช้ Single quote คั่น String ทำให้เกิด Confusion วิธีแก้: ใช้ Backslash (\) Escape ใช้ \\\ ภายใน String ที่คั่นด้วย Single quote รูปแบบคำสั่ง INSERT INTO table_name VALUES(\\value\\); ตัวอย่างการใช้งาน

  12. ค้นหาข้อมูลในคอลัมน์ที่คั่นด้วย Pipe (|) ด้วย REGEXP ใน MySQL

    ปัญหา ข้อมูลในคอลัมน์หนึ่งเก็บหลายค่าคั่นด้วย Pipe (|) เช่น 8|56|78|45 ต้องการค้นหาแถวที่มีค่าเฉพาะ (เช่น 8) แต่ไม่ต้องการจับค่าที่เป็นส่วนหนึ่งของตัวเลขอื่น (เช่น 18, 88, 98) วิธีแก้: ใช้ Regular Expression (REGEXP) ใช้ Pattern \\|8\\| เพื่อจับค่า 8 ที่อยู่ระหว่าง Pipe ทั้งสองข้าง (Escaped backsl

  13. แสดงผลรวมเป็น 0 สำหรับค่าที่ไม่มีข้อมูลใน MySQL

    ปัญหา เมื่อใช้ Aggregate function เช่น SUM() กับเงื่อนไข หากไม่มีแถวที่ตรงเงื่อนไข ผลลัพธ์จะเป็น NULL ไม่ใช่ 0 ซึ่งอาจทำให้การนำไปคำนวณต่อหรือแสดงผลมีปัญหา วิธีแก้: ใช้ SUM() กับ Boolean Expression ใน MySQL ค่า TRUE = 1, FALSE = 0 ดังนั้น SUM(condition) จะนับจำนวนแถวที่ตรงเงื่อนไข และคืนค่า 0 หาไม

  14. ลบวันออกจากวันที่ใน MySQL ด้วย DATE_SUB()

    ฟังก์ชัน DATE_SUB() ใช้ลบช่วงเวลา (Interval) ออกจากวันที่/เวลา รองรับหน่วยต่างๆ: DAY, MONTH, YEAR, HOUR, MINUTE, SECOND เป็นต้น รูปแบบคำสั่ง DATE_SUB(date, INTERVAL expr unit) ตัวอย่างการใช้งาน 1. สร้างตาราง ); Query OK, 0 rows affected (1.05 sec) 2. เพิ่มข้อมูลวันที่ INSERT INTO DemoTable VAL

  15. จัดเรียงข้อมูลตามลำดับที่กำหนดเองด้วย ORDER BY FIELD() ใน MySQL

    ปัญหาการจัดเรียงปกติ คำสั่ง ORDER BY ปกติจะจัดเรียงตามลำดับอักษร (A-Z) หรือตัวเลข (น้อยไปมาก) แต่บางครั้งต้องการจัดเรียงตามลำดับธุรกิจที่กำหนดเอง เช่น ตำแหน่งงาน, ระดับความสำคัญ, สถานะออเดอร์ วิธีแก้: ใช้ FIELD() ฟังก์ชัน FIELD(str, val1, val2, val3, ...) คืนค่าตำแหน่งของ str ในรายการ (1-based) คื

  16. ใช้ IN() แทน OR หลายเงื่อนไขใน MySQL เพื่อประสิทธิภาพ

    ปัญหาของ OR หลายเงื่อนไข การใช้ OR หลายตัวใน WHERE clause ทำให้ Query ยากต่อการอ่าน และ Optimizer อาจไม่สามารถใช้ Index ได้อย่างมีประสิทธิภาพ วิธีแก้: ใช้ IN() IN() ทำงานเหมือน OR หลายตัวแต่: อ่านง่ายกว่า สั้นกว่า Optimizer จัดการได้ดีกว่า (ใช้ Index ได้) รองรับ Subquery ได้ ตัวอย่า

  17. ค้นหาค่าที่ซ้ำกันใน MySQL ด้วย GROUP BY HAVING

    หลักการค้นหาข้อมูลซ้ำ ใช้ GROUP BY รวมค่าที่เหมือนกัน แล้วใช้ 1 กรองเฉพาะกลุ่มที่มีจำนวนมากกว่า 1 แถว รูปแบบคำสั่ง 1; ตัวอย่างการใช้งาน 1. สร้างตาราง ); Query OK, 0 rows affected (0.47 sec) 2. เพิ่มข้อมูล (มีค่าซ้ำ) INSERT INTO DemoTable VALUES(50); Query OK, 1 row affected (0.27 sec) 3. แส

  18. เพิ่มราคาสินค้าหลายรายการพร้อมกันด้วย CASE WHEN ใน MySQL

    สถานการณ์ปัญหา เมื่อต้องการอัปเดตราคาสินค้าหลายรายการพร้อมกัน โดยแต่ละรายการมีอัตราเพิ่มที่แตกต่างกัน สามารถใช้คำสั่ง UPDATE ร่วมกับ CASE WHEN เพื่อทำได้ใน Query เดียว ตัวอย่างการใช้งาน 1. สร้างตารางสินค้า ); Query OK, 0 rows affected (0.51 sec) 2. เพิ่มข้อมูลสินค้า INSERT INTO DemoTable VALUES

  19. สร้าง Temporary Table สำหรับเก็บข้อมูลวันที่ใน MySQL

    คุณสมบัติของ Temporary Table CREATE TEMPORARY TABLE สร้างตารางชั่วคราวที่: มองเห็นได้เฉพาะ Session (Connection) ที่สร้างเท่านั้น ถูกลบอัตโนมัติเมื่อ Session จบสิ้นสุดหรือปิด Connection ไม่กระทบตารางหลักหรือ Session อื่น เหมาะสำหรับการคำนวณระหว่างทาง หรือเก็บข้อมูลชั่วคราว รูปแบบค

Total 4564 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:34/229  20-คอมพิวเตอร์/Page Goto:1 28 29 30 31 32 33 34 35 36 37 38 39 40