跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

Database Query: SELECT, INSERT, UPDATE, DELETE

บทความนี้อธิบายถึงวิธีการใช้งาน SQL query พื้นฐาน ได้แก่ SELECT, INSERT, UPDATE และ DELETE เพื่อจัดการข้อมูลในฐานข้อมูล MySQL โดยใช้ MySQLi extension ใน PHP พร้...

Database Query: SELECT, INSERT, UPDATE, DELETE

หลังจากที่บทความก่อนหน้าได้กล่าวถึงวิธีการเชื่อมต่อกับฐานข้อมูล MySQL โดยใช้ MySQLi extension ไปแล้ว ในบทความนี้เราจะมาเรียนรู้วิธีการ query ฐานข้อมูลเพื่อดึงข้อมูล (SELECT), เพิ่มข้อมูล (INSERT), แก้ไขข้อมูล (UPDATE) และลบข้อมูล (DELETE) ซึ่งเป็นพื้นฐานสำคัญในการพัฒนาเว็บแอปพลิเคชันที่ต้องมีการจัดการข้อมูล

การเขียน SQL Query

SQL (Structured Query Language) เป็นภาษามาตรฐานที่ใช้ในการจัดการข้อมูลในระบบฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System - RDBMS) ไม่ว่าจะเป็น MySQL, PostgreSQL, Oracle หรือ SQL Server การทำความเข้าใจ SQL เป็นสิ่งจำเป็นอย่างยิ่งในการทำงานกับฐานข้อมูล

ต่อไปนี้เป็นตัวอย่าง SQL query สำหรับแต่ละ operation:

  • SELECT: ดึงข้อมูลจากตาราง
  • INSERT: เพิ่มข้อมูลใหม่ลงในตาราง
  • UPDATE: แก้ไขข้อมูลที่มีอยู่ในตาราง
  • DELETE: ลบข้อมูลออกจากตาราง

เราจะมาดูรายละเอียดและตัวอย่างของแต่ละ query กัน

SELECT: การดึงข้อมูล

SELECT query ใช้เพื่อดึงข้อมูลจากตารางในฐานข้อมูล รูปแบบพื้นฐานของ SELECT query คือ:

SELECT column1, column2, ... FROM table_name WHERE condition;
  • SELECT column1, column2, ...: ระบุคอลัมน์ที่ต้องการดึง ถ้าต้องการดึงทุกคอลัมน์ สามารถใช้ * ได้
  • FROM table_name: ระบุตารางที่ต้องการดึงข้อมูล
  • WHERE condition: (Optional) ระบุเงื่อนไขในการดึงข้อมูล

ตัวอย่าง: ดึงข้อมูลทั้งหมดจากตาราง users ที่มี id เท่ากับ 1:

SELECT * FROM users WHERE id = 1;

ตัวอย่าง: ดึงเฉพาะคอลัมน์ username และ email จากตาราง users:

SELECT username, email FROM users;

INSERT: การเพิ่มข้อมูล

INSERT query ใช้เพื่อเพิ่มข้อมูลใหม่ลงในตาราง รูปแบบพื้นฐานของ INSERT query คือ:

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
  • INSERT INTO table_name (column1, column2, ...): ระบุตารางและคอลัมน์ที่จะเพิ่มข้อมูล
  • VALUES (value1, value2, ...): ระบุค่าที่จะเพิ่มลงในแต่ละคอลัมน์

ตัวอย่าง: เพิ่มข้อมูลผู้ใช้ใหม่ลงในตาราง users:

INSERT INTO users (username, email, password) VALUES ('john_doe', 'john.doe@example.com', 'password123');

ข้อควรระวัง: ควรระมัดระวังเรื่องชนิดข้อมูล (data type) ให้ตรงกับชนิดข้อมูลของแต่ละคอลัมน์ในตาราง

UPDATE: การแก้ไขข้อมูล

UPDATE query ใช้เพื่อแก้ไขข้อมูลที่มีอยู่ในตาราง รูปแบบพื้นฐานของ UPDATE query คือ:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
  • UPDATE table_name: ระบุตารางที่จะแก้ไขข้อมูล
  • SET column1 = value1, column2 = value2, ...: ระบุคอลัมน์และค่าใหม่ที่จะแก้ไข
  • WHERE condition: ระบุเงื่อนไขในการแก้ไขข้อมูล (สำคัญมาก เพราะถ้าไม่มีเงื่อนไข จะแก้ไขทุกแถวในตาราง)

