Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL
MySQL
  1. ทำความเข้าใจ Foreign Key ใน MySQL: One-to-One และ One-to-Many

    Foreign Key (FK) คือคีย์ที่สร้างความสัมพันธ์ระหว่าง 2 ตาราง โดยอ้างอิง Primary Key (PK) ของอีกตารางหนึ่ง ประเภทความสัมพันธ์ 1. One-to-One (1:1) หนึ่ง Record ใน Table A เชื่อมโยงกับหนึ่ง Record ใน Table B เท่านั้น -- Table A (Parent) CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR

  2. วิธีนับจำนวนแถวในตาราง MySQL ให้เร็วที่สุด

    การนับแถวด้วย COUNT(*) ในตารางใหญ่อาจช้า เพราะต้อง Scan ทั้งตาราง (Full Table Scan) มีวิธีที่เร็วกว่าสำหรับกรณีเฉพาะ วิธีที่ 1: COUNT(*) - มาตรฐานและแม่นยำที่สุด SELECT COUNT(*) FROM RowCountDemo; ✅ แม่นยำ 100% (นับทุกแถว รวม Deleted/Uncommitted ใน MVCC) ✅ ใช้ Index ได้ (ถ้ามี Index) - MySQL จะเลื

  3. วิธีเพิ่ม CHECK CONSTRAINT ในตาราง MySQL

    MySQL 8.0.16+ รองรับ CHECK CONSTRAINT อย่างแท้จริง (Enforced) รุ่นก่อนหน้าจะ Parse แต่ไม่ Enforce Syntax การสร้างตารางพร้อม CHECK CREATE TABLE table_name ( column1 datatype, column2 datatype, CONSTRAINT constraint_name CHECK (condition) ); ตัวอย่าง: ตรวจสอบอายุต้องมากกว่าหรือเท่ากับ 18

  4. วิธี Raise Error (โยน Exception) ใน MySQL ด้วย SIGNAL

    MySQL 5.5+ รองรับ SIGNAL สำหรับโยน Error/Exception เองใน Stored Procedure, Trigger, Function Syntax พื้นฐาน SIGNAL SQLSTATE sqlstate_value SET MESSAGE_TEXT = ข้อความ Error, MYSQL_ERRNO = error_number; ตัวอย่างการใช้งาน 1. โยน Error แบบง่าย SIGNAL SQLSTATE 42927 SET MESSAGE_TEXT = Error Genera

  5. MySQL Pagination แบบไม่ต้อง Query 2 ครั้ง (Single Query)

    Pagination แบบเดิมมัก Query 2 ครั้ง: 1) นับ Total Rows 2) ดึงข้อมูลหน้าปัจจุบัน แต่สามารถทำได้ใน Query เดียวด้วย SQL_CALC_FOUND_ROWS และ FOUND_ROWS() วิธีเดิม (2 Queries) 0 LIMIT 0, 10; วิธี Single Query (MySQL Specific) 0 LIMIT 0, 10; -- ตามด้วย: ดึง Total Rows SELECT FOUND_ROWS(); ผลลัพธ์ --

  6. วิธีเพิ่มสิทธิ์ SUPER Privilege ให้ User ใน MySQL

    SUPER Privilege ให้สิทธิ์ควบคุมระดับ Server: Kill Thread, Set Global Variables, Replication, Flush Logs, v.v. ควรให้เฉพาะ Admin/Root เท่านั้น วิธีที่ 1: ใช้ GRANT (แนะนำ - MySQL 5.7+) GRANT SUPER ON *.* TO username@host IDENTIFIED BY password; FLUSH PRIVILEGES; ตัวอย่าง GRANT SUPER ON *.* TO admin

  7. วิธีเปลี่ยน Timezone ใน MySQL

    สามารถเปลี่ยน Timezone ใน MySQL ได้ทั้งระดับ Session และ Global โดยใช้คำสั่ง SET time_zone 1. เปลี่ยน Timezone ระดับ Session (เฉพาะ Connection นี้) SET time_zone = +08:00; -- หรือ SET time_zone = Asia/Bangkok; ตัวอย่าง SELECT NOW(); +---------------------+ | NOW() | +---------------

  8. ใช้ UPDATE กับ LIMIT ใน MySQL ได้หรือไม่

    ได้** MySQL รองรับ UPDATE ... LIMIT โดยตรง ตั้งแต่ Version เก่าๆ แล้ว Syntax แบบตรงไปตรงมา (MySQL Native) UPDATE table_name SET column = value WHERE condition LIMIT row_count; ตัวอย่างง่าย 0 LIMIT 7; ตัวอย่างในบทความ (ใช้ Subquery สำหรับ ORDER BY) MySQL ไม่รองรับ ORDER BY ใน UPDATE โดยตรง (ก่อน

  9. วิธีตรวจสอบความคล้ายคลึงระหว่างสตริง 2 ค่าใน MySQL ด้วย STRCMP

    MySQL มีฟังก์ชัน STRCMP(str1, str2) สำหรับเปรียบเทียบสตริง 2 ค่า คืนค่าเป็นตัวเลขตามเงื่อนไข กฎการคืนค่า เงื่อนไขค่าที่คืนความหมาย str1 = str20เท่ากัน str1 < str2 (Lexicographically)-1str1 น้อยกว่า str2 str1 > str2 (Lexicographically)1str1 มากกว่า str2 ตัวอย่างการใช้งาน Case 1: สตริงเท่า

  10. MySQL: เรียงลำดับ VARCHAR ให้เป็นตัวเลข ด้วย LPAD()

    ใช้ LPAD(LOWER(column_name)) เพื่อเรียง VARCHAR ให้เป็นตัวเลขใน MySQL สร้างตารางและเพิ่มข้อมูล INSERT INTO SortingvarcharDemo VALUES (99), (9), (199), (1), (999), (78); ข้อมูลดิบ (ไม่เรียง): +------+ | List | +------+ | 99 | | 9 | | 199 | | 1 | | 999 | | 78 | +------+ Syntax การเรีย

  11. การใช้ Backtick (`) ในคำสั่ง SQL ของ MySQL

    Backtick (`) ใช้ใน MySQL เพื่อระบุ Identifier** (ชื่อตาราง, คอลัมน์, ฐานข้อมูล, Index, Alias) ที่อาจจะเป็น Reserved Word หรือมีอักขระพิเศษ เมื่อไหร่ควรใช้ Backtick ชื่อเป็น Reserved Keywords: select, from, where, order, group, key, index, primary, references, v.v. ชื่อมี ช่องว่าง: `first name` ชื่

  12. วิธีเช็คว่าตารางมีอยู่ใน MySQL โดยไม่ใช้ SELECT FROM

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

  13. MySQL LIMIT Clause เทียบเท่าใน SQL Server คืออะไร

    MySQL ใช้ LIMIT สำหรับจำกัดจำนวนแถวผลลัพธ์ ใน SQL Server ใช้ OFFSET ... FETCH (SQL Server 2012+) หรือ TOP (รุ่นเก่า) MySQL LIMIT Syntax SELECT column_name FROM table_name LIMIT offset, row_count; -- หรือ SELECT column_name FROM table_name LIMIT row_count OFFSET offset; ตัวอย่าง MySQL SELECT id FRO

  14. เปิดการเข้าถึง MySQL Root จากทุก Host (% wildcard)

    ⚠️ คำเตือน: การเปิด Root ให้เข้าถึงจากทุก Host (% wildcard) เป็นช่องโหว่ด้านความปลอดภัยร้ายแรง ควรทำเฉพาะในสภาพแวดล้อม Development/Testing เท่านั้น ขั้นตอนการเปิด Root Access จากทุก Host 1. เลือก Database mysql USE mysql; 2. อัปเดต Host ของ User root UPDATE user SET host = % WHERE host = localhos

  15. Error 1046: No Database Selected - สาเหตุและวิธีแก้ไข

    Error 1046 (3D000): No database selected เกิดขึ้นเมื่อพยายามรันคำสั่ง DDL/DML (CREATE, INSERT, UPDATE, SELECT) โดยไม่ได้เลือก Database ก่อน สาเหตุที่พบบ่อย เพิ่งเชื่อมต่อ MySQL ใหม่ ยังไม่ได้รัน USE database_name Connection String ไม่ได้ระบุ Database Database ถูกลบหรือชื่อผิด ตัวอย่าง Error INS

  16. วิธีตรวจสอบว่าคอลัมน์มีอยู่ในตาราง MySQL หรือไม่

    มีหลายวิธีในการตรวจสอบว่าคอลัมน์มีอยู่ในตารางหรือไม่ วิธีที่แนะนำคือใช้ SHOW COLUMNS หรือ查询 INFORMATION_SCHEMA วิธีที่ 1: ใช้ SHOW COLUMNS (แนะนำ) SHOW COLUMNS FROM `table_name` LIKE column_name; ตัวอย่าง SHOW COLUMNS FROM `ColumnExistDemo` LIKE UniqueName; +------------+--------------+------+----

  17. ใช้ตัวเลขเป็นชื่อคอลัมน์ใน MySQL ได้หรือไม่

    ได้** สามารถใช้ตัวเลขเป็นชื่อคอลัมน์ใน MySQL ได้ แต่ต้องใช้ Backtick (`) ครอบชื่อคอลัมน์เสมอ ตัวอย่างการสร้างตาราง CREATE TABLE NumberColumnDemo ( `123` VARCHAR(100) ); การ Insert และ Select ข้อมูล INSERT INTO NumberColumnDemo VALUES (45678); SELECT * FROM NumberColumnDemo; +-------+ | 123

  18. ข้อจำกัดของ mysql_real_escape_string ใน MySQL

    mysql_real_escape_string() เป็นฟังก์ชันเก่า (Deprecated ใน PHP 5.5, ลบใน PHP 7.0) มีข้อจำกัดและความเสี่ยงด้านความปลอดภัยหลายประการ ข้อจำกัดหลัก 1. ไม่ปลอดภัยกับ Prepared Statements เมื่อใช้กับ Prepared Statements จะทำให้เกิด Double Escaping หรือข้ามการป้องกัน Injection ได้ 2. ไม่รองรับ Type Safet

  19. DATETIME หรือ TIMESTAMP ใน MySQL: ควรเลือกอันไหน

    ทั้ง DATETIME และ TIMESTAMP ใช้เก็บวันที่และเวลา แต่มีความแตกต่างสำคัญที่ส่งผลต่อการเลือกใช้ ตารางเปรียบเทียบ คุณสมบัติDATETIMETIMESTAMP ช่วงค่า (Range)1000-01-01 ถึง 9999-12-311970-01-01 ถึง 2038-01-19 (Year 2038 problem) พื้นที่จัดเก็บ8 ไบต์4 ไบต์ Timezoneไม่เก็บ Timezone (เก็บค่าที่ป้อนเข้าไป)

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