Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL
MySQL
  1. MySQL: แปลงข้อมูลที่เข้ารหัสผิด (Wrong Encoding) เป็น UTF-8 ด้วย CONVERT

    เมื่อข้อมูลในฐานข้อมูลถูกเก็บด้วย character set ผิด (เช่น latin1 แทน utf8) ทำให้อักขระพิเศษแสดงผลผิด (เช่น ’ แทน ’) สามารถแก้ไขได้ด้วยฟังก์ชัน CONVERT() แบบ double conversion รูปแบบคำสั่ง SELECT CONVERT(BINARY CONVERT(column_name USING latin1) USING utf8) AS fixed_column F

  2. MySQL: ใช้ Backtick ครอบชื่อฐานข้อมูลและตาราง แทน Single Quote

    ใน MySQL ไม่ควรใช้ single quote ( ) ครอบชื่อฐานข้อมูลหรือตาราง เพราะ single quote ใช้สำหรับ ค่าสตริง (string literals) เท่านั้น ควรใช้ backtick (` `) สำหรับ identifier (ชื่อฐานข้อมูล, ตาราง, คอลัมน์) รูปแบบคำสั่งที่ถูกต้อง UPDATE `database_name`.`table_name` SET column_name = column_name + 1 WHERE

  3. MySQL: ลบฐานข้อมูลที่มีตัวอักษรพิเศษ (?) ในชื่อด้วย Backtick

    เมื่อชื่อฐานข้อมูล (หรือตาราง/คอลัมน์) มีตัวอักษรพิเศษ เช่น ?, -, space, หรือเป็นคำสงวน ต้องใช้ backtick (` `) ครอบชื่อเพื่อหลีกเลี่ยง syntax error รูปแบบคำสั่ง DROP DATABASE `database_name_with_special_chars`; ตัวอย่างการใช้งาน 1. สร้างฐานข้อมูลที่มี ? ในชื่อ CREATE DATABASE `test?data`; ผลลั

  4. MySQL: เปรียบเทียบ 2 ตารางหา ID ที่หายไปด้วย NOT IN และ Subquery

    เมื่อต้องการหา ID ที่มีในตารางแรก แต่ ไม่มี ในตารางที่สอง สามารถใช้ NOT IN ร่วมกับ subquery ได้ รูปแบบคำสั่ง SELECT t1.id_column FROM table1 t1 WHERE t1.id_column NOT IN (SELECT t2.id_column FROM table2 t2); ตัวอย่างการใช้งาน 1. สร้างตารางแรก (First_Table) - มี ID 1,2,3,4 CREATE TABLE First_Tab

  5. MySQL: ลบแถวที่มีสตริง "foo" ในตาราง "bar" ด้วย LIKE

    การลบแถวที่มีสตริงเฉพาะ (เช่น foo) ในคอลัมน์ข้อความ สามารถทำได้ด้วยคำสั่ง DELETE ร่วมกับ LIKE และ wildcard % รูปแบบคำสั่ง DELETE FROM table_name WHERE column_name LIKE %search_string%; % - ตรงกับตัวอักษร 0 หรือมากกว่า (ทุกตำแหน่ง) %foo% - มี foo อยู่ที่ไหนก็ได้ในสตริง foo% - เริ่มต้น

  6. MySQL: ทำไม LIMIT 0 จึงถูกต้องและมีประโยชน์

    คำสั่ง LIMIT 0 ใน MySQL SELECT statement จะคืนค่า empty result set (ชุดผลลัพธ์ว่าง) ซึ่งดูเหมือนไร้ประโยชน์ แต่จริงๆ มีประโยชน์ในบางสถานการณ์ ทำไม LIMIT 0 ถึงถูกต้อง ตามเอกสารอย่างเป็นทางการของ MySQL (Limit Optimization) LIMIT 0 ถูกออกแบบมาเพื่อ: ตรวจสอบความถูกต้องของคำสั่ง (Query Validation

  7. MySQL: ค้นหาตัวเลข 6-10 ด้วย BETWEEN และ REGEXP

    ใน MySQL สามารถค้นหารายการที่มีค่าตัวเลขอยู่ในช่วง 6-10 ได้ 2 วิธีหลัก: ใช้ BETWEEN (ง่ายและเร็ว) หรือ REGEXP (ยืดหยุ่นกว่าสำหรับรูปแบบซับซ้อน) วิธีที่ 1: ใช้ BETWEEN (แนะนำสำหรับช่วงตัวเลข) SELECT * FROM table_name WHERE column_name BETWEEN 6 AND 10; รองรับชนิดข้อมูลตัวเลข (INT, DECIMAL, FL

  8. MySQL: ลบช่องว่างนำหน้าและต่อท้ายด้วย TRIM

    เมื่อต้องการลบช่องว่าง (spaces) เฉพาะที่ นำหน้า (leading) และ ต่อท้าย (trailing) ของข้อมูล ใช้ฟังก์ชัน TRIM() ซึ่งต่างจาก REPLACE() ที่ลบทุกตำแหน่ง รูปแบบคำสั่ง UPDATE table_name SET column_name = TRIM(column_name); ตัวอย่างการใช้งาน 1. สร้างตารางและเพิ่มข้อมูลที่มีช่องว่างขอบ CREATE TABLE remo

  9. MySQL: ลบช่องว่างระหว่างตัวอักษรด้วย REPLACE

    เมื่อข้อมูลในคอลัมน์มีช่องว่าง (spaces) ระหว่างตัวอักษร และต้องการลบทิ้ง ให้ใช้ฟังก์ชัน REPLACE() แทนที่ช่องว่างด้วยสตริงว่าง รูปแบบคำสั่ง UPDATE table_name SET column_name = REPLACE(column_name, , ); REPLACE(str, from_str, to_str) - แทนที่ from_str ด้วย to_str - ช่องว่าง (space)

  10. MySQL: รวมผลลัพธ์ COUNT จากหลายตารางด้วย Subquery

    เมื่อต้องการนับจำนวนแถวจากหลายตารางแล้วนำมาบวกกัน สามารถใช้ subquery ใน SELECT clause ได้ รูปแบบคำสั่ง SELECT (SELECT COUNT(*) FROM table1) + (SELECT COUNT(*) FROM table2) + (SELECT COUNT(*) FROM table3) AS total_records; ตัวอย่างการใช้งาน 1. เตรียมตารางตัวอย่าง 3 ตาราง -- ตารางที่

  11. MySQL: ลบอักขระ 2 ตัวแรกของทุกแถวด้วย SUBSTRING

    เมื่อต้องการลบอักขระนำหน้าจำนวนคงที่ (เช่น 2 ตัวแรก) จากคอลัมน์ทุกแถว สามารถใช้ฟังก์ชัน SUBSTRING() (หรือ SUBSTR()) ร่วมกับ UPDATE รูปแบบคำสั่ง UPDATE table_name SET column_name = SUBSTRING(column_name, 3) WHERE condition; SUBSTRING(str, pos) - ดึงสตริงตั้งแต่ตำแหน่ง pos จนจบ (ตำแหน่งเริ่มต้

  12. MySQL: เรียงลำดับ Timestamp แบบอัปสกอล (Ascending) โดยไม่ใช้ TIMESTAMP()

    ใน MySQL คอลัมน์ชนิด TIMESTAMP (และ DATETIME) เรียงลำดับได้โดยตรงด้วย ORDER BY ไม่ต้องใช้ฟังก์ชัน TIMESTAMP() เพิ่มเติม รูปแบบคำสั่ง SELECT timestamp_column FROM table_name ORDER BY timestamp_column ASC; ASC - น้อยไปมาก (เก่าสุดก่อน) - ค่าเริ่มต้น DESC - มากไปน้อย (ใหม่สุดก่อน) ตัวอย่า

  13. MySQL: แก้ไข ERROR 1064 เรื่องเครื่องหมายคำพูด ใช้ Backtick แทน Single Quote

    ข้อผิดพลาด ERROR 1064 (42000): You have an error in your SQL syntax บ่อยครั้งเกิดจากการใช้เครื่องหมายคำพูดผิดประเภท ใน MySQL มีกฎเฉพาะ: Backtick (` `) - ใช้กับ ชื่อออบเจ็กต์ (database, table, column, alias) Single Quote ( ) - ใช้กับ ค่าสตริง (string literals) Double Quote ( ) - ใช้กับค

  14. MySQL: ใช้ LIKE กับเงื่อนไขหลายอย่างใน WHERE เดียวกัน

    ใน MySQL ไม่ต้องใช้ WHERE หลายครั้ง สามารถรวมเงื่อนไขหลายอย่างใน WHERE เดียวกันได้โดยใช้ตัวดำเนินการ AND หรือ OR ร่วมกับ LIKE รูปแบบคำสั่ง SELECT * FROM table_name WHERE column1 LIKE pattern1 AND column2 LIKE pattern2; ตัวอย่างการใช้งาน 1. สร้างตารางและเพิ่มข้อมูล CREATE TABLE WhereDemo (

  15. MySQL: แก้ไขข้อผิดพลาด "not a variable or NEW pseudo-variable" ใน Stored Procedure

    ข้อผิดพลาด not a variable or NEW pseudo-variable ใน MySQL Stored Procedure เกิดขึ้นเมื่อพยายามใช้ตัวแปรผู้ใช้ (user-defined variable) ที่ไม่ได้ขึ้นต้นด้วย @ หรือใช้ตัวแปรในบริบทที่ไม่รองรับ สาเหตุและวิธีแก้ไข ใน Stored Procedure ต้องแยกเป็น 2 ประเภท: ตัวแปรท้องถิ่น (Local Variable) - ประกาศด้

  16. MySQL: สร้างคอลัมน์ให้มี Key = MUL ด้วย ADD KEY

    ใน MySQL คีย์ประเภท MUL (Multiple) หมายถึงดัชนีที่ไม่ใช่ PRIMARY KEY และไม่ใช่ UNIQUE KEY อนุญาตให้มีค่าซ้ำได้ ใช้สร้างด้วย ADD KEY หรือ ADD INDEX รูปแบบคำสั่ง ALTER TABLE table_name MODIFY COLUMN column_name data_type [NOT NULL], ADD KEY (column_name); MODIFY COLUMN - ปรับเปลี่ยนคอลัมน์ (เช

  17. MySQL: สร้างผู้ใช้ (CREATE USER) ด้วยตัวแปรและ Prepared Statement

    ใน MySQL ไม่สามารถใช้ตัวแปรโดยตรงในคำสั่ง CREATE USER ได้ ต้องใช้ Dynamic SQL ผ่าน PREPARE, EXECUTE, และ DEALLOCATE PREPARE แทน ขั้นตอนการสร้างผู้ใช้ด้วยตัวแปร ขั้นตอนที่ 1: กำหนดตัวแปร username และ password SET @UserName := John Doe; SET @Password := John Doe 123456; ขั้นตอนที่ 2: สร้างคำสั่ง S

  18. MySQL: คัดลอกตารางข้ามฐานข้อมูลด้วย INSERT INTO SELECT

    การคัดลอกข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง (แม้จะอยู่ในฐานข้อมูลต่างกัน) สามารถทำได้ด้วยคำสั่ง INSERT INTO ... SELECT รูปแบบคำสั่ง INSERT INTO target_database.target_table (col1, col2, ...) SELECT col1, col2, ... FROM source_database.source_table; จำนวนคอลัมน์และชนิดข้อมูลต้องตรงกัน

  19. MySQL: ค้นหาอีเมลที่ไม่ถูกต้อง (Invalid Email) ด้วย NOT LIKE

    สามารถค้นหาอีเมลที่มีรูปแบบไม่ถูกต้องใน MySQL ได้โดยใช้เงื่อนไข NOT LIKE กับรูปแบบพื้นฐานของอีเมล แม้จะไม่ครอบคลุมทุกกรณีตามมาตรฐาน RFC แต่เพียงพอสำหรับการกรองเบื้องต้น รูปแบบคำสั่ง SELECT email_column FROM your_table WHERE email_column NOT LIKE %_@_%._%; คำอธิบายรูปแบบ %_@_%._%: %_ - มีตัวอ

  20. MySQL: ตรวจสอบและแปลงชนิดข้อมูลตัวแปรด้วย CAST

    MySQL ไม่มีคำสั่งตรวจสอบชนิดข้อมูลของตัวแปรโดยตรง (เหมือน typeof ในภาษาอื่น) แต่สามารถแปลงชนิดข้อมูลจากหนึ่งรูปแบบไปอีกรูปแบบหนึ่งได้ด้วยออปอเรเตอร์ CAST() รูปแบบคำสั่ง CAST SELECT CAST(variable AS target_type); ชนิดข้อมูลเป้าหมายที่รองรับ: SIGNED, UNSIGNED, CHAR, DATE, DATETIME, DECIMAL, TIME, B

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