MySQL คำสั่งเบื้องต้น

การสร้างฐานข้อมูล (CREATE DATABASE)

  • การใช้ฐานข้อมูล (USE)
  • การสร้างตาราง (CREATE TABLE)
  • การเพิ่มข้อมูล (INSERT INTO)
  • การแสดงข้อมูล (SELECT)
  • การแก้ไขข้อมูล (UPDATE)
  • การลบข้อมูล (DELETE)
  • การลบตารางและฐานข้อมูล (DROP)

1. สร้างฐานข้อมูล

-- สร้างฐานข้อมูลชื่อ my_school
CREATE DATABASE my_school;

-- เลือกใช้ฐานข้อมูลนี้
USE my_school;

2. สร้างตาราง

-- สร้างตาราง student
CREATE TABLE student (
  student_id INT AUTO_INCREMENT PRIMARY KEY,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  age INT,
  grade VARCHAR(10)
);

3. เพิ่มข้อมูลลงในตาราง

-- เพิ่มนักเรียน 3 คน
INSERT INTO student (first_name, last_name, age, grade)
VALUES 
('Pan', 'Somsri', 15, 'Grade 9'),
('Anya', 'Rakdee', 14, 'Grade 8'),
('Mark', 'Chen', 16, 'Grade 10');

4. แสดงข้อมูลจากตาราง

-- แสดงนักเรียนทั้งหมด
SELECT * FROM student;

-- แสดงเฉพาะนักเรียนที่อยู่ Grade 9
SELECT * FROM student WHERE grade = 'Grade 9';

5. แก้ไขข้อมูล

-- เปลี่ยนชื่อของนักเรียนที่มี student_id = 2
UPDATE student
SET first_name = 'Anyarin', age = 15
WHERE student_id = 2;

6. ลบข้อมูล

-- ลบนักเรียนที่มี student_id = 3
DELETE FROM student WHERE student_id = 3;

7. ลบตารางและฐานข้อมูล (ใช้ด้วยความระมัดระวัง)

-- ลบตาราง student
DROP TABLE student;

-- ลบฐานข้อมูล my_school
DROP DATABASE my_school;


ตัวอย่างรวมทั้งหมด (Script รันทีเดียว)

-- เริ่มต้นจากศูนย์
DROP DATABASE IF EXISTS my_school;
CREATE DATABASE my_school;
USE my_school;

CREATE TABLE student (
  student_id INT AUTO_INCREMENT PRIMARY KEY,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  age INT,
  grade VARCHAR(10)
);

INSERT INTO student (first_name, last_name, age, grade)
VALUES 
('Pan', 'Somsri', 15, 'Grade 9'),
('Anya', 'Rakdee', 14, 'Grade 8'),
('Mark', 'Chen', 16, 'Grade 10');

SELECT * FROM student;

UPDATE student SET age = 15 WHERE student_id = 2;

DELETE FROM student WHERE student_id = 3;

SELECT * FROM student;

สำหรับการ JOIN ตาราง สามารถทำด้านล่างนี้เลยครับ


เตรียมฐานข้อมูลตัวอย่าง

-- สร้างตาราง A
CREATE TABLE A (
  key_id INT,
  value_a VARCHAR(50)
);

-- สร้างตาราง B
CREATE TABLE B (
  key_id INT,
  value_b VARCHAR(50)
);

-- เพิ่มข้อมูลในตาราง A
INSERT INTO A VALUES
(1, 'Apple'),
(2, 'Banana'),
(3, 'Cherry'),
(4, 'Date');

-- เพิ่มข้อมูลในตาราง B
INSERT INTO B VALUES
(3, 'Carrot'),
(4, 'Dragonfruit'),
(5, 'Elderberry'),
(6, 'Fig');

JOIN แบบต่าง ๆ

1. INNER JOIN

(แสดงเฉพาะข้อมูลที่ key_id ตรงกันในทั้งสองตาราง)

SELECT *
FROM A
INNER JOIN B ON A.key_id = B.key_id;

แสดงเฉพาะ key_id = 3, 4


2. FULL JOIN

(แสดงข้อมูลทั้งหมดของ A และ B ไม่ว่าจะ match หรือไม่)

❗ MySQL ไม่รองรับ FULL JOIN โดยตรง → ใช้ UNION แทน

SELECT *
FROM A
LEFT JOIN B ON A.key_id = B.key_id
UNION
SELECT *
FROM A
RIGHT JOIN B ON A.key_id = B.key_id;

3. FULL JOIN with NULL filter

(แสดงเฉพาะข้อมูลที่ไม่ match กัน)

SELECT *
FROM A
LEFT JOIN B ON A.key_id = B.key_id
WHERE B.key_id IS NULL
UNION
SELECT *
FROM A
RIGHT JOIN B ON A.key_id = B.key_id
WHERE A.key_id IS NULL;

4. LEFT JOIN

(แสดงข้อมูลจาก A ทั้งหมด แม้ไม่ match กับ B)

SELECT *
FROM A
LEFT JOIN B ON A.key_id = B.key_id;

5. LEFT JOIN ที่ไม่ match เท่านั้น

SELECT *
FROM A
LEFT JOIN B ON A.key_id = B.key_id
WHERE B.key_id IS NULL;

6. RIGHT JOIN

(แสดงข้อมูลจาก B ทั้งหมด แม้ไม่ match กับ A)

SELECT *
FROM A
RIGHT JOIN B ON A.key_id = B.key_id;

7. RIGHT JOIN ที่ไม่ match เท่านั้น

SELECT *
FROM A
RIGHT JOIN B ON A.key_id = B.key_id
WHERE A.key_id IS NULL;

สรุปผลลัพธ์ของแต่ละ JOIN

JOIN Typeแสดงอะไรบ้าง
INNER JOINแสดงเฉพาะ key ที่ตรงกันเท่านั้น
FULL JOINแสดงทุกแถว ทั้ง A และ B
FULL JOIN + WHEREแสดงเฉพาะแถวที่ไม่ match (A หรือ B)
LEFT JOINแสดง A ทั้งหมด + B ถ้ามี
LEFT JOIN + WHEREแสดงเฉพาะ A ที่ไม่ match กับ B
RIGHT JOINแสดง B ทั้งหมด + A ถ้ามี
RIGHT JOIN + WHEREแสดงเฉพาะ B ที่ไม่ match กับ A