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