SQLite ประเภทข้อมูล: จำนวนเต็ม, ข้อความ, ตัวเลข, จำนวนจริง, บล็อบ
⚡ สรุปอย่างชาญฉลาด
SQLite ประเภทข้อมูลทำงานแตกต่างจากฐานข้อมูลประเภทอื่น ๆ เนื่องจาก SQLite ใช้ ty แบบไดนามิกpingโดยการจัดเก็บค่าใดๆ ในคอลัมน์ใดๆ ก็ได้ คลาสการจัดเก็บข้อมูล ความสัมพันธ์ของประเภท และชื่อประเภทที่ประกาศไว้ จะร่วมกันกำหนดวิธีการบันทึกค่าแต่ละค่าลงในดิสก์
หัวข้อด้านล่างนี้จะอธิบายวิธีการ SQLite เนื้อหาจะกล่าวถึงชนิดข้อมูล โดยเริ่มจากคลาสการจัดเก็บข้อมูลทั้งห้าแบบ จากนั้นกล่าวถึงความสัมพันธ์ของชนิดข้อมูลและกฎการกำหนดค่า และสุดท้ายคือตัวอย่างการใช้งานจริงของการจัดเก็บจำนวนเต็ม จำนวนจริง BLOB บูลีน และวันที่
ชนิดข้อมูลใน SQLite แตกต่างจากระบบจัดการฐานข้อมูลอื่นๆ ใน SQLiteคุณสามารถประกาศชนิดข้อมูลได้ตามปกติ แต่คุณยังคงสามารถเก็บค่าใดๆ ก็ได้ในชนิดข้อมูลใดๆ ก็ได้
SQLite ไม่มีประเภทข้อมูลตายตัว ไม่มีประเภทข้อมูลที่กำหนดไว้ คุณสามารถจัดเก็บข้อมูลประเภทใดก็ได้ในคอลัมน์ใดก็ได้ นี่เรียกว่าประเภทข้อมูลแบบไดนามิกping.
ในประเภทข้อมูลคงที่ เช่นในระบบจัดการฐานข้อมูลอื่นๆ หากคุณประกาศคอลัมน์ด้วยประเภทข้อมูลจำนวนเต็ม คุณจะสามารถแทรกค่าที่มีประเภทข้อมูลจำนวนเต็มเท่านั้น อย่างไรก็ตาม ในประเภทข้อมูลแบบไดนามิก เช่นใน SQLiteประเภทของคอลัมน์จะถูกกำหนดโดยค่าที่ป้อนเข้าไป จากนั้น SQLite เก็บค่านั้นขึ้นอยู่กับประเภทของมัน
SQLite คลาสพื้นที่เก็บข้อมูล
In SQLite วิธีการจัดเก็บข้อมูลจะแตกต่างกันไปตามประเภทของค่า โดยวิธีการจัดเก็บข้อมูลที่แตกต่างกันเหล่านี้เรียกว่า คลาสการจัดเก็บข้อมูล (Storage Class) SQLite.
ต่อไปนี้เป็นคลาสการจัดเก็บข้อมูลที่มีให้ใช้งาน SQLite:
- NULL – คลาสการจัดเก็บข้อมูลนี้ใช้เพื่อจัดเก็บค่า NULL ใด ๆ
- จำนวนเต็ม – ค่าตัวเลขใดๆ จะถูกจัดเก็บเป็นค่าจำนวนเต็มที่มีเครื่องหมาย (สามารถเก็บได้ทั้งค่าจำนวนเต็มบวกและลบ) ค่าจำนวนเต็มใน SQLite จะถูกจัดเก็บไว้ในที่เก็บข้อมูลขนาด 1, 2, 3, 4, 6 หรือ 8 ไบต์ ขึ้นอยู่กับค่าของตัวเลข
- REAL – คลาสการจัดเก็บข้อมูลนี้ใช้สำหรับจัดเก็บค่าทศนิยม โดยจะใช้พื้นที่จัดเก็บข้อมูล 8 ไบต์
- TEXT – ใช้สำหรับจัดเก็บข้อความ และรองรับการเข้ารหัสหลายแบบ เช่น UTF-8, UTF-16BE หรือ UTF-16LE
- หยด – ใช้สำหรับจัดเก็บไฟล์ขนาดใหญ่ เช่น รูปภาพหรือไฟล์ข้อความ ค่าจะถูกจัดเก็บในรูปแบบอาร์เรย์ไบต์ เช่นเดียวกับค่าที่ป้อนเข้ามา
SQLite ประเภทความสัมพันธ์
ความสัมพันธ์ของประเภทข้อมูล (Type affinity) คือประเภทข้อมูลที่แนะนำให้ใช้จัดเก็บในคอลัมน์ อย่างไรก็ตาม คุณยังสามารถจัดเก็บข้อมูลประเภทใดก็ได้ตามต้องการ ประเภทข้อมูลเหล่านี้เป็นเพียงคำแนะนำ ไม่ใช่ข้อกำหนดบังคับ
ประเภทเหล่านี้ถูกนำมาใช้ใน SQLite เพื่อเพิ่มความเข้ากันได้สูงสุดระหว่าง SQLite และอื่น ๆ ระบบจัดการฐานข้อมูลs.
คอลัมน์ใด ๆ ที่ประกาศใน SQLite ฐานข้อมูลจะถูกกำหนดความสัมพันธ์ของประเภทข้อมูลโดยขึ้นอยู่กับประเภทข้อมูลที่ประกาศไว้ ต่อไปนี้คือรายการความสัมพันธ์ของประเภทข้อมูลในฐานข้อมูล SQLite:
- ข้อความ.
- ตัวเลข
- จำนวนเต็ม.
- จริง.
- หยด.
นี่คือวิธี SQLite กำหนดความสัมพันธ์ของคอลัมน์จากประเภทข้อมูลที่ประกาศไว้:
- ความสัมพันธ์จำนวนเต็มถูกกำหนดหากประเภทที่ประกาศมี เชือก “อินท”
- ระบบจะกำหนด affinity เป็น TEXT หากคอลัมน์นั้นมีชนิดข้อมูลเป็นสตริงใดสตริงหนึ่งต่อไปนี้: “TEXT”, “CHAR” หรือ “CLOB” ตัวอย่างเช่น ชนิดข้อมูล VARCHAR จะถูกกำหนด affinity เป็น TEXT
- BLOB affinity ถูกกำหนดถ้าคอลัมน์ไม่ได้ระบุประเภทหรือชนิดข้อมูลเป็น BLOB
- ค่าความสัมพันธ์แบบ REAL จะถูกกำหนดหากชนิดข้อมูลมีสตริงใดสตริงหนึ่งต่อไปนี้: “DOUB”, “REAL” หรือ “FLOAT”
- ความสัมพันธ์ของ NUMERIC ถูกกำหนดให้กับข้อมูลประเภทอื่น
นอกจากนี้ ยังมีตารางด้านล่างที่แสดงตัวอย่างบางส่วนของแผนที่ping ระหว่าง SQLite ประเภทข้อมูลและความเกี่ยวข้องที่กำหนดโดยกฎเหล่านี้:
ตัวอย่างการจัดเก็บข้อมูลประเภทต่างๆ SQLite
การจัดเก็บตัวเลขด้วย SQLite จำนวนเต็ม
หากคอลัมน์ใดมีชนิดข้อมูลที่มีคำว่า “INT” อยู่ ระบบจะกำหนดให้คอลัมน์นั้นมีชนิดข้อมูลเป็น INTEGER และจะจัดเก็บในคลาสจัดเก็บข้อมูลแบบ INTEGER
ประเภทข้อมูลต่อไปนี้ทั้งหมดถูกกำหนดให้มีความสัมพันธ์กับประเภทข้อมูล INTEGER:
- INT, จำนวนเต็ม, BIGINT
- INT2, INT4, INT8.
- ตัวเล็กจิ๋ว ตัวเล็ก ขนาดกลาง
ความสัมพันธ์ประเภท INTEGER ใน SQLite สามารถเก็บค่าจำนวนเต็มที่กำหนด (บวกหรือลบ) ได้ตั้งแต่ 1 ไบต์ จนถึงสูงสุด 8 ไบต์
การจัดเก็บตัวเลขด้วย SQLite REAL
ตัวเลขจริง (REAL numbers) คือตัวเลขที่มีความแม่นยำแบบจุดลอยตัวสองเท่า (double floating-point precision) SQLite จัดเก็บจำนวนจริงในรูปแบบอาร์เรย์ 8 ไบต์ ต่อไปนี้คือรายการประเภทข้อมูลใน SQLite ที่คุณสามารถใช้เพื่อจัดเก็บตัวเลขจริง:
- จริง.
- สองเท่า.
- ความแม่นยำสองเท่า
- ลอย.
จัดเก็บข้อมูลขนาดใหญ่ด้วย SQLite หยด
มีเพียงวิธีเดียวในการจัดเก็บไฟล์ขนาดใหญ่ในระบบ SQLite ฐานข้อมูลนั้นใช้ชนิดข้อมูล BLOB ชนิดข้อมูลนี้ใช้สำหรับจัดเก็บไฟล์ขนาดใหญ่ เช่น รูปภาพ หรือไฟล์ประเภทใดๆ ไฟล์จะถูกแปลงเป็นอาร์เรย์ไบต์แล้วจัดเก็บในขนาดเดียวกับไฟล์อินพุต
การเก็บรักษา SQLite booleans
SQLite ไม่มีคลาสจัดเก็บค่าบูลีนแยกต่างหาก แต่ค่าบูลีนจะถูกจัดเก็บเป็นค่าจำนวนเต็ม โดย 0 แทนค่าเท็จ และ 1 แทนค่าจริง
การเก็บรักษา SQLite วันที่และเวลา
คุณสามารถระบุวันที่หรือช่วงเวลาได้ใน SQLite โดยใช้ชนิดข้อมูลต่อไปนี้:
- วัน
- วันเวลา
- การประทับเวลา
- เวลา
โปรดทราบว่าไม่มีคลาสจัดเก็บข้อมูล DATE หรือ DATETIME แยกต่างหากใน SQLiteแต่ค่าใดๆ ที่ประกาศด้วยชนิดข้อมูลก่อนหน้านี้จะถูกจัดเก็บไว้ในคลาสการจัดเก็บข้อมูลโดยขึ้นอยู่กับรูปแบบวันที่ของค่าที่แทรกเข้าไป ดังนี้:
- TEXT – หากคุณป้อนค่าวันที่ในรูปแบบสตริง ISO8601 (“YYYY-MM-DD HH:MM:SS.SSS”)
- REAL – หากคุณป้อนค่าวันที่เป็นเลขวันจูเลียน ซึ่งก็คือจำนวนวันนับตั้งแต่เที่ยงวันในกรีนวิชของวันที่ 24 พฤศจิกายน ค.ศ. 4714 ก่อนคริสตกาล ค่าวันที่นั้นจะถูกจัดเก็บเป็นค่า REAL
- จำนวนเต็ม - เช่น ยูนิกซ์ เวลา จำนวนวินาทีตั้งแต่ 1970-01-01 00:00:00 UTC


