Download
- ดาวน์โหลดโปรแกรม SQLite สำหรับนักเรียนที่ใช้ Windows
- วิธีการติดตั้งอยู่ในวีดีโอ ITF11 ให้นักเรียนดาวน์โหลดไฟล์ precompiled binaries for Windows แตกซิป และวางไฟล์ C:\sqlite
- เสร็จแล้วเพิ่ม sqlite ที่ PATH variable ของ Windows
- นักเรียนที่ใช้ Linux/ Mac OS สามารถพิมพ์
sqlite3
ใน terminal เพื่อเริ่มใช้งานได้เลย (ติดตั้งมาเรียบร้อยแล้ว)
[su_spoiler title=”วิธีแก้ปัญหาสำหรับนักเรียนที่เรียก sqlite3 ไม่ได้จาก CMD”]
วิธีแก้ ให้แอด sqlite3 ไปที่ PATH ของ System Variable ตามรูปด้านล่าง ปิดและเปิด command prompt ใหม่ด้วยสิทธิ์แอดมิน (คลิกขวา เลือก Run as Administrator)

[/su_spoiler]
Key Concept
- SQL ย่อมาจาก Structured Query Language พัฒนาโดย IBM ในปี 1970s เป็นภาษาทางการที่เราใช้ทำงานกับ (relational) databases
- SQL มีให้เราเลือกใช้หลายเวอร์ชัน สำหรับคอร์สนี้เราเลือกสอน SQLite command line เพราะว่าติดตั้งง่าย และมีฟีเจอร์พื้นฐานครบ
- sqlite commands จะขึ้นต้นด้วยตัว . เช่น .help .tables .mode
- เราสร้างไฟล์ฐานข้อมูลใหม่ได้ง่ายๆแค่พิมพ์
sqlite3 new_database.db
ใน command prompt - เราใช้
create table
และinsert into
เพื่อสร้างตารางในฐานข้อมูล - SQL statements ต้องปิดท้ายด้วย semilocon
;
เสมอ
Review
รีวิวบทเรียน และ commands ที่เราใช้ใน module นี้ด้านล่าง
Enter SQLite in Command Prompt
หลังจากติดตั้งโปรแกรม SQLite เสร็จแล้ว (add sqlite3 ไปที่ PATH variable ของ Windows) เราจะสามารถเรียกใช้งาน sqlite3 ได้ใน command prompt แค่พิมพ์ sqlite3
sqlite3
วิธีการสร้าง database ใหม่ที่ง่ายที่สุดคือพิมพ์ sqlite3
ตามด้วยชื่อ database (ไฟล์นามสกุล .db) ตัวอย่างด้านล่างเราสร้าง school.db ขึ้นมา ไฟล์นี้จะถูกเซฟอยู่ที่ working directory
sqlite3 school.db
Note – database หรือฐานข้อมูลประกอบด้วยหลายๆตาราง (tables) หลังจากเรามีไฟล์ .db แล้ว ขั้นตอนต่อไปคือสร้าง table ไว้เก็บข้อมูลที่เราต้องการ เช่น student, address, course เป็นต้น
Basic SQLite Commands
เมื่อเข้าสู่โหมด sqlite3 แล้ว ลองพิมพ์ .help
เพื่อเรียกดูรายชื่อ commands ทั้งหมดของ sqlite3 สังเกตว่าชื่อคอมมานด์จะขึ้นต้นด้วยตัว .
พิมพ์ .help ตามด้วยชื่อ command ที่เราต้องการ
.help
.help [command name]
.help shell
ถ้าต้องการเรียกใช้งาน command line ที่เราเรียนมาใน module 1-2 ให้พิมพ์ .shell
ตามด้วยชื่อ command เช่น cls เพื่อเคลียร์หน้าจอ หรือ dir /B เพื่อดูรายชื่อไฟล์และโฟลเดอร์ bare format ใน working directory
.shell cls
.shell dir /B
.shell cd
โดย default ตัว sqlite3 จะทำงานได้ทีละหนึ่ง database เท่านั้น พิมพ์ .databases
เพื่อดูชื่อ .db ที่เรากำลังใช้งานอยู่ และพิมพ์ .tables
เพื่อดูชื่อ tables ทั้งหมดในฐานข้อมูล
.databases
.tables
ถ้าต้องการออกจากโหมด sqlite3 ให้พิมพ์ .quit
.quit
[su_spoiler title=”วิธีแก้ไขเวลาพิมพ์ชื่อคอมมานด์ผิด”]
ถ้าเราเขียนชื่อคอมมานด์ผิด (เช่น hello
ในตัวอย่างด้านล่าง) เวลาเรากด enter ใน command prompt จะขึ้นเครื่องหมาย ...>
ไปเรื่อยๆจนกว่าเราจะพิมพ์ semicolon ;
และกด enter เท่านั้น
[/su_spoiler]
Create Table
วิธีการสร้าง table ใหม่ให้เราพิมพ์ CREATE TABLE
ตามด้วยชื่อ table ใหม่ที่เราต้องการ ภายในวงเล็บจะเป็นชื่อคอลัมน์ของตาราง เมื่อเขียน statement เสร็จแล้ว ให้ปิดท้ายด้วยตัว semicolon ; เสมอ
CREATE TABLE table_name (col1, col2, col3, col4);
เราสามารถกำหนดประเภทข้อมูลของแต่ละคอลัมน์ได้ด้วย syntax ด้านล่าง ใน SQLite จะมีประเภทข้อมูลหลักๆอยู่สามแบบคือ integer
ตัวเลขจำนวนเต็ม real
ตัวเลขที่มีทศนิยม และ text
คือ string/ characters
CREATE TABLE student (
id INTEGER,
name TEXT,
major TEXT,
gpa REAL
);
เสร็จแล้วใช้ INSERT INTO
เพื่อใส่ข้อมูลในตาราง ข้อมูลแต่ละแถวจะอยู่ในวงเล็บตามตัวอย่างด้านล่าง เมื่อเขียน statement เสร็จแล้วให้ปิดท้ายด้วยตัว semicolon ;
INSERT INTO table_name VALUES (val1, val2, val3, val4);
ถ้าต้องการใส่ข้อมูลหลายๆแถว (หรือ records) พร้อมกันทีเดียว ให้เราใช้ , เพื่อ split record ถ้าคอลัมน์นั้นเป็น text เราต้องใส่เครื่องหมาย double quote ด้วย
INSERT INTO student VALUES
(1, "David" , "Economics" , 3.52),
(2, "Annie" , "Engineer" , 2.87),
(3, "John" , "Business" , 3.86),
(4, "Joanna", "Data Science", 3.25);
Note – เราไม่สามารถใช้ create table
เพื่อสร้างตารางที่ชื่อซ้ำกับ existing tables ได้ สมมติว่าเรามี student table อยู่แล้ว ต้องใช้ drop table
เพื่อลบตาราง student เก่าก่อน แล้วค่อยสร้างใหม่
Drop Table
วิธีการลบตารางที่เราไม่ใช้แล้ว พิมพ์ DROP TABLE
ตามด้วยชื่อตารางนั้น ปิดท้ายด้วย ; ก่อนจะลบตารางต้องดูชื่อให้ดีก่อน เพราะว่า sqlite ไม่มีปุ่ม undo
DROP TABLE table_name;
Preview Data
หลังจากที่เราใส่ข้อมูลในตารางแล้ว มาลองพรีวิวข้อมูลด้วย SELECT
statement เราตั้งค่า .mode
column และ .headers
on สำหรับการแสดงผลข้อมูลและมีชื่อคอลัมน์ใน output
เครื่องหมาย * ใน select แปลว่า จงดึงทุกคอลัมน์ของตาราง student มาแสดงผลใน console
.mode column
.headers on
SELECT * FROM student;
Read SQL Script
เราสามารถใช้ .read เพื่ออ่านไฟล์ .sql ของเรา สำหรับสร้างตารางข้อมูลได้เลย
- เขียน
CREATE TABLE
และINSERT INTO
เซฟไฟล์ด้วยนามสกุล .sql ใน working directory ของเรา - เข้าสู่โหมด sqlite และใช้
.read
เพื่ออ่านไฟล์ script ที่เราเตรียมไว้ - ใช้
.tables
เพื่อเรียกดูชื่อตารางทั้งหมดที่เราสร้างด้วย script - ลองเขียน
select
เพื่อพรีวิวข้อมูลในตาราง
.read file.sql
.tables
SELECT * FROM table;
ตัวอย่างไฟล์ .sql สำหรับสร้างตาราง ใส่ข้อมูล และดึงข้อมูล เช่น
-- create table professor
CREATE TABLE professor (
id INTEGER,
firstname TEXT,
lastname TEXT,
age INTEGER
);
-- insert data into professor
INSERT INTO professor VALUES
(1, "John", "Mayer", 34),
(2, "Dave", "Omelo", 42),
(3, "Annie", "Smile", 29);
-- select all columns from professor
SELECT * FROM professor;
Comment
เราใช้เครื่องหมาย --
เพื่อใส่ comment ใน SQL script ของเรา
-- this is a comment
-- select all columns from student table
SELECT * FROM student;
Case Not Sensitive
เราสามารถเขียน SQL statement เป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ก็ได้ โค้ดสองบรรทัดด้านล่างได้ผลลัพธ์เหมือนกัน
.mode column
.headers on
-- select all columns from student
SELECT * FROM student;
select * from student;
ข้อยกเว้นอย่างเดียวคือเวลาเราฟิลเตอร์ชื่อนักเรียน (คอลัมน์ที่เป็น text) ต้องเขียนให้ถูกต้องตาม values ที่อยู่ในคอลัมน์นั้นๆ เช่น ถ้าชื่อ David อยู่ในคอลัมน์ name เวลาดึงข้อมูลเราต้องเขียน where name = “David” เท่านั้น
-- this will return David record
SELECT * FROM student WHERE name = "David";
-- return empty result
SELECT * FROM student WHERE name = "david";
เราใช้ where
ในการฟิลเตอร์ rows/ records ที่ตรงกับเงื่อนไขที่เราต้องการ ในตัวอย่างด้านบน statement บรรทัดสองที่เขียน “david” จะไม่มี output อะไร return ออกมาเลย
Import CSV File
CSV ย่อมาจาก comma-separated values เป็น text file ที่เรานิยมใช้ในการรับส่งข้อมูลสำหรับทำ data analysis ข้อมูลในแต่ละคอลัมน์โดย default จะถูกคั่นด้วยเครื่องหมาย comma
วิธีการ import file csv เข้าสู่ SQLite database ให้เราเซฟไฟล์ .csv ไว้ที่ working directory แล้วเข้าสู่โหมด sqlite3 ใน command prompt และใช้ .import
command เพื่อ import ไฟล์ csv สร้างเป็น table
- พิมพ์ .mode csv
- พิมพ์ .import [file.csv] [table name]
sqlite3 school.db
.mode csv
.import course.csv course
หลังจาก import file เสร็จแล้ว ลองเขียน select * from course limit 5;
เพื่อพรีวิวข้อมูลใน table course บทต่อไปเราจะอธิบายวิธีการเขียน basic queries เช่น การใช้ SELECT
WHERE
และ JOIN
Code Used in Lesson ITF15
ด้านล่างคือ SQL script ที่เราเขียนในวีดีโอ ITF15
- drop table address ก่อน
- เสร็จแล้วสร้าง table address อีกครั้งหนึ่ง
- ใส่ข้อมูล 5 records เข้าไปที่ table address
-- drop table
DROP TABLE address;
-- create table address
CREATE TABLE address (id, city, country);
-- insert data into address table
INSERT INTO address VALUES
(1, "Bangkok", "Thailand"),
(2, "Tokyo", "Japan"),
(3, "Washington", "United States"),
(4, "London", "United Kingdom"),
(5, "Paris", "France");
References
- แหล่งอ้างอิง SQL tutorial โดย w3schools
- เราสามารถกำหนด special features ของแต่ละคอลัมน์ใน
create table
statement ได้ด้วย เช่น primiary key, unique ลองดูตัวอย่างได้ที่นี่ (advanced) - อ่านเพิ่มเติมเรื่อง
where
clause ได้ที่นี่
Formative Quiz
🏆 รีวิวความรู้ที่ได้เรียนใน module นี้ คลิกเพื่อเริ่มทำแบบทดสอบ 20 ข้อ นักเรียนสามารถทำแบบทดสอบซ้ำกี่รอบก็ได้ จนกว่าจะได้คะแนนเต็ม
เสร็จแล้วแอดรบกวนช่วยตอบแบบสอบถามความพอใจ module นี้ด้วยนะครับ -/\- ขอบคุณทุกคนมากๆครับ แล้วพบกันในบทต่อไปนะ
Keep Learning
Module ถัดไป เราจะเรียนการเขียน SQL Queries เพื่อดึงและวิเคราะห์ข้อมูลจาก database เช่น select, where, join, union และ aggregate functions เมื่อพร้อมแล้ว คลิกเมนูเพื่อเริ่มเรียนบทต่อไป