ตัวอย่าง: แก้ไขอีเมลของผู้ใช้ที่มี id เท่ากับ 1:

UPDATE users SET email = 'john.new@example.com' WHERE id = 1;

ข้อควรระวัง: การลืมใส่ WHERE clause ใน UPDATE query จะทำให้ข้อมูลทุกแถวในตารางถูกแก้ไข ซึ่งอาจก่อให้เกิดความเสียหายร้ายแรงได้

DELETE: การลบข้อมูล

DELETE query ใช้เพื่อลบข้อมูลออกจากตาราง รูปแบบพื้นฐานของ DELETE query คือ:

DELETE FROM table_name WHERE condition;
  • DELETE FROM table_name: ระบุตารางที่จะลบข้อมูล
  • WHERE condition: ระบุเงื่อนไขในการลบข้อมูล (สำคัญมาก เพราะถ้าไม่มีเงื่อนไข จะลบทุกแถวในตาราง)

ตัวอย่าง: ลบผู้ใช้ที่มี id เท่ากับ 1:

DELETE FROM users WHERE id = 1;

ข้อควรระวัง: การลืมใส่ WHERE clause ใน DELETE query จะทำให้ข้อมูลทุกแถวในตารางถูกลบ ซึ่งอาจก่อให้เกิดความเสียหายร้ายแรงได้

การ Execute Query ใน PHP

หลังจากที่เราได้เรียนรู้การเขียน SQL query แล้ว ต่อไปเราจะมาดูวิธีการ execute query เหล่านี้ใน PHP โดยใช้ MySQLi extension

ตัวอย่าง: การ execute SELECT query:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Username: " . $row["username"]. " - Email: " . $row["email"]. "<br>";
  }
} else {
  echo "0 results";
}
$conn->close();
?>

ตัวอย่าง: การ execute INSERT query:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO users (username, email, password) VALUES ('jane_doe', 'jane.doe@example.com', 'password456')";

if ($conn->query($sql) === TRUE) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

ตัวอย่าง: การ execute UPDATE query:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "UPDATE users SET email='jane.updated@example.com' WHERE username='jane_doe'";

if ($conn->query($sql) === TRUE) {
  echo "Record updated successfully";
} else {
  echo "Error updating record: " . $conn->error;
}

$conn->close();
?>

ตัวอย่าง: การ execute DELETE query:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "DELETE FROM users WHERE username='jane_doe'";

if ($conn->query($sql) === TRUE) {
  echo "Record deleted successfully";
} else {
  echo "Error deleting record: " . $conn->error;
}

$conn->close();
?>

การ Fetch Data

หลังจากที่เรา execute SELECT query แล้ว เราจะต้อง fetch ข้อมูลที่ได้จาก query เพื่อนำไปใช้งาน รูปแบบการ fetch data ที่ใช้กันบ่อยๆ คือ fetch_assoc() ซึ่งจะ return ข้อมูลในรูปแบบ associative array

ตัวอย่าง: การ fetch data ด้วย fetch_assoc():

<?php
// ... (connection code) ...

$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo "ID: " . $row["id"] . "<br>";
    echo "Username: " . $row["username"] . "<br>";
    echo "Email: " . $row["email"] . "<br><br>";
  }
} else {
  echo "No results found.";
}

// ... (close connection) ...
?>

นอกจาก fetch_assoc() แล้ว ยังมี method อื่นๆ ในการ fetch data เช่น fetch_row() (return ข้อมูลในรูปแบบ indexed array) และ fetch_object() (return ข้อมูลในรูปแบบ object)

สรุป

ในบทความนี้ เราได้เรียนรู้วิธีการเขียน SQL query สำหรับ SELECT, INSERT, UPDATE และ DELETE รวมถึงวิธีการ execute query เหล่านี้ใน PHP โดยใช้ MySQLi extension และวิธีการ fetch data ที่ได้จาก SELECT query การทำความเข้าใจและใช้งาน query เหล่านี้เป็นพื้นฐานสำคัญในการพัฒนาเว็บแอปพลิเคชันที่ต้องมีการจัดการข้อมูล ในบทความถัดไป เราจะมาเรียนรู้เกี่ยวกับ Prepared Statements ซึ่งเป็นวิธีที่ช่วยป้องกัน SQL Injection ซึ่งเป็นช่องโหว่ด้านความปลอดภัยที่สำคัญ

Office.in.th Custom Service

想基于此结构开发或定制系统?

Office.in.th 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务