[Part 1] Database: Database & Table

[Part 1] Database: Database & Table

Photo by Uriel SC / Unsplash

Basic operation of relational database

หลักๆ แล้วเราจะใช้คำสั่งในภาษา SQL ในการจัดการฐานข้อมูล แต่ในปัจจุบันมีโปรแกรม Client ในการช่วย query ทำให้ผู้ใช้งานไม่ต้องเขียนคำสั่งทั้งหมดเอง แต่ในบทความนี้ทางผู้เขียนจะแนะนำเป็น raw command เพื่อให้ทางผู้อ่านนำคำสั่งไปต่อยอด และเข้าใจการทำงานเบื้องหลังของ SQL Client ได้ง่ายขึ้น

Database

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

Table

Table (ตาราง) คือ โครงสร้างภายในฐานข้อมูลที่ใช้สำหรับเก็บข้อมูลจริงๆ โดยแต่ละตารางประกอบด้วยแถว (Row) และคอลัมน์ (Column) ซึ่งแต่ละคอลัมน์จะเก็บข้อมูลประเภทหนึ่ง เช่น ชื่อ, อีเมล, หรืออายุ


Comment

พื้นฐานของการเขียน SQL คือการ comment code นั่นเอง ทาง SQL จะใช้เครื่องหมาย - ในการ comment ตัวอย่างเช่น

-- sql create table
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

การสร้าง Database

เมื่อต้องการสร้างฐานข้อมูลใหม่ ใช้คำสั่ง CREATE DATABASE ดังนี้

CREATE DATABASE my_database;

หากต้องการกำหนด Character Set และ Collation (เช่น UTF-8) ทำได้โดยเพิ่มคำสั่งดังนี้

CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

การดู Database

หากต้องการดูรายการฐานข้อมูลที่มีอยู่ในระบบ ใช้คำสั่ง

SHOW DATABASES;

การเลือกใช้งาน Database

หากต้องการเลือกฐานข้อมูลเพื่อทำงาน ใช้คำสั่ง:

USE my_database;

การลบ Database

เมื่อต้องการลบฐานข้อมูล (ข้อมูลทั้งหมดในฐานข้อมูลจะหายไป) ใช้คำสั่ง:

DROP DATABASE my_database;

Table

Data type

ก่อนใช้งาน Table เก็บข้อมูล เราจำเป็นต้องทราบเกี่ยวกับชนิดของข้อมูลก่อน เนื่องจาก Database Relational นั้น ต้องกำหนด Type ของข้อมูลก่อนที่จะนำข้อมูลเข้าตารางทุกครั้ง ตัวอย่าง type ที่ใช้บ่อย

  • INT - เก็บค่าตัวเลขจำนวนเต็ม
  • FLOAT(p) - เก็บค่าตัวเลขทศนิยม
  • DOUBLE(m, d) - เก็บค่าตัวเลขทศนิยมที่มีความแม่นยำสูง
  • VARCHAR(n) - เก็บข้อความที่มีความยาวไม่เกิน n ตัวอักษร
  • TEXT - เก็บข้อความขนาดใหญ่
  • DATE - เก็บค่าวันที่
  • DATETIME - เก็บค่าวันที่และเวลา
  • TIMESTAMP - เก็บวันที่และเวลาปัจจุบัน
  • ENUM(a, b, c) - เก็บได้เฉพาะค่าที่กำหนด

นอกจากนั้น ยังมี type ที่ใช้ได้เฉพาะบาง database เท่านั้น อันนี้เราก็ต้องศึกษาวิธีการใช้งานจาก document ของ db นั้นอีกที เช่น

  • JSON - ใช้เก็บข้อมูลประเภท JSON โดยเฉพาะ (ใช้ได้เฉพาะ MySQL 8.0+, PostgreSQL)
  • ARRAY - ใช้เก็บ list ข้อมูลโดยเฉพาะ (เฉพาะ PostgreSQL)

Reference type ทั้งหมด

W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

Constraint

