ฐานข้อมูล MySQL (1) คำสั่งพื้นฐาน

Computer Database 05 พฤศจิกายน พ.ศ. 2565 956
Home / Articles / 26

ในบทความนี้เป็นการแนะนำให้รู้จักกับฐานข้อมูล MySQL ซึ่งเป็นฐานข้อมูลที่ใช้กับ ข้อมูลที่มีโครงสร้าง (Structured Data) หมายถึง ข้อมูลที่สามารถนำมาทำให้อยู่ในรูปแบบตารางได้ ตัวอย่างตารางที่ชื่อว่า peoples

id first_name last_name age
1 Sunny Jirakit 20
2 John Smith 35
3 Tony Romann 40

ในส่วนของ id, first_name, last_name และ age เรียกว่า Columns (คอลัมน์) หรือ Fields และข้อมูลแนวนอนเรียกว่า Row (แถว) หรือ Record

ฐานข้อมูล MySQL ก็มีลักษณะเช่นเดียวกับตารางข้างต้น แถมยังสามารถกำหนด คุณลักษณะ (attribute) ให้กับตารางได้ เช่น ให้คอลัมน์หนึ่งเก็บจำนวนนับเมื่อมีแถวใหม่เพิ่มเข้ามาได้ เช่น 1, 2, 3, .. คุณลักษณะนี้เรียกว่า AUTO_INCREMENT คุณลักษณะอื่นๆ เช่น NOT NULL ที่ไม่อนุญาติให้เพิ่มข้อมูล หากเป็นค่าว่าง และ UNIQUE ที่ไม่อนุญาติให้เพิ่มแถวหากซ้ำกับ columns ในแถวอื่นๆที่มีอยู่ก่อน

นอกจากนี้ยังมี คุณลักษณะ PRIMARY KEY ที่สำคัญต่อการเชื่อมโยงระหว่างตาราง นอกจาก PRIMARY KEY จะการันตีว่าจะไม่มีการซ้ำกันแล้ว ยังสามารถใช้อ้างอิงไปหาข้อมูลในแถวได้ เช่น หากผมตั้งค่าคอลัมน์ id ให้มีคุณลักษณะเป็น PRIMARY KEY เมื่อผมต้องการเรียกข้อมูลจากแถวก็สามารถเรียกใช้จาก id ของแถว ตัวอย่างคำสั่ง SELECT * FROM peoples WHERE id = 2;

id first_name last_name age
2 John Smith 35

ในคำสั่งตัวอย่าง * หมายถึง คอลัมน์ทั้งหมด

ผลลัพท์ก็จะได้แถวของ John Smith มาทั้งแถว และคำสั่ง SELECT ยังสามารถ เลือกแบบเจาะจงได้เช่น

SELECT first_name, last_name FROM peoples WHERE id = 2;

ก็จะได้ข้อมูลเพียง

first_name last_name
John Smith

เพื่อลดปริมาณข้อมูลที่ดึงจากฐานข้อมูล เพื่อให้ดึงข้อมูลออกมาได้เร็วยิ่งขึ้น

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

ในการเพิ่มข้อมูลลงในตารางจะใช้คำสั่ง Insert ตัวอย่างเช่น ผมต้องการเพิ่มอีกหนึ่งแถวเข้าไปใช้คำสั่งดังนี้

INSERT INTO peoples VALUES (4,"James","Smith",40);

หรือต้องการเพิ่มไปที่คอลัมน์เฉพาะที่กำหนด

INSERT INTO peoples(id, first_name, last_name, age) VALUES (4,"James","Smith",40);

การเพิ่มมากกว่าหนึ่งแถวจะมีโครงสร้างดังนี้

INSERT INTO peoples VALUES (4,"James","Smith",40), (5,"Joe","Smith",37);

ผลลัพท์ก็จะได้ดังนี้

id first_name last_name age
1 Sunny Jirakit 20
2 John Smith 35
3 Tony Romann 40
4 James Smith 40
5 Joe Smith 37

การอัพเดทข้อมูลในตาราง

ในการอัพเดทข้อมูลในแถวเราจะอ้างอิงจาก Primary Key อย่าง id ที่มีคุณสมบัติไม่ซ้ำกัน สามารถอ้างอิงไปหาข้อมูลในแถวได้ ตัวอย่างเช่น ผมต้องการ อัพเดทแถวของ James Smith แทนที่จะอ้างอิงจากชื่อ นามสกุล จะใช้ id อ้างอิงแทน

UPDATE peoples SET first_name = "John", last_name = "Smith" WHERE id = 4;

แถวที่มี id เท่ากับ 5 ก็จะถูกอัพเดท first_name เป็น John และ last_name เป็น Smith

การลบข้อมูลในตาราง

