วันเสาร์ที่ 26 มกราคม พ.ศ. 2562

SQLite

บทความนี้จะกล่าวถึงการติดตั้งและการใช้งานระบบฐานข้อมูล SQLite 3 ผ่านระบบปฏิบัติการ Ubuntu

ขั้นตอนการติดตั้ง

    เนื่องด้วยผู้เขียนนั้นใช้ระบบปฏิบัติการ Windows 10 เป็นหลักและได้ทำการติดตั้ง Sub-system ไว้แล้ว ซึ่ง Ubuntu Sub-system เป็น Application ที่สามารถติดตั้งได้โดยตรงจาก Microsoft Store
หากสนใจวิธีให้ทำการติดตั้งตามวิธีใน Link (https://docs.microsoft.com/en-us/windows/wsl/install-win10)


  1. ให้ทำการ update apt package โดยใช้คำสั่ง sudo apt-get update
  2. ติดตั้ง SQLite โดยใช้คำสั่ง sudo apt-get install sqlite3
  3. ทำการตรวจสอบว่าติดตั้งได้ถูกต้องโดยใช้คำสั่ง sqlite3 --version

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

เริ่มต้นโดยการสร้างฐานข้อมูลสามารถทำได้โดยเข้าสู่ SQLite ผ่านคำสั่ง
sqlite3 bap.db
โดยชื่อไฟล์ที่ใส่เข้าไปเป็น argument นั่นก็คือชื่อของไฟล์ Database ที่เราต้องการเก็บข้อมูลไว้
หากไม่ได้ใส่ชื่อไว้ การใช้งาน SQLite จะเป็นแบบใช้ memory เท่านั้นไม่ได้เก็บบันทึกข้อมูลไว้

สร้างตาราง


  1. ทำการสร้างตารางของ publisher โดยใช้คำสั่ง

    CREATE TABLE publisher (publisher_id INTEGER PRIMARY KEY AUTOINCREMENT, publisher_name TEXT NOT NULL, location TEXT NOT NULL, publisher_tel TEXT NOT NULL);
  2. ทำการสร้างตารางของ authorโดยใช้คำสั่ง

    CREATE TABLE author (author_id INTEGER PRIMARY KEY AUTOINCREMENT, author_name TEXT NOT NULL, author_address TEXT, author_tel TEXT, author_ssn TEXT UNIQUE, publisher_id INTEGER NOT NULL, FOREIGN KEY(publisher_id) REFERENCES publisher(publisher_id));

    จะเห็นได้ว่าในตารางนี้มีการเพิ่ม FOREIGN KEY เข้าไปเพื่อทำการเชื่อมตาราง Author และ Publisher เข้าด้วยกันโดยใช้ publisher_id เป็น foreign key
  3. ทำการสร้างตารางของ book ใช้คำสั่ง

    CREATE TABLE book (book_id INTEGER PRIMARY KEY AUTOINCREMENT, book_name TEXT NOT NULL, release_date TEXT NOT NULL, copy INTEGER NOT NULL, publisher_id INTEGER, FOREIGN KEY(publisher_id) REFERENCES publisher(publisher_id));

    จะเห็นได้ว่าในตารางนี้มีการเพิ่ม FOREIGN KEY เข้าไปเพื่อทำการเชื่อมตาราง book และ Publisher เข้าด้วยกันโดยใช้ publisher_id เป็น foreign key
  1. ทำการสร้างตารางของ book_author เนื่องจากความสัมพันธ์ของ book และ author เป็นแบบ M:N หรือแบบ Many to Many โดยใช้คำสั่ง

    CREATE TABLE book_author (book_id INTEGER, author_id INTEGER, FOREIGN KEY(book_id) REFERENCES book(book_id),FOREIGN KEY(author_id) REFERENCES author(author_id));

    โดยตารางนี้จะมี key อยู่ 2 อันนั้นก็คือ book_id และ author_id ซึ่งใช้เป็นการเชื่อมกันระหว่างตาราง book และ author

ทดสอบตาราง

ข้อสังเกต หากไม่แน่ใจว่า SQLite ได้ทำการ enable foreign key แล้วหรือไม่ ให้ใช้คำสั่ง
                   PRAGMA foreign_keys;
                 หากค่าที่ส่งกลับมาเป็น 0 แสดงว่า SQLite ยังไม่ได้เปิดใช้งาน Foreign key
                 สามารถเปิดใช้งานได้โดยใช้คำสั่ง
                  PRAGMA foreign_keys = ON;
                หลังจากนั้นให้ทดสอบโดยใช้คำสั่งแรกอีกครั้ง หากได้ค่าที่ส่งกลับเป็น 1 หมายความว่า                          สามารถใช้งาน Foreign Key ได้แล้ว

ทดสอบการเพิ่มข้อมูลสำหรับ publisher

ใช้คำสั่ง
INSERT INTO publisher (publisher_name, publisher_address, publisher_tel) VALUES ("Fah Sai", "Bangkok", "029523875"); 
INSERT INTO publisher (publisher_name, location, publisher_tel) VALUES ("Pearson Education Limited", "United Kingdom", "020 7010 2336"); 
INSERT INTO publisher (publisher_name, location, publisher_tel) VALUES ("Mcgraw-hill International Enterprises", "United States", "212-904-2078");                                                                  

ทดสอบการเพิ่มข้อมูลสำหรับ author

ใช้คำสั่ง
INSERT INTO author (author_name, author_address, publisher_id) VALUES ("William Stallings", "USA", 2); 
INSERT INTO author (author_name, author_address, publisher_id) VALUES ("Robert W. Sebesta", "Colorado", 2); 
INSERT INTO author (author_name, author_address, publisher_id) VALUES ("Barry B. Brey", "USA", 2); 
INSERT INTO author (author_name, author_address, publisher_id) VALUES ("Stephen P. Robbins", "USA", 2); 
INSERT INTO author (author_name, author_address, publisher_id) VALUES ("Michael J Kroes", "USA", 3); 
INSERT INTO author (author_name, author_address, publisher_id) VALUES ("Stephen A. Ross", "USA", 3); 

โดยหากถ้าเราใส่ publisher_id ที่ไม่มีอยู่จริง จะได้รับ Error ดังนี้
 Error: FOREIGN KEY constraint failed
เนื่องจากติดเงื่อนไขของ foreign key นั่นเอง

ทดสอบการเพิ่มข้อมูลสำหรับ book


ใช้คำสั่ง

INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Concepts of Programming Languages", "2013", "10", 2); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Programming the World Wide Web", "2013", "7", 2); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("The Intel Microprocessors : Architecture, Programmi", "2008", "8", 2); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Management", "2015", "13", 2); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Aircraft Basic Science", "2013", "8", 3); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Essentials of Corporate Finance", "2002", "3", 3); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Egypt in Spectacular Cross-Section", "2005", "1", 3); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Fundamentals of Corporate Finance Alternate Edition 9ED (P)", "2010", "9", 3); 
INSERT INTO book (book_name, release_date, copy, publisher_id) VALUES ("Corporate Finance : Corporate Principles", "2007", "1", 3);