เป็นข้อกำหนดที่ใช้บังคับให้ข้อมูลในตารางมีความถูกต้องและสอดคล้องกับกฎที่กำหนดไว้ เช่น:

  • PRIMARY KEY - กำหนดให้คอลัมน์เป็นคีย์หลัก ไม่สามารถมีค่าซ้ำหรือเป็นค่าว่างได้
  • FOREIGN KEY - กำหนดความสัมพันธ์ระหว่างสองตาราง (อธิบายเพิ่มเติมใน part relation)
  • NOT NULL - บังคับให้คอลัมน์ต้องมีค่าเสมอ
  • UNIQUE - กำหนดให้ค่าของคอลัมน์ต้องไม่ซ้ำกัน
  • DEFAULT - กำหนดค่าพื้นฐานหากไม่มีการป้อนค่า
  • AUTO INCREMENT - กำหนดให้ running number + 1 ไปเรื่อยๆ ทุกครั้งที่เพิ่มข้อมูลใหม่
  • CHECK - กำหนดเงื่อนไขเพื่อควบคุมค่าที่สามารถป้อนในคอลัมน์ เช่น CHECK(age >= 18)

การสร้าง Table

Syntax

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ....
);

หลังจากเลือกฐานข้อมูลแล้ว สามารถสร้างตารางโดยใช้คำสั่ง CREATE TABLE ตัวอย่างการสร้างตาราง users:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

การดู Table ทั้งหมดใน Database

เมื่อต้องการดูตารางที่มีอยู่ในฐานข้อมูลปัจจุบัน ใช้คำสั่ง:

SHOW TABLES;

การแก้ไขตาราง (Alter Table)

  1. เพิ่มคอลัมน์
ALTER TABLE users ADD COLUMN phone VARCHAR(15);
  1. เปลี่ยนประเภทของคอลัมน์
ALTER TABLE users MODIFY COLUMN age SMALLINT;
  1. เปลี่ยนชื่อคอลัมน์
ALTER TABLE users CHANGE COLUMN phone mobile VARCHAR(20);
  1. ลบคอลัมน์
ALTER TABLE users DROP COLUMN mobile;
  1. เปลี่ยนชื่อตาราง
ALTER TABLE users RENAME TO customers;

การลบ Table

หากต้องการลบตารางทั้งหมดในฐานข้อมูล ใช้คำสั่ง:

DROP TABLE users;

Reserve words

คือคำสงวนที่ไม่สามารถใช้ได้ ส่วนใหญ่จะเป็นคำท่ีตรงกับคำสั่งพื้นฐาน หรือ ฟังก์ชันช่วยของทาง SQL ที่ใช้ ควรตรวจสอบก่อนใช้งานทุกครั้ง

  • SELECT - ใช้สำหรับดึงข้อมูลจากตาราง
  • INSERT - ใช้สำหรับเพิ่มข้อมูลลงในตาราง
  • UPDATE - ใช้สำหรับแก้ไขข้อมูล
  • DELETE - ใช้สำหรับลบข้อมูล
  • WHERE - ใช้กำหนดเงื่อนไข
  • ORDER BY - ใช้สำหรับเรียงลำดับข้อมูล
  • GROUP BY - ใช้สำหรับจัดกลุ่มข้อมูล
  • JOIN - ใช้สำหรับรวมข้อมูลจากหลายตาราง
  • CREATE - ใช้สำหรับสร้างฐานข้อมูลหรือโครงสร้างข้อมูล
  • DROP - ใช้สำหรับลบฐานข้อมูลหรือโครงสร้างข้อมูล

ทั้งหมด: https://dev.mysql.com/doc/refman/8.4/en/keywords.html


Exercise

  1. สร้าง database ชื่อ my_company เก็บข้อมูลรองรับ utf8, unicode รองรับภาษาไทย
  2. สร้างตารางเก็บข้อมูลสินค้าโดยมีประเภทข้อมูลดังนี้
    1. id: เก็บรหัสสินค้า เป็น running number
    2. title: ชื่อสินค้า เก็บตัวอักษร ไม่เกิน 50 ตัว
    3. description: รายละเอียดสินค้า ใส่ได้ไม่จำกัดตัวอักษร
    4. price: ราคาสินค้า เก็บข้อมูลทศนิยม 2 ตำแหน่ง
    5. created_at: เก็บข้อมูลเวลาที่สร้างสินค้า โดย default ข้อมูลเป็น current_timestamp

Reference

W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
MySQL :: MySQL 8.4 Reference Manual :: 11.3 Keywords and Reserved Words