SQLite - ประเภทข้อมูล
ชนิดข้อมูล SQLite เป็นแอตทริบิวต์ที่ระบุชนิดของข้อมูลของวัตถุใด ๆ แต่ละคอลัมน์ตัวแปรและนิพจน์มีชนิดข้อมูลที่เกี่ยวข้องใน SQLite
คุณจะใช้ชนิดข้อมูลเหล่านี้ในขณะสร้างตารางของคุณ SQLite ใช้ระบบประเภทไดนามิกทั่วไปมากขึ้น ใน SQLite ประเภทข้อมูลของค่าจะเชื่อมโยงกับค่าเองไม่ใช่กับคอนเทนเนอร์
คลาสพื้นที่จัดเก็บ SQLite
แต่ละค่าที่จัดเก็บในฐานข้อมูล SQLite มีคลาสหน่วยเก็บข้อมูลต่อไปนี้ -
ซีเนียร์ | ประเภทการจัดเก็บและคำอธิบาย |
---|---|
1 | NULL ค่านี้เป็นค่า NULL |
2 | INTEGER ค่านี้เป็นจำนวนเต็มที่มีลายเซ็นซึ่งเก็บไว้ใน 1, 2, 3, 4, 6 หรือ 8 ไบต์ขึ้นอยู่กับขนาดของค่า |
3 | REAL ค่านี้เป็นค่าทศนิยมที่จัดเก็บเป็นเลขทศนิยม 8 ไบต์ IEEE |
4 | TEXT ค่านี้เป็นสตริงข้อความที่จัดเก็บโดยใช้การเข้ารหัสฐานข้อมูล (UTF-8, UTF-16BE หรือ UTF-16LE) |
5 | BLOB ค่านี้เป็นหยดข้อมูลที่จัดเก็บไว้ตรงตามที่ป้อนข้อมูล |
คลาสหน่วยเก็บข้อมูล SQLite นั้นกว้างกว่าประเภทข้อมูลเล็กน้อย ตัวอย่างเช่นคลาสหน่วยเก็บข้อมูล INTEGER มีประเภทข้อมูลจำนวนเต็ม 6 ชนิดที่มีความยาวต่างกัน
SQLite Affinity Type
SQLite สนับสนุนแนวคิดของ type affinityบนคอลัมน์ คอลัมน์ใด ๆ ยังคงสามารถจัดเก็บข้อมูลประเภทใดก็ได้ แต่คลาสพื้นที่เก็บข้อมูลที่ต้องการสำหรับคอลัมน์นั้นเรียกว่าaffinity. แต่ละคอลัมน์ของตารางในฐานข้อมูล SQLite3 ได้รับการกำหนดความสัมพันธ์ประเภทใดประเภทหนึ่งต่อไปนี้ -
ซีเนียร์ | ผู้สนใจและคำอธิบาย |
---|---|
1 | TEXT คอลัมน์นี้เก็บข้อมูลทั้งหมดโดยใช้คลาสการจัดเก็บ NULL, TEXT หรือ BLOB |
2 | NUMERIC คอลัมน์นี้อาจมีค่าโดยใช้คลาสพื้นที่เก็บข้อมูลทั้งห้าคลาส |
3 | INTEGER ทำงานเหมือนกับคอลัมน์ที่มีความสัมพันธ์แบบ NUMERIC โดยมีข้อยกเว้นในนิพจน์ CAST |
4 | REAL ทำตัวเหมือนคอลัมน์ที่มีความสัมพันธ์แบบ NUMERIC ยกเว้นว่าจะบังคับให้ค่าจำนวนเต็มเป็นการแสดงจุดลอยตัว |
5 | NONE คอลัมน์ที่มีความสัมพันธ์ NONE ไม่ชอบคลาสหน่วยเก็บข้อมูลหนึ่งมากกว่าอีกคลาสหนึ่งและไม่มีความพยายามที่จะบังคับข้อมูลจากคลาสหน่วยเก็บหนึ่งไปยังอีกคลาสหนึ่ง |
SQLite Affinity และ Type Names
ตารางต่อไปนี้แสดงชื่อชนิดข้อมูลต่างๆซึ่งสามารถใช้ในขณะสร้างตาราง SQLite3 ด้วยความสัมพันธ์ที่ใช้ที่สอดคล้องกัน
ประเภทข้อมูล | ความสัมพันธ์กัน |
---|---|
|
จำนวนเต็ม |
|
TEXT |
|
ไม่มี |
|
จริง |
|
NUMERIC |
ประเภทข้อมูลบูลีน
SQLite ไม่มีคลาสหน่วยเก็บข้อมูลบูลีนแยกต่างหาก แต่ค่าบูลีนจะถูกเก็บเป็นจำนวนเต็ม 0 (เท็จ) และ 1 (จริง)
ประเภทข้อมูลวันที่และเวลา
SQLite ไม่มีคลาสพื้นที่จัดเก็บแยกต่างหากสำหรับจัดเก็บวันที่และ / หรือเวลา แต่ SQLite สามารถจัดเก็บวันที่และเวลาเป็นค่า TEXT, REAL หรือ INTEGER
ซีเนียร์ | คลาสการจัดเก็บและรูปแบบวันที่ |
---|---|
1 | TEXT วันที่ในรูปแบบเช่น "YYYY-MM-DD HH: MM: SS.SSS" |
2 | REAL จำนวนวันนับตั้งแต่เที่ยงในกรีนิชวันที่ 24 พฤศจิกายน 4714 ปีก่อนคริสตกาล |
3 | INTEGER จำนวนวินาทีตั้งแต่ 1970-01-01 00:00:00 UTC |
คุณสามารถเลือกจัดเก็บวันที่และเวลาในรูปแบบเหล่านี้และแปลงระหว่างรูปแบบได้อย่างอิสระโดยใช้ฟังก์ชันวันที่และเวลาในตัว