Skip to main content

Database Fundamentals

SQL

Structured Query Language (SQL) คือคำสั่งบริหารจัดการฐานข้อมูล (Database) โดยเฉพาะ Relational Database เช่น Oracle, MySQL, PostgreSQL, BigQuery เป็นต้น

โดย SQL commands สามารถแบ่งได้เป็น 4 ประเภท คือ

ปล. บางที่เพิ่ม TCL – Transaction Control Language เป็นประเภทที่ 5

"fig1"

DDL (Data Definition Language)

เป็นกลุ่มคำสั่งที่เอาไว้กำหนด database structure เช่น การสร้าง ลบ database schema

  • CREATE: ทำการสร้าง database หรือ objects เช่น table, index, function, view, store procedure, trigger
CREATE DATABASE database_name;
CREATE TABLE table_name
(
column1 data_type(size),
column2 data_type(size),
column3 data_type(size),
....
);
  • DROP: ใช้ทิ้ง database หรือ objects ใน database
DROP DATABASE database_name;
DROP TABLE table_name;
  • ALTER: ใช้ในการเปลี่ยนแปลง structure เช่น ทำการเพิ่ม ลด column ใน table
ALTER TABLE table_name
ADD (column_1 data_type(size),
column_2 data_type(size),

column_n data_type(size));
ALTER TABLE table_name
DROP COLUMN column_name;
ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;
  • TRUNCATE: เป็นการลบ records ทุกอันใน table ทำให้เหลือเพียง table เปล่า แต่ยังมี structure เหมือนเดิม
TRUNCATE TABLE table_name;

DQL (Data Query Language)

เป็นกลุ่มคำสั่งสำหรับช่วยในการเรียกค้นข้อมูลที่อยู่ใน Schema objects ต่าง ๆ เช่น ตาราง (Table), วิว (View) เป็นต้น โดยคำสั่งประเภท DQL จะใช้เพื่อเรียกค้นข้อมูลตามความสัมพันธ์ทางโครงสร้าง (Schema Relation) โดยอาศัยการส่งข้อกำหนดของการค้นหาที่เรียกว่า Query

โดยเราจะใช้คำสั่ง SELECT เพื่อเรียกค้นข้อมูล โดยอาจจะอิงกับตารางเดียวหรือหลาย ๆ ตาราง ผลลัพธ์จะถูกเก็บไว้ในลักษณะตารางชั่วคราว ซึ่งมักจะเอาไปแสดงผลหรือส่งไปยังโปรแกรมเพื่อไปใช้งานต่อไป

Syntax

SELECT expression FROM table_name WHERE code_conditions;

ตัวอย่าง

SELECT first_name FROM customer WHERE phone = '0891234567';
  • คำสั่งนี้หมายถึงให้ดึงข้อมูล first_name จากตาราง customer ที่มี phone เท่ากับ 0891234567

DML (Data Manipulation Language)

เป็นกลุ่มคำสั่งที่ใช้ในการเพิ่ม (insert) ลบ (delete) และแก้ไข (update) ข้อมูลในฐานข้อมูล โดยหน้าที่หลักของกลุ่มคำสั่งนี้คือการปรับปรุงข้อมูลนั้นเอง โดยมีคำสั่งดังนี้

  • INSERT INTO: คำสั่งสำหรับเพิ่มข้อมูลลงในฐานข้อมูล
INSERT INTO table_name (column_1, column_2,, column_N)
VALUES (value_1, value_2,, value_N);

หรือ

INSERT INTO table_name
VALUES (value_1, value_2,, value_N);

ตัวอย่าง

INSERT INTO customer (first_name, last_name, phone)
VALUES ('John', 'Farmer', '0891234567');
  • UPDATE: คำสั่งสำหรับเพิ่มข้อมูลลงในฐานข้อมูล

Syntax

UPDATE table_name
SET column_1 = value_1, column_2 = value_2, column_N = value_N [WHERE condition];

ตัวอย่าง

UPDATE customer
SET first_name = 'Tiger' WHERE phone = '0891234567';
  • DELETE: คำสั่งสำหรับลบข้อมูลออกจากฐานข้อมูล มักใช้คู่กับคำสั่ง WHERE เพราะกำหนดเงื่อนไขในการลบ

Syntax

DELETE FROM table_name [WHERE condition];

ตัวอย่าง

DELETE FROM customer WHERE phone = '0891234567';

DCL (Data Control Language)

เป็นกลุ่มคำสั่งที่จะช่วยให้ผู้บริหารฐานข้อมูล (DBA) สามารถควบคุมฐานข้อมูลเพื่อ กำหนดสิทธิการอนุญาต (Grant) หรือ การยกเลิกการเข้าใช้ (Revoke) ฐานข้อมูล ซึ่งเป็นกระบวนการป้องกันความปลอดภัยในฐานข้อมูล

  • GRANT: คำสั่งนี้ให้สิทธิ์ users ในการเข้าถึงฐานข้อมูล
GRANT privileges_names ON object TO user;
  • REVOKE: คำสั่งนี้จะถอนสิทธิ์การเข้าถึงของ users
REVOKE privileges_names ON object FROM user;

โดย privileges_names คือชื่อ privilege ที่เราต้องการ GRANT หรือ REVOKE ส่วน object คือชื่อสิ่งที่เราต้องการจะปรับเปลี่ยนสิทธิ์ของผู้ใช้งานนั้น ๆ เช่น ชื่อตาราง และ user คือ ชื่อผู้ใช้งาน

privileges_names ที่ GRANT หรือ REVOKE ได้

PrivilegeDesciption
SELECTselect statement on tables
INSERTinsert statement on tables
DELETEdelete statement on tables
INDEXcreate an index on an exiting tables
CREATEcreate table statements
ALTERability to perform alter table to change the table definition
DROPdrop table statements
ALLgrant all permission except GRANT OPTION
UPDATEupdate statement on tables
GRANTallow to grant the privilege that

TCL (Transaction Control Language)

เป็นคำสั่งสำหรับช่วยในการจัดการ กลุ่ม(Set) ของคำสั่งประเภท DML หรือที่เราเรียกว่า Transaction โดยเราใช้ TCL ในการควบคุมหรือใส่เงื่อนไขในการขั้นตอนการเปลี่ยนแปลงข้อมูล

  • COMMIT: เป็นคำสั่งในการยืนยันการเปลี่ยนแปลงข้อมูลใน Transactions

Syntax

COMMIT;

ตัวอย่าง

UPDATE customer SET phone = '0811234567' WHERE first_name = 'Tiger';
DELETE FROM customer WHERE phone = '0891234567';
COMMIT;
  • ROLLBACK: เป็นคำสั่งในการยกเลิกการเปลี่ยนแปลงข้อมูลทั้งหมดใน Transactions

Syntax

ROLLBACK;

ตัวอย่าง

UPDATE customer SET phone = '0811234567' WHERE first_name = 'Tiger';
DELETE FROM customer WHERE phone = '0891234567';
ROLLBACK;
  • SAVEPOINT: เป็นคำสั่งในการกำหนดจุดในระหว่าง Transactions สามารถใช้คู่กับคำสั่ง ROLLBACK เพื่อกลับมาในจุดที่ต้องการได้

Syntax

SAVEPOINT Name_of_Savepoint;
-- &
ROLLBACK TO Name_of_Savepoint;

ตัวอย่าง

UPDATE customer SET phone = '0811234567' WHERE first_name = 'Tiger';
SAVEPOINT Update_Customer;

DELETE FROM customer WHERE phone = '0891234567';
ROLLBACK TO Update_Customer;