SQLite เป็นฐานข้อมูลแบบน้ำหนักเบา เป้าหมายการออกแบบถูกฝังไว้ และมีการใช้ทรัพยากรแบบฝังตัวจำนวนมาก ในอุปกรณ์แบบฝังตัว อาจต้องใช้หน่วยความจำเพียงไม่กี่ร้อย K เท่านั้นก็เพียงพอแล้ว สามารถรองรับระบบปฏิบัติการกระแสหลัก เช่น Windows/Linux/Unix และสามารถใช้ร่วมกับภาษาการเขียนโปรแกรมได้หลายภาษา เช่น Tcl, PHP, Java ฯลฯ เช่นเดียวกับอินเทอร์เฟซ ODBC นอกจากนี้ยังสามารถเปรียบเทียบกับ Mysql และ PostgreSQL ได้อีกด้วย ซอฟต์แวร์โอเพ่นซอร์สที่มีชื่อเสียงระดับโลก ในแง่ของระบบการจัดการฐานข้อมูล ความเร็วในการประมวลผลนั้นเร็วกว่าทั้งหมด
แม้ว่า SQLite จะมีขนาดเล็กมาก แต่คำสั่ง SQL ที่สนับสนุนก็ไม่ได้ด้อยกว่าฐานข้อมูลโอเพ่นซอร์สอื่นๆ SQLite ที่สนับสนุนประกอบด้วย:
ATTACH DATABASE
เริ่มต้นการทำธุรกรรม
ความคิดเห็น
กระทำธุรกรรม
สำเนา
สร้างดัชนี
สร้างตาราง
สร้างทริกเกอร์
สร้างมุมมอง
ลบ
ถอดฐานข้อมูล
วางดัชนี
วางตาราง
ปล่อยทริกเกอร์
วางมุมมอง
สิ้นสุดการทำธุรกรรม
อธิบาย
การแสดงออก
แทรก
ข้อขัดแย้ง
แพรกมา
แทนที่
ธุรกรรมย้อนกลับ
เลือก
UPDATE
ในขณะเดียวกันก็รองรับฟังก์ชันการประมวลผลธุรกรรมและอื่นๆ บางคนก็บอกว่ามันเหมือนกับ Access ของ Microsoft บางครั้งก็ให้ความรู้สึกคล้ายกันเล็กน้อย แต่จริงๆ แล้วแตกต่างกันมาก ตัวอย่างเช่น SQLite รองรับข้ามแพลตฟอร์ม ใช้งานง่าย และสามารถสร้างฐานข้อมูลได้โดยตรงในหลายภาษา ต่างจาก Access ที่ไม่ต้องการการสนับสนุนจาก Office หากคุณมีแอปพลิเคชันขนาดเล็กมาก หรือต้องการพัฒนาแบบฝังตัวและไม่มีระบบฐานข้อมูลที่เหมาะสม คุณสามารถพิจารณาใช้ SQLite ได้ทันที ปัจจุบันเวอร์ชันล่าสุดคือ 3.2.2 และเว็บไซต์อย่างเป็นทางการคือ: http://www.sqlite.org ซึ่งสามารถรับซอร์สโค้ดและเอกสารประกอบได้ ขณะเดียวกันเนื่องจากโครงสร้างฐานข้อมูลมีความเรียบง่ายและมีซอร์สโค้ดของระบบไม่มากนัก จึงเหมาะสำหรับมืออาชีพที่ต้องการศึกษาการพัฒนาระบบฐานข้อมูล
ตอนนี้เรามาเริ่มด้วยการแนะนำสั้นๆ กันดีกว่า โดยหลักแล้วฉันต้องการชี้แจงประเด็นเล็กๆ น้อยๆ ประเด็นหนึ่งคือวิธีการติดตั้งและใช้งาน และอีกประการคือวิธีการพัฒนาร่วมกับ PHP
1. การติดตั้ง
1. แพลตฟอร์ม Windows
ดาวน์โหลดไฟล์ภายใต้ windows ซึ่งจริงๆ แล้วเป็นโปรแกรมบรรทัดคำสั่ง (ที่อยู่ดาวน์โหลด: sqlite>
# พรอมต์ SQLite หากคุณต้องการดูวิธีใช้คำสั่ง ให้ป้อน .help ใน sqlite คำสั่งระบบทั้งหมดจะขึ้นต้นด้วย .:
sqlite> .ช่วยเหลือ
.databases แสดงรายการชื่อและไฟล์ของฐานข้อมูลที่แนบมา
.dump ?TABLE? ... ดัมพ์ฐานข้อมูลในรูปแบบข้อความ SQL
.echo ON|OFF เปิดหรือปิดคำสั่ง echo
.exit ออกจากโปรแกรมนี้
.explain ON|OFF เปิดหรือปิดโหมดเอาต์พุตที่เหมาะสมสำหรับ EXPLAIN
.header ON|OFF เปิดหรือปิดการแสดงส่วนหัว
.help แสดงข้อความนี้
.import FILE TABLE นำเข้าข้อมูลจาก FILE ลงใน TABLE
.indices TABLE แสดงชื่อของดัชนีทั้งหมดบน TABLE
.mode MODE ?TABLE? ตั้งค่าโหมดเอาต์พุตโดยที่ MODE เป็นหนึ่งใน:
csv ค่าที่คั่นด้วยเครื่องหมายจุลภาค
คอลัมน์จัดชิดซ้าย (ดู .width)
รหัส html HTML <table>
แทรกคำสั่งแทรก SQL สำหรับตาราง
บรรทัดหนึ่งค่าต่อบรรทัด
รายการค่าคั่นด้วยสตริง .separator
แท็บ ค่าที่คั่นด้วยแท็บ
tcl องค์ประกอบรายการ TCL
.nullvalue STRING พิมพ์ STRING แทนค่า NULL
.output FILENAME ส่งเอาต์พุตไปยัง FILENAME
.output stdout ส่งเอาท์พุตไปที่หน้าจอ
.prompt MAIN CONTINUE แทนที่พรอมต์มาตรฐาน
.quit ออกจากโปรแกรมนี้
.read FILENAME ดำเนินการ SQL ใน FILENAME
.schema ?TABLE? แสดงคำสั่ง CREATE
.separator STRING เปลี่ยนตัวคั่นที่ใช้โดยโหมดเอาต์พุตและ .import
.show แสดงค่าปัจจุบันสำหรับการตั้งค่าต่างๆ
.tables ?PATTERN? แสดงรายการชื่อของตารางที่ตรงกับรูปแบบ LIKE
.timeout MS ลองเปิดตารางที่ถูกล็อคเป็นเวลา MS มิลลิวินาที
.width NUM NUM ... ตั้งค่าความกว้างคอลัมน์สำหรับโหมด "คอลัมน์"
ตารางไลท์>
www.knowsky.com
# เราสร้าง catlog ฐานข้อมูล
sqlite> สร้างแค็ตตาล็อกตาราง (
...> รหัสหลักจำนวนเต็มรหัส
...> จำนวนเต็มพิด
...> ชื่อ varchar(10) UNIQUE
-
ตารางไลท์>
# หากมีตารางอยู่ ระบบจะแจ้ง:
ข้อผิดพลาด SQL: มีแค็ตตาล็อกตารางอยู่แล้ว
# เราสร้างข้อมูลดัชนี
สร้างดัชนี Catalog_idx บนแค็ตตาล็อก (id asc);
# เราตรวจสอบข้อมูลตารางว่ามีกี่โต๊ะ
sqlite>.ตาราง
แคตตาล็อก AA
# ดูโครงสร้างของตาราง:
sqlite> แค็ตตาล็อก .schema
สร้างแค็ตตาล็อกตาราง (
รหัสหลักจำนวนเต็ม id
จำนวนเต็มพิด,
ชื่อ varchar(10) ไม่ซ้ำกัน
-
สร้าง INDEX Catalog_idx บนแค็ตตาล็อก (id asc);
#แทรกบันทึกลงในตารางข้อมูล
sqlite> แทรกลงในค่าแค็ตตาล็อก (ppid, ชื่อ) ('001', 'heiyeluren');
#No prompts หากสำเร็จ หากนิพจน์ผิด ระบบจะแจ้งข้อความแสดงข้อผิดพลาด:
ข้อผิดพลาด SQL: ใกล้ "set": ข้อผิดพลาดทางไวยากรณ์
#ดึงข้อมูลว่ามีกี่รายการ
sqlite> เลือกจำนวน (*) จากแค็ตตาล็อก;
1
# ดึงบันทึกการค้นหา
sqlite> เลือก * จากแค็ตตาล็อก;
1|1|heiyeluren
อย่างไรก็ตาม ไม่มีปัญหาหากคุณใช้ SQL มาตรฐานในการทำงาน หากคุณไม่แน่ใจ คุณสามารถตรวจสอบข้อมูลความช่วยเหลือได้จากเว็บไซต์อย่างเป็นทางการ นอกจากนี้ ควรสังเกตว่า SQLite ไม่รองรับการแก้ไขโครงสร้างตาราง หากคุณต้องการแก้ไขโครงสร้างตาราง คุณสามารถลบตารางและสร้างใหม่ได้เท่านั้น ดังนั้นคุณต้องพิจารณาความสามารถในการปรับขนาดเมื่อสร้างตาราง คาดว่าฟังก์ชันนี้จะมีความเข้มแข็งมากขึ้นในอนาคต
2. ข้อผิดพลาดของแพลตฟอร์ม Linux/Unix
: ฉันยังไม่ได้ติดตั้ง 555 แต่มันอาจจะคล้ายกับ Windows ฉันจะสร้างส่วนนี้ขึ้นมาในวันอื่น
2. การพัฒนา PHP ของ SQLite
PHP 5 ไม่รองรับ Mysql ตามค่าเริ่มต้นอีกต่อไป แต่รองรับ SQLite ตามค่าเริ่มต้น สิ่งนี้แสดงให้เห็นว่ามันมีอิทธิพลเพียงใด ดังนั้นหากคุณต้องการพัฒนา PHP สำหรับ SQLite ขอแนะนำให้คุณใช้ PHP 5.0.0 หรือ ข้างต้น ขณะนี้ฉันใช้ PHP เวอร์ชัน 5.0.4 ซึ่งรองรับส่วนขยาย SQLite โดยตรง ฉันจะไม่อธิบายรายละเอียดวิธีการติดตั้งส่วนขยาย PHP ที่นี่ หากคุณไม่แน่ใจ คุณสามารถตรวจสอบเอกสารที่เกี่ยวข้องกับ PHP ได้
ที่นี่ฉันกำลังพูดถึงการพัฒนา SQLite เป็นหลัก ในปัจจุบัน คลาส DB หลักทั้งหมดใน PHP รองรับไดรเวอร์ SQLite รวมถึงคลาส PEAR::DB และคลาส ADOdb ดังนั้นการใช้ DB เพื่อการพัฒนาจึงเป็นทางเลือกที่ดีเช่นกัน
เพื่อความเรียบง่าย การดำเนินการต่อไป
นี้
ทั้งหมดจะดำเนินการบน Windows
ที่ทำงานอยู่ มีฟังก์ชันการประมวลผลมากมายสำหรับ SQLite ใน PHP คุณสามารถตรวจสอบคู่มือ PHP สำหรับข้อมูลโดยละเอียดเราใช้ฟังก์ชัน sqlite_open() เพื่อเปิดฐานข้อมูล sqlite โดยจะส่งคืนทรัพยากรการดำเนินการสำเร็จ และส่งกลับค่า false หากล้มเหลว จากนั้นการดำเนินการที่ตามมาทั้งหมดจะดำเนินการกับทรัพยากรนี้ ให้ใช้ฟังก์ชัน sqlite_query
ด้านล่างนี้ ฉันถือว่าคุณมีไฟล์ฐานข้อมูล sqlite abc.db ในไดเร็กทอรีโปรแกรม PHP ปัจจุบัน เราดำเนินการกับไฟล์นี้:
<?php
//เปิดฐานข้อมูล sqlite
$db = @sqlite_open("abc.db");
//การจัดการข้อยกเว้น
if (!$db) die("การเชื่อมต่อ Sqlite ล้มเหลวn");
//เพิ่มฐานข้อมูลชื่อ foo
@sqlite_query($db, "สร้างตาราง foo (bar varchar(10))");
//ใส่บันทึก
@sqlite_query($db, "INSERT INTO foo VALUES ('fnord')");
//ดึงบันทึกทั้งหมด
$result = @sqlite_query($db, 'เลือกแถบจาก foo');
//พิมพ์ผลลัพธ์ที่ได้รับ
print_r(sqlite_fetch_array($ผล));
?>
ผลลัพธ์ที่เราเห็นคือ:
Array
-
[0] => ฟอร์ด
[บาร์] => เฟิน
)
พิสูจน์ว่าโค้ดของเราดำเนินการได้สำเร็จ หากไม่มีอินพุต โปรดตรวจสอบโปรแกรมหรือว่ามีไฟล์ฐานข้อมูลของคุณหรือไม่
จากนั้นด้วยการดำเนินการขั้นพื้นฐานนี้ คุณสามารถพิจารณาใช้การดำเนินการที่ซับซ้อนยิ่งขึ้นและ SQL เพื่อดำเนินการได้ และปล่อยให้มันช่วยคุณจัดการข้อมูล คุณสามารถสร้างสมุดเยี่ยมหรือระบบ CMS ได้ ฉันคิดว่าจะไม่มีปัญหา
2. ใช้ PHP เพื่อสร้างและดำเนินการฐานข้อมูล
หากคุณไม่มีเครื่องมือใด ๆ เช่น sqlite.exe คุณสามารถสร้างฐานข้อมูล sqlite ผ่าน PHP และจัดการได้
ที่จริงแล้ว เนื้อหาของฐานข้อมูลที่สร้างผ่านโปรแกรม sqlite.exe นั้นว่างเปล่า ที่จริงแล้ว ไฟล์ฐานข้อมูลจะมีอยู่หลังจากสร้างตารางและเพิ่มข้อมูลแล้วเท่านั้น ดังนั้น เราจึงสามารถเพิ่มไฟล์ด้วยตนเองได้ เช่น การทดสอบที่ว่างเปล่า db? และดำเนินการกับมัน สิ่งนี้เป็นไปได้อย่างสมบูรณ์ ด้านล่างนี้เราจะใช้โปรแกรม PHP เพื่อสร้างฐานข้อมูลและทำหน้าที่ง่ายๆ ในการสร้างตารางข้อมูล การแทรกข้อมูล และการดึงข้อมูล
ก่อนอื่น มาดูโค้ดกันก่อน: (โค้ดยาวกว่าแต่เข้าใจง่ายกว่า)
<?php
-
* ไฟล์: sqlite.php
* ฟังก์ชั่น: การประมวลผลฐานข้อมูล sqlite
* ผู้เขียน: heiyeluren
* เวลา: 5-8-2548
-
กำหนด("LN", __LINE__);//หมายเลขบรรทัด
กำหนด("FL", __FILE__);//ไฟล์ปัจจุบัน
กำหนด("DEBUG", 0);//สวิตช์ดีบัก
$db_name = "heiyeluren.db";
//สร้างไฟล์ฐานข้อมูล เนื้อหาไฟล์ว่างเปล่า
ถ้า (!file_exists($db_name)) {
ถ้า (!($fp = fopen($db_name, "w+"))) {
ทางออก(error_code(-1, LN));
-
fclose($fp);
-
//เปิดไฟล์ฐานข้อมูล
ถ้า (!($db = sqlite_open($db_name))) {
ทางออก(error_code(-2, LN));
-
//สร้างโครงสร้างตารางข้อมูล
ถ้า (!sqlite_query($db, "ทดสอบตารางวาง")) {
ทางออก(error_code(-3, LN));
-
if (!sqlite_query($db, "ทดสอบสร้างตาราง (คีย์หลักจำนวนเต็ม id, จำนวนเต็ม pid, ชื่อ varchar(10) UNIQUE)")) {
ทางออก(error_code(-3, LN));
-
//แทรกข้อมูลบางส่วน
if (!sqlite_query($db, " INSERT INTO test (name) VALUES ('heiyeluren') ")) {
ทางออก(error_code(-4, LN));
-
//ดึงข้อมูล
if (!($result = sqlite_query($db, "SELECT * จากการทดสอบ"))) {
ทางออก(error_code(-5, LN));
}
//รับข้อมูลที่ดึงมามาแสดง
ในขณะที่ ($array = sqlite_fetch_array($result)) {
echo "ID: ". $array[id] "<br>ชื่อ: ". $array[name] ;
}
/* ฟังก์ชั่นรหัสข้อความแสดงข้อผิดพลาด */
ฟังก์ชั่น error_code($code, $line_num, $debug=DEBUG)
-
ถ้า ($รหัส<-6 || $รหัส>-1) {
กลับเท็จ;
-
สวิตช์($ รหัส) {
กรณี -1: $errmsg = "สร้างไฟล์ฐานข้อมูลผิดพลาด";
หยุดพัก;
case -2: $errmsg = "เปิดไฟล์ฐานข้อมูล sqlite ล้มเหลว";
หยุดพัก;
case -3: $errmsg = "สร้างตารางล้มเหลว มีตารางอยู่แล้ว";
หยุดพัก;
case -4: $errmsg = "การแทรกข้อมูลล้มเหลว";
หยุดพัก;
case -5: $errmsg = "สืบค้นข้อมูลฐานข้อมูลล้มเหลว";
หยุดพัก;
case -6: $errmsg = "ดึงข้อมูลล้มเหลว";
หยุดพัก;
กรณี -7: $errmsg = "";
หยุดพัก;
ค่าเริ่มต้น: $errmsg = "ข้อผิดพลาดที่ไม่รู้จัก";
}
$m = "<b>[ Error ]</b><br>ไฟล์: ". basename(FL) ." <br>Line: ". LN "<br>Mesg: ". ;
ถ้า (!$debug) {
($m = $errmsg);
-
ส่งคืน $m;
}
?>
หากคุณทำงานอย่างถูกต้อง ในที่สุดโปรแกรมก็จะส่งออก:
ID: 1
ชื่อ:เฮย์เยลูเรน
โปรแกรมข้างต้นของเรามีฟังก์ชันที่ค่อนข้างสมบูรณ์ รวมถึงการดีบัก การจัดการข้อยกเว้น การเข้าถึงฐานข้อมูล ฯลฯ ถือเป็นแอปพลิเคชันที่เรียบง่าย คุณสามารถขยายได้หากคุณสนใจ
* สิ้นสุด:
การดำเนินการขั้นพื้นฐานของเราอยู่ที่นี่ ฉันจะทำเนื้อหาให้เสร็จเมื่อฉันมีเวลาในอนาคต หากคุณสนใจ คุณสามารถค้นคว้าข้อมูลดังกล่าวได้ บางทีหน้าแรกส่วนตัวของคุณอาจต้องการฐานข้อมูลขนาดเล็กเพื่อช่วยคุณ
* เอกสารอ้างอิง:
http://www.donews.net/limodou/archive/2004/03/21/7997.aspx
http://www.linuxsir.org/bbs/showthread.php?p=1213668#post1213668
* เว็บไซต์อย่างเป็นทางการของทรัพยากร SQLite: http://www.sqlite.org
ไวยากรณ์ SQL: http://www.sqlite.org/lang.html
เอกสารการพัฒนา: http://www.sqlite.org/docs.html
คำถามที่พบบ่อย: http://www.sqlite.org/faq.html
ที่อยู่ดาวน์โหลด: http://www.sqlite.org/download.html
ผู้เขียน: heiyeluren
วันที่: 5-8-2548