Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL
MySQL
  1. ดึงข้อมูล MySQL แบบแบ่งหน้า (Pagination) ด้วย LIMIT และ OFFSET

    Pagination ใน MySQL: LIMIT + OFFSET ใช้ LIMIT จำกัดจำนวนแถว และ OFFSET ข้ามแถวแรกๆ ไป เพื่อดึงข้อมูลทีละ หน้า (Batch) ไวยากรณ์ SELECT * FROM table_name LIMIT page_size OFFSET offset_value; -- หรือ SELECT * FROM table_name LIMIT offset_value, page_size; สร้างตารางและข้อมูล 10 แถว (David), (Robert)

  2. นับจำนวนด้วยเงื่อนไขใน MySQL: SUM(condition) แทน COUNT

    นับเฉพาะแถวที่ตรงเงื่อนไข: ใช้ SUM(Expression) ไม่ใช่ COUNT ใน MySQL เงื่อนไขเปรียบเทียบ (เช่น ClientName = Sam) จะคืนค่า 1 (TRUE) หรือ 0 (FALSE) ดังนั้น SUM(ClientName = Sam) จึงนับจำนวนแถวที่เป็น Sam ได้โดยตรง สร้างตารางและข้อมูล (มีค่าซ้ำและหลาย ClientId) (CLI-130, Mike), (CLI-101, Chris), (CLI

  3. SELECT ข้อมูลจากตารางหนึ่งเฉพาะที่ Match คอลัมน์ในอีกตาราง (EXISTS Subquery)

    ใช้ EXISTS + Subquery สำหรับ Semi-Join (Filter ตามตารางอื่น) EXISTS คืนค่า TRUE หาก Subquery คืนแถวอย่างน้อย 1 แถว ใช้กรองตารางหลัก (DemoTable1) ให้เหลือเฉพาะแถวที่มีค่าตรงกับตารางอ้างอิง (DemoTable2) สร้างตาราง 1: วิชา (Subject) (111, MySQL), (112, MongoDB), (113, Java), (114, C), (115, MySQL); Q

  4. คัดลอกข้อมูลทั้งหมดจากตารางหนึ่งไปอีกตารางใน MySQL (CREATE TABLE AS SELECT)

    CREATE TABLE ... AS SELECT: คัดลอกโครงสร้าง + ข้อมูลในคำสั่งเดียว คำสั่งนี้สร้างตารางใหม่โดยอัตโนมัติจาก Result Set ของ SELECT คล้ายกับ CREATE TABLE ... SELECT ในบทความก่อนหน้า แต่เน้นที่การคัดลอกภายใน Database เดียวกัน สร้างตารางต้นทาง (มี AUTO_INCREMENT เริ่มที่ 101) (John Doe), (John Smith), (D

  5. ค้นหาค่าที่มีตัวอักษร % ใน MySQL LIKE Query (Escape Character)

    ค้นหาตัวอักษร % ตรงตัวใน LIKE Pattern ตัวอักษร % ใน LIKE เป็น Wildcard (Match อะไรก็ได้) หากต้องการค้นหา % ตรงตัว ต้อง Escape ด้วย Backslash \\% ไวยากรณ์ SELECT * FROM your_table WHERE your_column LIKE \\%; สร้างตารางและข้อมูล (มี % อยู่ในข้อมูล) (%JohnSmith), (DavidMiller), (CarolTaylor%), (%Dav

  6. คัดลอกฐานข้อมูล MySQL ไม่ใช้ mysqldump (CREATE TABLE ... SELECT)

    คัดลอกโครงสร้างและข้อมูลตารางข้าม Database ด้วย CREATE TABLE ... SELECT วิธีเร็วและง่าย ไม่ต้องใช้ mysqldump เหมาะสำหรับคัดลอกตารางเดี่ยวหรือไม่กี่ตาราง ไวยากรณ์ CREATE TABLE target_db.target_table SELECT * FROM source_db.source_table; ตัวอย่าง: คัดลอกจาก database sample ไป web INSERT INTO DemoT

  7. MySQL SUM และ ORDER BY: ผลรวมคะแนนต่อคน เรียงจากมากไปน้อย

    GROUP BY + SUM() + ORDER BY: สรุปและเรียงลำดับ รวมแถวที่มี StudentName เดียวกัน คำนวณ SUM(StudentMarks) แล้วเรียงจากคะแนนรวมมากไปน้อย สร้างตารางและข้อมูล (Chris, 45), (David, 98), (Bob, 58); Query OK, 6 rows affected ข้อมูลก่อนจัดกลุ่ม +-------------+--------------+ | StudentName | StudentMarks |

  8. เลือกหลายแถวใน MySQL ได้อย่างมีประสิทธิภาพด้วย Index และ IN()

    Query หลายแถวได้เร็วด้วย Index + IN() การใช้ WHERE id IN (val1, val2, ...) ร่วมกับ Index บนคอลัมน์ Id จะทำให้ MySQL ใช้ Index Lookup (ref/range) แทน Full Table Scan สร้างตาราง พร้อม Primary Key (Index อัตโนมัติ) CREATE INDEX id_index ON DemoTable1501(Id); Query OK, 0 rows affected (0.23 sec) เพิ่

  9. เรียงลำดับ MySQL ตามส่วนของคอลัมน์ (ตัวเลขท้ายหลัง Underscore)

    จัดเรียงตามส่วนตัวเลขหลัง Delimiter (Underscore) ข้อมูลแบบ John_120, John_201 ต้องการเรียงตามตัวเลขท้าย (120, 201) ไม่ใช่แบบ String ใช้ SUBSTRING_INDEX() แยกส่วน แล้ว CAST เป็นตัวเลข สร้างตารางและข้อมูล (John_120), (John_201), (Mike_178), (Bob_198); Query OK, 4 rows affected คำสั่ง: แยกส่วนซ้าย/ข

  10. ส่งค่า NULL ให้คอลัมน์ AUTO_INCREMENT ใน MySQL ได้หรือไม่?

    คำตอบ: ส่ง NULL ได้ และ MySQL จะสร้างค่าใหม่ให้อัตโนมัติ แม้คอลัมน์จะเป็น NOT NULL AUTO_INCREMENT PRIMARY KEY ก็สามารถส่ง NULL ในคำสั่ง INSERT ได้ MySQL จะข้ามค่า NULL และสร้าง Sequence ใหม่ให้ สร้างตาราง ); Query OK, 0 rows affected (0.45 sec) INSERT ด้วย NULL สำหรับ ClientId INSERT INTO DemoTa

  11. สลับค่าในคอลัมน์เฉพาะแถวใน MySQL ด้วย UPDATE WHERE

    UPDATE ค่าเฉพาะแถวที่ตรงเงื่อนไข ใช้ UPDATE ... SET ... WHERE เพื่อเปลี่ยนค่าในคอลัมน์เฉพาะแถวที่ต้องการ ไม่ใช่ Swap ระหว่างสองแถว (ซึ่งซับซ้อนกว่า) สร้างตารางและข้อมูล (101, Chris), (102, Bob), (103, David), (104, Mike); Query OK, 4 rows affected ข้อมูลก่อนแก้ไข +------+-----------+ | Id | Fir

  12. บังคับให้ Column Alias เป็นชนิดข้อมูลเฉพาะใน MySQL ด้วย CASE และ CAST

    ควบคุม Data Type ของ Column Alias ด้วย CASE WHEN MySQL มักอนุมาน Data Type ของ Expression เอง หากต้องการบังคับให้เป็นชนิดเฉพาะ (เช่น SIGNED vs UNSIGNED) ให้ใช้ CASE ร่วมกับ CAST() สร้างตารางและข้อมูล INSERT INTO DemoTable1505 VALUES (20, 0), (45, 1); Query OK, 2 rows affected ข้อมูลต้นฉบับ +-----

  13. ลบช่องว่างระหว่างคำใน MySQL ด้วย REPLACE()

    ใช้ REPLACE() ลบ/แทนที่สตริงย่อยในคอลัมน์ REPLACE(column, search_string, replace_string) แทนที่ทุกครั้งที่พบ search_string ด้วย replace_string สร้างตารางและข้อมูล (This is MongoDB NoSQL database); Query OK, 3 rows affected ข้อมูลก่อนแก้ไข +--------------------------------+ | Title

  14. รวมผลลัพธ์ MySQL ให้แสดงในบรรทัดเดียวด้วย GROUP_CONCAT

    GROUP_CONCAT(): รวมหลายแถวเป็นสตริงเดียว ฟังก์ชัน GROUP_CONCAT() รวมค่าจากหลายแถวเป็นสตริงเดียว คั่นด้วย Separator ที่กำหนด ใช้ได้กับ GROUP BY หรือไม่ก็ได้ (จะรวมทั้ง Result Set) สร้างตารางและข้อมูล (Chris, 111), (David, 112), (Mike, 111), (Bob, 113); Query OK, 4 rows affected ข้อมูลทั้งหมด +----

  15. เรียงลำดับคอลัมน์ข้อความเพื่อหาค่าสูงสุดใน MySQL (Text/Number Mixed)

    ปัญหา: เรียงข้อความที่ผสมตัวเลข (Natural Sort) คอลัมน์ TEXT หรือ VARCHAR ที่มีค่าแบบ STUDENT78, STUDENT98, John89 การเรียง ORDER BY column DESC แบบปกติจะเรียงแบบ Lexicographic (ตัวอักษร) ทำให้ STUDENT98 7 แต่ STUDENT98 มีหลักมากกว่า วิธีแก้: ดึงตัวเลขท้ายออกมา แปลงเป็นตัวเลข แล้วเรียง ใช้ RIGHT(),

  16. การใช้คำสั่ง EXPLAIN ใน MySQL เพื่อดู Query Execution Plan

    EXPLAIN: วิเคราะห์แผนการดำเนินการคำสั่ง SQL EXPLAIN ใช้ตรวจสอบว่า MySQL จะดำเนินการ Query อย่างไร ใช้ Index หรือไม่ ทำ Full Table Scan หรือไม่ ช่วยให้ปรับปรุงประสิทธิภาพได้ คำสั่งที่รองรับ EXPLAIN SELECT, INSERT, DELETE, REPLACE, UPDATE สร้างตาราง Index และข้อมูล (101, Sam, 21), (102, Bob, 23), (

  17. คำนวณผลรวมคอลัมน์ตามเงื่อนไขใน MySQL ด้วย DIV และ GROUP BY

    SUM() แบบมีเงื่อนไข: จัดกลุ่มด้วย DIV (Integer Division) ตัวอย่างนี้ใช้ DIV (หารจำนวนเต็ม) เพื่อจัดกลุ่ม ProductId เป็นช่วงๆ (100-109, 110-119, 120-129) แล้วคำนวณ SUM ของ ProductPrice ในแต่ละช่วง สร้างตารางและข้อมูล (100, 900), (115, 1000), (119, 2100), (125, 2100), (128, 2900); Query OK, 5 rows a

  18. หาค่าเฉลี่ยราคาสินค้าจาก Product ID ซ้ำใน MySQL ด้วย AVG() และ GROUP BY

    คำนวณค่าเฉลี่ยราคาต่อ Product ID ที่ซ้ำกัน ใช้ AVG() ร่วมกับ GROUP BY เพื่อรวมแถวที่มี ProductId เดียวกัน และคำนวณค่าเฉลี่ยของ ProductPrice สร้างตารางและข้อมูล (PRODUCT_200, 300); Query OK, 5 rows affected ข้อมูลก่อนจัดกลุ่ม +-------------+--------------+ | ProductId | ProductPrice | +---------

  19. ชนิดข้อมูล MySQL สำหรับเก็บจำนวนเงิน PayPal (Decimal Amount)

    ใช้ DECIMAL(10,2) สำหรับจำนวนเงินมาตรฐาน PayPal และระบบชำระเงินส่วนใหญ่ใช้ทศนิยม 2 ตำแหน่ง (เซ็นต์/สตางค์) DECIMAL(10,2) รองรับได้สูงสุด 99,999,999.99 (ประมาณ 100 ล้าน) เพียงพอสำหรับธุรกรรมทั่วไป โครงสร้าง DECIMAL(10,2) 10 = จำนวนหลักทั้งหมด (Precision) 2 = จำนวนหลักทศนิยม (Scale) รองรับ: -99,999,

  20. แก้ไข MySQL ERROR 1064 (42000) Syntax Error ใกล้เครื่องหมาย ')'

    สาเหตุและวิธีแก้ ERROR 1064 ใกล้ ) Error นี้มักเกิดจาก Comma (,) คงอยู่ท้ายคอลัมน์สุดท้าย ในคำสั่ง CREATE TABLE โค้ดที่ผิด (มี Comma ท้ายคอลัมน์ event) ); -- <-- Comma ค้างอยู่ที่นี่! ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

Total 4564 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:40/229  20-คอมพิวเตอร์/Page Goto:1 34 35 36 37 38 39 40 41 42 43 44 45 46