ในการลบ จำเป็นต้องอ้างอิงไป หา Primary Key หรือเงื่อนไขอื่นๆ ได้ เช่น ต้องการจะลบคนที่มี last_name เป็น Smith ก็จะใช้คำสั่ง

DELETE FROM peoples WHERE last_name = "Smith";

หรือจะอ้างอิงโดยใช้ id ก็ได้เช่นกัน

DELETE FROM peoples WHERE id = 4;

เมื่อทราบโครงสร้างเบื้องต้นของฐานข้อมูลแบบตารางแล้ว ผมจะพาไปสร้างตารางที่มีคุณลักษณะต่างๆ

การสร้างตาราง และกำหนดคุณลักษณะ

โจทย์ คือ ต้องการสร้างตารางสำหรับเก็บข้อมูลคำสั่งซื้อ โดยจะมีชื่อตารางว่า orders โดยจะมี หมายเลขคำสั่งซื้อ, ชื่อผู้ชื่อ, ของที่ซื้อ และจำนวนของที่ซื้อ ในการออกแบบเราก็จะต้องให้ หมายเลขคำสั่งซื้อ เป็น primary key เนื่องจาก หมายเลขคำสั่งซื้อจะไม่ซ้ำกัน และสามารถอ้างอิงไปหาแถวได้ ส่วนคอลัมน์อื่นๆ เช่น ชื่อผู้ชื่อ ของที่ซื้อ จำนวน สามารถซ้ำกันได้

ต่อไปเราต้องกำหนดลักษณะของชนิดข้อมูล โดยชนิดของข้อมูลจะมีหลายแบบ เช่น

โครงสร้างข้อมูลสำหรับเก็บตัวเลขจะมีหลายรูปแบบให้เลือก เช่น

SMALLINT เก็บค่าได้ถึงเลข 32767 (2 bytes)

MEDIUMINT เก็บค่าได้ถึงเลข 8388607 (3 bytes)

INT เก็บค่าได้ถึง 2147483647 (4 bytes)

BIGINT เก็บค่าได้ถึงเลข 263-1 (8 bytes)

โครงสร้างข้อมูลสำหรับตัวอักษรมีรูปแบบดังนี้

CHAR เก็บค่าได้ตั้งแต่ 0 ถึง 255 bytes

VARCHAR เก็บค่าเพิ่มขึ้นได้เรื่อยๆ

เบื้องต้นจะใช้เพียงเท่านี้สำหรับโจทย์ ดังนั้นผมจะกำหนดโครงสร้างสำหรับโจทย์ดังนี้

order_id หมายถึง หมายเลขคำสั่งซื้อ มีชนิดข้อมูลและความยาวเป็น INT(6) ซึ่งตัวเลขหกหมายถึงตัวเลขหกหลัก และมีคุณสมบบัติเป็น Primary Key

buyer_name หมายถึง ชื่อผู้ซื้อ มีชนิดข้อมูลเป็น VARCHAR(30)

order_detail หมายถึง ของที่ซื้อ มีชนิดข้อมูลเป็น VARCHAR(30)

amount หมายถึง จำนวนของที่ซื้อ มีชนิดข้อมูลเป็น INT(3) หมายถึงมีค่าได้ตั้งแต่ 0-999

เมื่อออกแบบแล้ว จะนำไปเขียนใหม่เป็นคำสั่ง MySQL ได้ดังนี้

CREATE TABLE orders(order_id INT(6) NOT NULL, buyer_name VARCHAR(30) NOT NULL, order_detail VARCHAR(30) NOT NULL, amount INT(3) NOT NULL, primary key(order_id));

การใช้ ALTER ในการปรับเปลี่ยนโครงสร้าง

หากต้องการเปลี่ยนโครงสร้างหรือชนิดของข้อมูล โดยจะเปลี่ยน buyer_name ให้มีขนาดลดลงเป็น varchar(20) จะใช้คำสั่ง ALTER

ALTER TABLE orders MODIFY buyer_name VARCHAR(20);

การเพิ่มคอลัมน์ใหม่ให้กับตาราง เช่น phone ชนิด INT(10) จะใช้คำสั่ง

ALTER TABLE orders ADD phone INT(10);

หรือการลบคอลัมน์ phone ออก โดยใช้คำสั่ง

ALTER TABLE orders DROP phone;

ซึ่งเราจะสามารถใช้คำสั่ง show create table orders; เพื่อตรวจสอบชนิดคอลัมน์ต่างๆ ในตารางได้

Profile Picture.
  • Name (Pen name): Sunny Jirakit (Sunny420x)
  • Study: Bachelor Degree of Computer Science from Chiang Mai Rajabhat University
  • Personality: Architect (INTJ-T)
  • Experience: JavaScript,  Angular.js, React.js, Next.js  Express.js, Unity C#, Socket.io