ทดสอบการเพิ่มข้อมูลสำหรับ book_author


ใช้คำสั่ง
INSERT INTO book_author (book_id, author_id) VALUES (1, 1) -- Computer Organization and Architecture, William Stallings; 
INSERT INTO book_author (book_id, author_id) VALUES (2,2) -- Concepts of Programming Languages, Robert W. Sebesta; 
INSERT INTO book_author (book_id, author_id) VALUES (3,2) -- Programming the World Wide Web, Robert W. Sebesta; 
INSERT INTO book_author (book_id, author_id) VALUES (4,3) -- The Intel Microprocessors : Architecture, Programmi, Barry B. Brey; 
INSERT INTO book_author (book_id, author_id) VALUES (5,4) -- Management, Stephen P. Robbins; 
INSERT INTO book_author (book_id, author_id) VALUES (6,5) -- Aircraft Basic Science, Michael J Kroes; 
INSERT INTO book_author (book_id, author_id) VALUES (7,6) -- Essentials of Corporate Finance, Stephen A. Ross; 
INSERT INTO book_author (book_id, author_id) VALUES (8,6) -- Egypt in Spectacular Cross-Section, Stephen A. Ross; 
INSERT INTO book_author (book_id, author_id) VALUES (9,6) -- Fundamentals of Corporate Finance Alternate Edition 9ED (P), Stephen A. Ross; 
INSERT INTO book_author (book_id, author_id) VALUES (10,6) -- Corporate Finance : Corporate Principles, Stephen A. Ross;
เช่นเดียวกับกรณีของ author หากใส่ id ที่ไม่มีอยู่จริงก็จะได้รับ Contraint Error

ทดสอบการ Query ข้อมูล

การทดสอบสามารถทำโดยใช้ SQL SELECT Statement

ตัวอย่างการ Query ข้อมูลทั้งหมดของ book

SELECT * FROM book; 

ผลลัพธ์ที่ได้ 

1||Computer Organization and Architecture|2013|9|2
2||Concepts of Programming Languages|2013|10|2
3||Programming the World Wide Web|2013|7|2
4||The Intel Microprocessors : Architecture, Programmi|2008|1|2
5||Management|2015|13|2
6||Aircraft Basic Science|2013|8|3
7||Essentials of Corporate Finance|2002|3|3
8||Egypt in Spectacular Cross-Section|2005|1|3
9||Fundamentals of Corporate Finance Alternate Edition 9ED (P)|2010|9|3
10||Corporate Finance : Corporate Principles|2007|1|3

ตัวอย่างการ Query ข้อมูลทั้งหมดของ author

SELECT * FROM author; 

 ผลลัพธ์ที่ได้ 

1||William Stallings|USA|||2
2||Robert W. Sebesta|Colorado|||2
3||Barry B. Brey|USA|||2
4||Stephen P. Robbins|USA|||2
5||Michael J Kroes|USA|||3
6||Stephen A. Ross|USA|||3

ตัวอย่างการ Query ข้อมูลทั้งหมดของ publisher

SELECT * FROM publisher; 

 ผลลัพธ์ที่ได้ 

1||Fah Sai|Bangkok|0971073060
2||Pearson Education Limited|United Kingdom|020 7010 2336
3||Mcgraw-hill International Enterprises|United States|212-904-2078








ไม่มีความคิดเห็น:

แสดงความคิดเห็น