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

    ใน MySQL สามารถใช้ Storage Engine InnoDB และ MyISAM ร่วมกันในฐานข้อมูลเดียวกันได้อย่างสมบูรณ์ นี่เป็น แนวทางที่แนะนำ (Best Practice) เพื่อเลือก Engine ที่เหมาะสมกับลักษณะการใช้งานของแต่ละตาราง การสร้างตารางด้วย Engine ที่ต่างกัน 1. สร้างฐานข้อมูล CREATE DATABASE BothInnoDBandMyISAM; USE BothInnoD

  2. MySQL: เรียงลำดับให้ค่าเฉพาะอยู่บนสุดด้วย ORDER BY ... DESC

    เมื่อต้องการให้แถวที่มีค่าเฉพาะ (เช่น Country = US) อยู่ บนสุด ใช้ ORDER BY column = value DESC เพราะใน MySQL เงื่อนไขที่เป็นจริง (True) = 1, เท็จ (False) = 0 การเรียง DESC จะทำให้ 1 (True) อยู่ก่อน รูปแบบคำสั่ง SELECT * FROM table_name ORDER BY column_name = target_value DESC, id_column; ตัวอย่า

  3. MySQL: หาค่าสูงสุด (MAX) ของคอลัมน์ผสม String/Int ด้วย SUBSTRING และ CAST

    เมื่อคอลัมน์เก็บข้อมูลผสมระหว่าง String และ Number (เช่น INV129, INV145) และต้องการหาค่าตัวเลขสูงสุด ต้องแยกส่วนตัวเลขออกมา แปลงเป็นตัวเลข แล้วค่อยหา MAX รูปแบบคำสั่ง SELECT MAX(CAST(SUBSTRING(column_name, start_pos, length) AS UNSIGNED)) AS max_value FROM table_name; คำอธิบาย: SUBSTRING(col

  4. MySQL: SELECT หลาย SUM แยกคอลัมน์ด้วย CASE WHEN

    เมื่อต้องการคำนวณ SUM แยกตามเงื่อนไข และแสดงผลในคอลัมน์แยกกัน ใช้ CASE WHEN ภายใน SUM() (Conditional Aggregation) รูปแบบคำสั่ง SELECT SUM(CASE WHEN condition1 THEN value_column END) AS alias1, SUM(CASE WHEN condition2 THEN value_column END) AS alias2, SUM(CASE WHEN condition3 THEN val

  5. MySQL: เรียงลำดับตัวอักษรก่อน ตัวเลขทีหลังด้วย REGEXP และ ORDER BY

    เมื่อต้องการเรียงข้อมูลให้ ตัวอักษร (Alphabet) อยู่ก่อน ตัวเลข (Number) อยู่หลัง สามารถใช้ ORDER BY ร่วมกับ RLIKE (REGEXP) และ IF() ได้ รูปแบบคำสั่ง SELECT * FROM table_name ORDER BY IF(column_name RLIKE ^[a-zA-Z], 1, 2), column_name; คำอธิบาย: RLIKE ^[a-zA-Z] - ตรวจสอบว่าเริ่มต้นด้วยตัวอักษ

  6. MySQL: ลบแถวสุดท้ายตามเงื่อนไขด้วย ORDER BY DESC LIMIT 1

    เมื่อต้องการลบ แถวสุดท้าย (Latest) ที่ตรงเงื่อนไขเฉพาะ ใช้ DELETE ร่วมกับ ORDER BY ... DESC LIMIT 1 รูปแบบคำสั่ง DELETE FROM table_name WHERE condition_column = value ORDER BY sort_column DESC LIMIT 1; WHERE - กรองเงื่อนไข (เช่น UserId = 2) ORDER BY ... DESC - เรียงจากใหม่สุดไปเก่าสุด

  7. MySQL: เข้าสู่ระบบด้วย User อื่นผ่าน Command Line (mysql -u -p)

    การ Login MySQL ด้วย User ที่แตกต่างจาก User ปัจจุบัน ทำได้ผ่าน Command Line ด้วยคำสั่ง mysql -u username -p รูปแบบคำสั่ง mysql -u your_username -p -u - ระบุ username -p - ขอ password (จะ prompt ให้พิมพ์ hidden) ไม่ต้องพิมพ์ password ต่อท้าย -p (ไม่ปลอดภัย) ขั้นตอนสร้าง User ใหม่แล

  8. MySQL: นำข้อมูลจาก Query Result ไปสร้างตารางใหม่ (INSERT SELECT)

    การสร้างตารางใหม่และเติมข้อมูลจากผลลัพธ์ของ SELECT query สามารถทำได้ด้วยคำสั่ง INSERT ... SELECT หรือ CREATE TABLE ... AS SELECT วิธีที่ 1: INSERT INTO ... SELECT (ตารางปลายทางมีอยู่แล้ว) INSERT INTO target_table (col1, col2, col3) SELECT col1, col2, col3 FROM source_table; ตารางปลายทางต้องม

  9. MySQL: เรียงลำดับใหม่หลัง LIMIT ด้วย Subquery (Order After Limit)

    เมื่อต้องการ LIMIT ก่อน แล้วค่อย ORDER BY ใหม่ (Order after Limit) ต้องใช้ Subquery: Subquery ด้านในทำ LIMIT และ ORDER แรก แล้ว Outer query ทำ ORDER BY อีกครั้ง รูปแบบคำสั่ง SELECT * FROM ( SELECT * FROM table_name ORDER BY column1 DESC LIMIT n ) AS subquery ORDER BY column2 ASC; ตัวอ

  10. MySQL: รันไฟล์ SQL จาก Terminal (Command Line)

    สามารถรันไฟล์ .sql เข้าสู่ MySQL Database ได้โดยตรงจาก Command Line (Terminal/CMD) โดยไม่ต้องเปิด MySQL Client รูปแบบคำสั่ง mysql -u username -p database_name < file_name.sql -u username - ชื่อผู้ใช้ MySQL -p - ขอรหัสผ่าน (จะ prompt ให้กรอก) database_name - ชื่อฐานข้อมูลปลายทาง <

  11. MySQL: SELECT DISTINCT แบบ Case-Insensitive ด้วย UPPER/LOWER

    คำสั่ง DISTINCT ใน MySQL เริ่มต้นเป็น Case-Sensitive (แยก John และ john) หากต้องการ Case-Insensitive DISTINCT ให้ใช้ UPPER() หรือ LOWER() ก่อน รูปแบบคำสั่ง วิธีที่ 1: ใช้ UPPER() SELECT DISTINCT UPPER(column_name) FROM table_name; วิธีที่ 2: ใช้ LOWER() SELECT DISTINCT LOWER(column_name) FROM t

  12. MySQL: INSERT ด้วย MAX() + 1 ใช้ COALESCE ป้องกัน NULL

    เมื่อต้องการสร้างค่า ID ใหม่โดยอัตโนมัติจากค่าสูงสุดที่มีอยู่ (MAX + 1) โดยไม่ใช้ AUTO_INCREMENT สามารถใช้ COALESCE() ร่วมกับ Subquery ได้ รูปแบบคำสั่ง INSERT INTO table_name (id_column, name_column) SELECT 1 + COALESCE((SELECT MAX(id_column) FROM table_name WHERE name_column = value), 0), value;

  13. MySQL: ใช้ IFNULL ร่วมกับ ORDER BY สำหรับจัดการค่า NULL

    ฟังก์ชัน IFNULL() ใน MySQL สามารถใช้ร่วมกับ ORDER BY เพื่อจัดการค่า NULL ให้เรียงลำดับตามต้องการ โดยแทนค่า NULL ด้วยค่าสำรอง (fallback value) รูปแบบคำสั่ง SELECT * FROM table_name ORDER BY IFNULL(column1, column2); หาก column1 ไม่ใช่ NULL → ใช้ column1 เรียง หาก column1 เป็น NULL → ใช้ c

  14. MySQL: จัดกลุ่มข้อมูล Login ต่อชั่วโมง และหาผู้ใช้ Login ล่าสุดแต่ละชั่วโมง

    เมื่อต้องการจัดกลุ่มข้อมูล login ต่อชั่วโมง และดึงเฉพาะรายการล่าสุด (latest) ในแต่ละชั่วโมง สามารถใช้ Subquery กับ MAX(UNIX_TIMESTAMP()) และ JOIN กลับมา รูปแบบคำสั่ง SELECT t1.* FROM ( SELECT MAX(UNIX_TIMESTAMP(datetime_col)) AS max_ts FROM table_name GROUP BY HOUR(datetime_col) ) AS l

  15. MySQL: GROUP BY ด้วย WHERE และ HAVING COUNT > 1

    การใช้ GROUP BY ร่วมกับ WHERE (กรองก่อนจัดกลุ่ม) และ HAVING (กรองหลังจัดกลุ่ม) ช่วยให้สามารถหาข้อมูลที่ตรงเงื่อนไขและมีจำนวนซ้ำเกินกว่าที่กำหนดได้ รูปแบบคำสั่ง threshold ORDER BY sort_column DESC; WHERE - กรองแถว ก่อน จัดกลุ่ม GROUP BY - จัดกลุ่มแถวที่เหลือ HAVING - กรองกลุ่ม หลัง จ

  16. MySQL: แปลงระบบเลขฐานหนึ่งไปอีกฐานหนึ่งด้วย CONV()

    ฟังก์ชัน CONV() ใน MySQL ใช้แปลงตัวเลขจากระบบเลขฐานหนึ่ง (base) ไปอีกฐานหนึ่ง รองรับฐาน 2 ถึง 36 รูปแบบคำสั่ง CONV(number, from_base, to_base) number - ตัวเลขในรูปสตริง (ฐาน from_base) from_base - ฐานต้นทาง (2-36) to_base - ฐานปลายทาง (2-36) ตัวอย่างการใช้งาน 1. สร้างตารางเก็บค่า

  17. MySQL: ดึงข้อมูลปีเฉพาะจาก Timestamp ด้วย YEAR()

    ใน MySQL สามารถดึงเฉพาะส่วน ปี (Year) จากคอลัมน์ TIMESTAMP, DATETIME, หรือ DATE ได้ง่ายด้วยฟังก์ชัน YEAR() รูปแบบคำสั่ง SELECT column_name FROM table_name WHERE YEAR(timestamp_column) = target_year; ตัวอย่างการใช้งาน 1. สร้างตารางพร้อมคอลัมน์ TIMESTAMP CREATE TABLE getYearOut ( Id INT NOT N

  18. MySQL: ใช้ WHERE BINARY สำหรับการเปรียบเทียบ Case-Sensitive

    ใน MySQL การเปรียบเทียบสตริงเริ่มต้นเป็น Case-Insensitive (ไม่แยกตัวพิมพ์ใหญ่/เล็ก) หากต้องการเปรียบเทียบแบบ Case-Sensitive ให้ใช้คีย์เวิร์ด BINARY ตัวอย่างเปรียบเทียบ Case 1: Case-Insensitive (ค่าเริ่มต้น) SELECT joHN = JOHN AS Result; ผลลัพธ์: 1 (True - ถือว่าเท่ากัน) Case 2: Case-Sensitive ด

  19. MySQL: ทำ LEFT JOIN ระหว่าง 2 ตารางพร้อม Foreign Key

    LEFT JOIN (หรือ LEFT OUTER JOIN) คืนค่า ทุกแถวจากตารางซ้าย (left table) และข้อมูลที่ตรงจากตารางขวา (right table) หากไม่ตรงจะเป็น NULL รูปแบบคำสั่ง SELECT left_table.col1, left_table.col2, right_table.col3 FROM left_table LEFT JOIN right_table ON left_table.join_column = right_table.join_column; ต

  20. MySQL: รวมค่าที่ไม่ซ้ำ (DISTINCT) เป็นรายการคั่นคอมมาด้วย GROUP_CONCAT

    เมื่อต้องการรวมค่าจากหลายแถวให้กลายเป็นสตริงเดียว คั่นด้วยคอมมา (comma-delimited) พร้อมกำจัดค่าซ้ำ ใช้ GROUP_CONCAT() ร่วมกับ DISTINCT และ GROUP BY รูปแบบคำสั่ง SELECT column1, column2, column3, GROUP_CONCAT(DISTINCT column4 ORDER BY column4 SEPARATOR ,) AS alias_name FROM table_name GROU

Total 4564 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:139/229  20-คอมพิวเตอร์/Page Goto:1 133 134 135 136 137 138 139 140 141 142 143 144 145