แสดงบทความที่มีป้ายกำกับ SQLite แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ SQLite แสดงบทความทั้งหมด

วันอาทิตย์ที่ 6 มีนาคม พ.ศ. 2559

ติดตั้งSQLite และการใชังาน

ติดตั้งSQLite บน Windows ต้องดาวน์โหลดไฟล์โปรแกรมมาก่อน โดยเข้าเว็บไซต์ SQLite Download (http://www.sqlite.org/download.html)
ตัวอย่างหน้าเว็บไซต์ SQLite Download Page เลือกดาวน์โหลดภายใต้หัวข้อ Precompiled Binaries for Windows เลือกแบบ command-line shell
01-download-sqlite-for-windows
แตกไฟล์ที่ดาวน์โหลดมาจะได้ไฟล์ sqlite3.exe สามารถคลิ้กใช้งานได้เลย (ลองดูขนาดหลังจากแตกไฟล์แล้ว มีขนาดไฟล์ประมาณ 500 Kbytes)
02-unzip-and-run
เข้า sqlite ด้วยคำสั่ง sqlite3
[user1@cent6-dev ~]$ sqlite3
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
คำสั่งใน sqlite (ที่ไม่ใช่ SQL) จะขึ้นต้นด้วยเครื่องหมายจุด “.” หากต้องการดูคำสั่ง และวิธีการใช้ ให้พิมพ์คำสั่ง .help
sqlite> .help
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
                         If TABLE specified, only dump tables matching
                         LIKE pattern TABLE.
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
...
ลองสร้างตารางแล้วลองใส่ข้อมูล ด้วย SQL
sqlite> CREATE TABLE users (id int, name varchar(255));

sqlite> INSERT INTO users VALUES (1, 'Alice');
sqlite> INSERT INTO users VALUES (2, 'Ben');

sqlite> SELECT * FROM users;
1|Alice
2|Ben
sqlite>
ถ้ารันคำสั่ง sqlite3 อย่างเดียวโดยไม่ได้ระบุไฟล์ฐานข้อมูลแบบนี้ หลังจากสร้าง table ใส่ข้อมูลแล้ว ฐานข้อมูลที่สร้างจะถูกเก็บไว้ในหน่วยความจำชั่วคราว ถ้าพิมพ์คำสั่ง .exit ออกจาก sqlite เลย ข้อมูล table ที่สร้างนี้จะหายไป เราต้อง
บันทึกฐานข้อมูลลงเป็นไฟล์ด้วยคำสั่ง .backup
sqlite> .backup test1.db
พิมพ์คำสั่ง .exit ออกจาก sqlite
sqlite> .exit
[user1@cent6-dev ~]$
ลอง ls ดู จะมีไฟล์ test1.db ถูกสร้างขึ้นมา
[user1@cent6-dev ~]$ ls -l test1.db
-rw-r--r--. 1 user1 users 2048 Jun 29 15:22 test1.db
ใช้คำสั่ง file เพื่อดูชนิดของไฟล์ที่บันทึกได้
[user1@cent6-dev ~]$ file test1.db
test1.db: SQLite 3.x database
ไฟล์นี้แหละเป็นไฟล์ที่ SQLite ใช้เก็บเป็นฐานข้อมูล ทีนี้ก็ขึ้นอยู่กับเราแล้วว่าจะเก็บไฟล์นี้ไว้ที่ไหน ตั้งชื่อไฟล์ว่าอะไร เราก็แค่เรียกคำสั่ง sqlite3 แล้วตามด้วยชื่อไฟล์นี้ ก็สามารถดึงข้อมูลที่เราเก็บได้ ตัวอย่างเช่น
[user1@cent6-dev ~]$ sqlite3 test1.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM users;
1|Alice
2|Ben
ถ้าไฟล์ที่ระบุไม่มีอยู่ sqlite จะสร้างไฟล์นั้นขึ้นมาโดยอัตโนมัติ
สามารถใช้คำสั่ง .databases เพื่อดูว่าตอนนี้เราเรียกใช้ฐานข้อมูลที่เก็บไว้ในไฟล์ไหนอยู่
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main             /home/user1/test1.db
การแก้ไขข้อมูลจะถูกบันทึกลงไปในไฟล์นี้ /home/user1/test1.db ทันที
sqlite> INSERT INTO users VALUES (3, 'Cat');
แต่ถ้าไม่ได้ระบุไฟล์ตอนรันคำสั่ง ต้องการจะโหลดไฟล์ขึ้นมาทีหลัง สามารถทำได้โดยใช้คำสั่ง .restore
[user1@cent6-dev ~]$ sqlite3
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

sqlite> SELECT * FROM users;
Error: no such table: users

sqlite> .restore test1.db

sqlite> SELECT * FROM users;
1|Alice
2|Ben
3|Cat
sqlite>
แต่วิธีการใช้ .restore แบบนี้ข้อมูลที่แก้ไขจะไม่ถูกบันทึกกลับไปในไฟล์ที่ระบุ
ลองใช้คำสั่ง .databases ดู
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main
ถ้าแก้ไขแล้วออกจากคำสั่ง sqlite3 ข้อมูลที่แก้ไขก็จะหายไป
ถ้าต้องการบันทึกข้อมูลที่แก้ไข ต้องใช้คำสั่ง .backup เพื่อบันทึกกลับไปในไฟล์ก่อนแล้วค่อย .exit ออกมา


คำสั่ง .tables แสดงชื่อ table ที่มีอยู่
sqlite> .tables
users
คำสั่ง .schema ตามด้วยชื่อ table เพื่อแสดงคำสั่ง SQL ที่ใช้สร้าง table นั้น
sqlite> .schema users
CREATE TABLE users (id int, name varchar(255));
เปลี่ยนวิธีการแสดงผล ดีฟอลต์การแสดงผลจะเป็นแบบนี้
sqlite> SELECT * FROM users;
1|Alice
2|Ben
3|Cat
ใช้คำสั่ง .mode ตามด้วยชนิดของการแสดงผลเช่น column
sqlite> .mode column
sqlite> SELECT * FROM users;
1           Alice
2           Ben
3           Cat
หากต้องการให้แสดงชื่อ column ด้วย ให้ใช้คำสั่ง .headers on
sqlite> .header ON
sqlite> SELECT * FROM users;
id          name
----------  ----------
1           Alice
2           Ben
3           Cat
หากต้องการเซฟเก็บเป็นคอนฟิกเก็บไว้ ไม่ต้องมาเปลี่ยนโหมดทุกครั้ง สามารถทำได้โดยสร้างเป็บคอนฟิกไฟล์ .sqliterc อยู่ในไดเร็คทอรี HOME
[user1@cent6-dev ~]$ cat .sqliterc
.headers on
.mode column

[user1@cent6-dev ~]$ sqlite3 test1.db
-- Loading resources from /home/user1/.sqliterc
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM users;
id          name
----------  ----------
1           Alice
2           Ben
3           Cat
sqlite>
ใช้คำสั่ง .dump เพื่อแสดง SQL ทั้งหมด ที่ใช้สร้างฐานข้อมูล
sqlite> .dump users
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE users (id int, name varchar(255));
INSERT INTO "users" VALUES(1,'Alice');
INSERT INTO "users" VALUES(2,'Ben');
INSERT INTO "users" VALUES(3,'Cat');
COMMIT;
เซฟเป็นไฟล์ด้วยคำสั่ง .output
sqlite> .output users-dump.sql
sqlite> .dump users
sqlite> .exit

[user1@cent6-dev ~]$ cat users-dump.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE users (id int, name varchar(255));
INSERT INTO "users" VALUES(1,'Alice');
INSERT INTO "users" VALUES(2,'Ben');
INSERT INTO "users" VALUES(3,'Cat');
COMMIT;
ใช้คำสั่ง .read เพื่อโหลด SQL ในไฟล์ที่ได้จากคำสั่ง .dump
[user1@cent6-dev ~]$ sqlite3
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
sqlite> .tables
sqlite> .read users-dump.sql
sqlite> .tables
users
sqlite> SELECT * FROM users;
1|Alice
2|Ben
3|Cat
sqlite>
ไฟล์ที่ sqlite3 สร้างขึ้นและใช้เก็บเป็นฐานข้อมูล สามารถ copy ไปยังเครื่องอื่นๆ ที่เป็นคนละ OS ได้ และสามารถใช้งานได้เลย เช่นถ้า copy ไฟล์ test1.db ที่ได้จากการสร้างบนลีนุกซ์ไปเปิดบน Windows
03-others


ทดลองเปิดสองหน้าจอพร้อมกัน รันคำสั่ง sqlite3 ให้เรียกไฟล์ฐานข้อมูลเดียวกัน
เพื่อให้เห็นความแตกต่างของสองหน้าจอ จะใช้คำสั่ง prompt เพื่อเปลี่ยนพร้อมต์ของหน้าจอเป็น sqlite-1 และ sqlite-2
หน้าจอที่ 1
[user1@cent6-dev ~]$ sqlite3 test1.db
-- Loading resources from /home/user1/.sqliterc
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .prompt "sqlite-1> "
sqlite-1>

หน้าจอที่ 2
[user1@cent6-dev ~]$ sqlite3 test1.db
-- Loading resources from /home/user1/.sqliterc
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .prompt "sqlite-2> "
sqlite-2>
ใช้คำสั่ง SELECT ดูข้อมูลทั้งสองหน้าจอก่อนแก้ไข
sqlite-1> SELECT * FROM users;
id          name
----------  ----------
1           Alice
2           Ben
3           Cat

sqlite-2> SELECT * FROM users;
id          name
----------  ----------
1           Alice
2           Ben
3           Cat
เพิ่มข้อมูลในหน้าจอ 1
sqlite-1> INSERT INTO users VALUES (4, 'Dean');

sqlite-1> SELECT * FROM users;
id          name
----------  ----------
1           Alice
2           Ben
3           Cat
4           Dean
เมื่อใช้ SELECT ในหน้าจอที่ 2 ผลลัพธ์ที่ได้ก็จะเปลี่ยนไปด้วย
sqlite-2> SELECT * FROM users;
id          name
----------  ----------
1           Alice
2           Ben
3           Cat
4           Dean
sqlite-2>

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

ขั้นตอนการติดตั้ง SQLite
เริ่มต้นให้เราเข้าไปดาวน์โหลด SQLite ที่เว็บไซต์ http://www.sqlite.org/ ก่อนครับ
ดาวน์โหลด SQLite
ดาวน์โหลด SQLite
เมื่อ ทำการดาวน์โหลดมาแล้วให้ สังเกต Path ของเครื่องเราที่เก็บไฟล์ SQlite ไว้แล้วให้เปิด Terminal ขึ้นมาเพิ่อ Run คำสั่งในการติดตั้งดังนี้ครับ
cd sqlite-autoconf-3070603
./configure
make
make install
ก็เป็นอันเสร็จเรียบร้อย สามารถใช้งาน SQLite ได้แล้ว ต่อมาจะเป็นการหาเครื่องมือ DBMS (Database Management System) มาจัดการในเรื่องของ Controller เพื่อจัดการข้อมูลที่มีอยู่ในเครื่องเราได้ง่ายขึ้นครับ
เครื่องมือ สำหรับจัดการ SOLite นั้นมีมากมายครับ ทั้ง Freeware และ Commercial license ดังนั้นสำหรับนัพัฒนาหรือ Developer มือใหม่ใช้ Freeware กันดีกว่า ซึ่งเจ้า Freeware ที่เหมาะสมที่สุดในการจัดการ SQlite นั้น ก็คือ Extension ตัวหนึ่งของเว็บบราวเซอร์ Firefox นั่นคือ SQlite Manager ครับ
SQLite Manager
ดาวนโหลดบราวเซอร์ FireFox แล้วไปที่เมนู Tool -> Add-ons แล้วค้นหา SQLite Manager แล้วทำการติดตั้งครับ
ติดตั้ง Extension ของ Firefox
ติดตั้ง Extension ของ Firefox
ถ้าไม่มีอะไรผิดพลาด เปิดบราวเซอร์ FireFox ขึ้นมาครับ แล้วลองไปที่ เมนู Tool จะพบกับ SQLite Manager ให้ลองเปิดใช้งานได้เลยครับ
เริ่มต้นทำการจัดการข้อมูลได้
เริ่มต้นทำการจัดการข้อมูลได้
วิธี การใช้งานเจ้า SQLite นั้นก็ไม่ได้ยากมากมายอะไรครับ หากคุณมีพื้นฐานการใช้งาน Oracle, MySQL หรือ MS SQL มาบ้างแล้วก็น่าจะสบายกับการใช้งานเครื่องมือตัวนี้ลองไปที่เมนู Database-> New Database แล้วสร้าง Database มาดูครับ
สร้าง Database ใหม่
สร้าง Database ใหม่
สร้าง Table ใน Database ขึ้นมาได้
สร้าง Table ใน Database ขึ้นมาได้
หากมีข้อมูลอยู่แล้วสามารถใช้คำสั่ง SQL Execute ได้
หากมีข้อมูลอยู่แล้วสามารถใช้คำสั่ง SQL Execute ได้
ขั้น ตอนทั้งหมดนี้ ที่จำเป็นมากที่สุดคือการเตรียมโครงสร้างของตารางข้อมูลในฐานข้อมูล และอาจจะต้องมีข้อมูลที่มีพร้อมอยู่แล้วเพื่อนำไปแสดงผล กับแอพพลิเคชันในอนาคต บทเรียนตอนต่อไปจะเป็นการเริ่มต้นพัฒนาแอพพลิเคชันร่วมกับ SQLite ครับติดตามกันได้เลย…

SQLite

     

    SQLite : บริการจัดการ ง่าย, ใช้ง่าย, ใช้ ในโปรแกรมง่าย, บำรุงรักษาง่าย


    คน ใช้ ชอบ เพราะ เล็กและเร็ว แต่นั่นมันแค่บังเอิญ ผู้ใช้ พบว่า ความที่มันเสถียร เชื่อใจได้เป็นผลมาจากความง่าย ไม่ยุ่ง ทำให้ที่จะผิด เกิดได้น้อย ฉนั้น SQLite เล็ก เร็วและใว้ใจได้ แต่ เหนือสิ่งอื่นใด, SQLite พยายามทำให้มัน ง่าย( simple)

    ความ ง่ายไม่ยุ่งยาก( simplicity) ของ ตัวขับระบบฐานข้อมูลตัวนี้( database engine) เป็นได้ทั้งข้อดีและข้อด้อย ( strength & weakness) ขึ้นอยู่กับว่า จะเอาไปใช้อะไร การที่ทำให้ง่ายและไม่ยุ่งยากทำให้ ต้องสลัดของบางอย่างที่คนบางคนเห็นว่า เป็นลักษณะเด่น เช่น
      - high concurrency( การมีคนใช้ร่วมกันหลายคนพร้อมกัน)
      - fine-grained access control ( หมายถึงการป้องกัน แบบวิวิสมาหรา) มี function ให้ใช้มากๆ มี stored procedure และ การใช้ SQL command แบบ ลวดลายแปลกๆ XML หรือ Java extension ฯลฯ
    หากต้องการใช้ ของที่วิวิสมาหรา และไม่เกี่ยงที่จะใช้วิธีการแปลกๆ ยุ่งยากแล้วละก็ ไม่น่าจะใช้ SQLite
    SQLite ไม่ได้ตั้งใจจะเป็นตัวที่จะเอามาใช้ในระดับบริษัทใหญ่ๆ มันไม่ได้ต้องการจะ มาแข่งกับ Oracle หรือ PostgreSQL

    กฎง่ายๆ ในการจะเลือกใช้ SQLite คือ หากต้องการ การบริหาร( administration) การใช้( implementation) และการจัดการ( maintanenance) ที่ง่ายและไม่ยุ่งยาก และจริงๆในการทำงานจริงๆแล้ว การทำให้ของใช้ง่ายๆ นั้น เราพบว่า มันเป็นทางออกที่พบบ่อยมาก กว่า ที่พวกเราคิดกันเสียอีก ( ก็คือ เอาของไม่ต้องวิวิสมาหรามาใช้นั้น มันได้ผลดีกว่า ไปเอาของยุ่งยากของใหญ่ มาใช้)


    สภาพการ หรือ เหตุการณ์ที่ SQLite ใช้ได้ดี

    websites: SQLite รอง รับ เวป ที่มีคนใช้ขนาดต่ำ ถึงขนาดกลาง ( ซึ่งก็รวมแล้ว ก็ประมาณ 99.9% ของเวปไซด์ทั้งหมด --อันนี้ ก็หมายถึง รร ใน สพท รวมทั้งสำนัก สพท เกือบทั้งหมด - ผู้แปล) จำนวน การเข้าใช้ที่เข้ามาเวปไซด์ที่ SQLite สามารถจัดการได้นั้น ขึ้นอยูกับว่า ข้อมูลขนาดใหน โดยทั่วไป ไซด์ใหน ที่มี น้อยกว่า 100,000(แสน) hits/วัน SQLite ควรจะรับได้สบายๆ อันนี้ เป็นการประเมินให้อย่างต่ำ( จริงๆ มันรับได้มากกว่า แสน hits) ได้มีการแสดงว่า SQLite สามารถรับได้ สิบเท่า ของจำนวนนี้

    Embedded devices and Applications : เนื่องจากมันเล็ก และไม่ต้องมีการจัดการอะไร( ไม่ต้องมี user name, password -คือ ท่านต้องเขียน โปรแกรมดักเองว่า จะให้ใครเข้ามาได้ ) SQLite จึงใช้ได้ดี ในรายที่ใช้ใน devices หรือ บริการที่ไม่ต้องมีคนมาคอยคุม SQLite ใช้ได้ดีใน cellphone, PDA อุปกรณ์ ที่ตั้งโต้ะ หรือ เครื่องไฟฟ้า เช่น เครือง ไมโครเวป เป็นต้น

    Application File Format : อันนี้ ไม่ทราบว่าจะแปลยังไง แปลไม่ออก

    Replacement for Ad hoc disk files : ใช้ในราย แทนที่จะ เปิด file เข้าออก ให้ใช้ เขียน เข้า SQLite แทน จะสดวกกว่า

    Internal or temporary databases: ข้อมูลที่ต้องการจะ แยก ดูด สกัด ในหลายแบบอย่าง การใช้ ข้อมูลใน memory โดยอาศัย SQL command ต่างๆ จะสดวกกว่า SQLite เนืองจากมันไม่ใหญ่ จึงใช้ได้ในรายเช่นนี้

    Command-line dataset analysis tool: การใช้ ข้อมูลจาก command line ( ก็คือ จาก dos prompt ) สามารถจะใช้ SQLite เพื่อ ดึงข้อมูลออกมาดูได้อย่างง่ายและรวดเร็ว ลักษณะอันนี้ จะทำจาก DBMS ตัวใหญ่ ก็ได้ แต่ ข้อได้เปรียบคือ SQLite ติดตั้ง และใช้ ง่ายกว่ามาก ไม่เพียงแค่นั้น SQLite สามารถเอาไปใช้ได้ ด้วย floppy disk แผ่นเดียว ( รวมทั้งข้อมูลด้วย)

    Stand-in for an enterprise dataase furint demos or testing: คือ เอาเป็นตัวสำหรับแสดง ให้ดูเช่น ให้เอาข้อมูลของลูกค้ามาแสดง แทนที่จะเอา ฐานข้อมูลตัวใหญ่ มาใช้ เพราะมันสามารถเอาไปใช้แบบ standalone ได้

    Database Pedagogy( การใช้เรียน สอน) : หากต้องการจะเรียนรู้การใช้ SQL command ต่างๆ SQLite เป็นตัวที่ใช้ได้ดีมาก เพราะ อย่างที่ว่ามาข้างบน ทำให้นักเรียน เข้าใจการทำงานของระบบ ฐานข้อมูลได้ง่าย


    สภาพการณ์ ที่ RDBMS ตัวใหญ่ใช้ได้ดีกว่า

    Client/Server Application : เช่นระบบการทำงาน แบบที่ต้องใช้ ข้อมูลมหาศาล และต้องการให้คนใช้ร่วมกันเป็นจำนวนมาก เช่น ผ่าน ระบบเครือข่ายใหญ่ๆ แม้ว่า SQLite จะทำงานผ่าน เครือข่ายได้ก็ตามเนื่องจากมันทำงานแบบ ระบบ file ฉนั้น จะทำให้สู้ ระบบใหญ่ไม่ได้ และ ใน SQLite นั้น การใช้ร่วมกัน จะทำให้มีการ lock file ( คือ ขณะที่คนหนึ่งกำลังเปลี่ยนข้อมูล มันจะ lock file ไม่ให้คนอื่นเข้ามายุ่ง) ระบบนี้ ทั้งใน windows & Linux ยังมีปัญหาอยู่ ( มีBugs) อันนี้ เป็นปัญหาของระบบปฎิบัติการ ไม่ใช่ของ SQLite เอง ฉนั้นกฎง่ายๆ ก็คือว่า หากมีการใช้ ร่วมกันแยะ ผ่านระบบเครือข่าย ก็ไม่ควรใช้ SQlite ( ในความเห็นของผู้แปล อย่าง ระบบห้องสมุด ที่ ครู1/3 กำลังทำอยู่ คิดว่า SQLite จัดการได้สบายๆ เพราะ ห้องสมุด คงไม่ยุ่งขนาดมี คนใช้มาก หรือ ใช้พร้อมกันแยะหรือบ่อย)

    High-Volume Websites : อย่างที่ว่ามาข้างบน หากต้องการใช้ SQLite เป็น ตัวจัดการ ในเวป มันก็ทำงานได้ แต่หากเวป มันยุ่งมากจนคิดว่า ต้องแบ่ง เครื่องออก ให้ช่วยทำงาน แยกกัน เช่นนี้ ก็ควรต้องใช้ ระบบฐานข้อมูลตัวโต

    ปัญหา การแบ่งงานให้เครืองแยกกันทำนั้น ไม่ใช้ ปัญหาของ backend แต่ปัญหาที่จะเกิดมาจาก การออกแบบตัวโปรแกรมที่จะทำงาน เช่น จะส่งรายชื่อ ของลูกค้า ไปยัง web browser อาจจะส่งไปได้ทีละ 50 ชื่อสบายๆ แต่ในราย 10,000 ชื่อ เราก็อาจจะต้องเขียนโปรแกรม แบ่งเป็นหน้าๆ ( 1,2,......) และ/หรือ ( หน้าที่แล้ว/หน้าต่อไป) นี่คือส่วนที่จะต้องมีการออกแบบ เขียนโปรแกรม ขึ้นมา ฉนั้นจะเห็นว่า มันไม่ได้เกี่ยวกับตัวบริหารจัดการข้อมูล แต่มันเป็นเรื่องการเขียนโปรแกรมขึ้นมาใช้ สรุปก็คือว่า กว่าที่ SQLite จะจัดการไม่ได้นั้น ปัญหามันจะมาจากการเขียนโปรแกรมใช้ มากกว่า ข้อจำกัดในการใช้ SQLite
    High Concurrency: SQLite ใช้ วิธีlock ตอน เขียน/อ่าน database file ฉนั้น หากใครกำลังอ่านข้อมูลอยู่ มันจะกัน ไม่ให้คนอื่นเข้าเขียนข้อมูลเข้า ก็เช่นกัน หากใครกำลังเขียนข้อมูลเข้า มันจะกันไม่ให้คนอื่นอ่านข้อมูลออกมา โดยทั่วไป อันนี้ไม่ใช่ปัญหา เพราะมันทำได้เร็ว ( ไม่กี่ milliseconds) แต่ในรายมีคนใช้แยะๆ ก็ต้องหาตัวอื่นมาใช้แทน SQLite