Skip to content

ประเภทข้อมูลของ PostgreSQL อธิบาย

ประเภทข้อมูลคอลัมน์ที่พบบ่อยทั้งหมดของ PostgreSQL จัดกลุ่มตามตระกูล: จำนวนเต็ม เลขทศนิยม ข้อความ เวลา บูลีนและ UUID, JSON, ที่อยู่เครือข่าย ประเภทแบบรวม และประเภทจากส่วนขยาย แต่ละแถวแสดงว่าประเภทนั้นเก็บอะไร และควรเลือกใช้เมื่อใด

PostgreSQL มีประเภทข้อมูลหลายสิบแบบ แต่การออกแบบสคีมาในงานประจำวันใช้แค่ชุดหลัก ทางเลือกที่พบซ้ำคือ: integer หรือ numeric สำหรับตัวเลข, varchar หรือ text สำหรับสตริง (โดยทั่วไป text ก็เพียงพอ), timestamp หรือ timestamptz (ข้อมูลโลกจริงให้เลือก timestamptz) และ json หรือ jsonb (เลือก jsonb เพราะเป็นไบนารีและสร้างอินเด็กซ์ได้) เลือกประเภทที่เฉพาะเจาะจงที่สุดเท่าที่ยังเหมาะกับงาน ฐานข้อมูลจะบังคับใช้ให้คุณเอง

ตารางอ้างอิง · 46 รายการ
46 of 46 rows
จำนวนเต็ม
จำนวนเต็มขนาด 2 ไบต์ ตั้งแต่ -32768 ถึง 32767ใช้ไม่บ่อย เฉพาะเมื่อจำเป็นต้องประหยัดพื้นที่
จำนวนเต็มขนาด 4 ไบต์ ประมาณบวก/ลบ 2 พันล้านคอลัมน์จำนวนเต็มตั้งต้น
จำนวนเต็มขนาด 8 ไบต์ ประมาณบวก/ลบ 9 ล้านล้านล้านตัวนับขนาดใหญ่มาก หรือไอดีจากระบบภายนอก
จำนวนเต็มขนาด 4 ไบต์ที่เพิ่มค่าอัตโนมัติคีย์เลขลำดับอัตโนมัติแบบเดิม ตั้งแต่ PG 10 แนะนำให้ใช้ GENERATED AS IDENTITY แทน
รูปแบบขนาด 2 ไบต์และ 8 ไบต์ของ serialการนับเลขอัตโนมัติที่สอดคล้องกับคอลัมน์ smallint หรือ bigint
จำนวนเต็มที่ตารางสร้างให้อัตโนมัติ (GENERATED ALWAYS AS IDENTITY)serial ยุคใหม่ เป็นมาตรฐาน SQL และปลอดภัยกว่าจากการแทรกค่าเอง
ทศนิยมและเลขทศนิยมลอยตัว
ทศนิยมแบบแม่นยำ ความละเอียดไม่จำกัดเงิน และงานที่ยอมรับความคลาดเคลื่อนจากการปัดเศษไม่ได้
เลขทศนิยมลอยตัวความละเอียดเดี่ยวขนาด 4 ไบต์ค่าเชิงวิทยาศาสตร์แบบโดยประมาณที่ความแม่นยำไม่ใช่ประเด็นสำคัญ
เลขทศนิยมลอยตัวความละเอียดสองเท่าขนาด 8 ไบต์ค่าเชิงภูมิศาสตร์ สถิติ และฟีเจอร์ของ ML
จำนวนเงินพร้อมโลเคลที่กำหนดตายตัวใช้ไม่บ่อย numeric ที่มีรหัสสกุลเงินฝั่งแอปพกพากว่า
ข้อความ
ข้อความความยาวคงที่ เติมช่องว่างให้เต็มโค้ดที่มีความกว้างแน่นอน แทบไม่จำเป็นต้องใช้
ข้อความความยาวผันแปร พร้อมขีดจำกัดที่กำหนดหรือไม่ก็ได้สตริงที่มีขอบเขต เช่น ชื่อผู้ใช้หรืออีเมล
ข้อความความยาวผันแปรไม่จำกัดความยาวคอลัมน์สตริงใช้งานทั่วไป ไม่มีโทษด้านประสิทธิภาพเทียบกับ varchar
เวลา
วันในปฏิทินโดยไม่มีเวลาของวันวันเกิดและวันครบกำหนด
เวลาของวัน มีหรือไม่มีเขตเวลาการแจ้งเตือนรายวันหรือเวลาทำการของร้าน
วันที่และเวลาโดยไม่มีเขตเวลาสคีมาแบบเดิม หลีกเลี่ยงสำหรับงานใหม่
วันที่และเวลาที่เก็บแบบ UTC แสดงผลตามเขตเวลาของไคลเอนต์ค่าเริ่มต้นสำหรับช่วงเวลาในโลกจริงทุกกรณี เลือกแทน timestamp
ช่วงระยะเวลา เช่น 2 วันหรือ 3 ชั่วโมงระยะเวลา และการคำนวณวันที่
บูลีน, UUID และไบต์
จริงหรือเท็จแฟล็กและสวิตช์เปิด/ปิด
ตัวระบุเฉพาะในระดับสากลขนาด 128 บิตไอดีที่ไม่เรียงตามลำดับและเปิดเผยได้อย่างปลอดภัย (สร้างในแอปหรือด้วย gen_random_uuid)
ไบต์ไบนารีดิบบล็อบ รูปภาพ และข้อมูลแบบทึบ ไฟล์ขนาดใหญ่ควรใช้ object storage
สตริงของบิตแบบความยาวคงที่หรือผันแปรแฟล็กแบบแพ็กและฟิลด์ของโปรโตคอล ค่าเปิด/ปิดเดี่ยวยังควรใช้ boolean
JSON และข้อมูลกึ่งมีโครงสร้าง
JSON ที่แยกวิเคราะห์เป็นรูปแบบไบนารีและสร้างอินเด็กซ์ได้ข้อมูลยืดหยุ่นหรือซ้อนโครงสร้าง เป็นคอลัมน์ JSON ที่แนะนำ (รองรับอินเด็กซ์ GIN)
JSON ที่เก็บเป็นข้อความต้นฉบับใช้ไม่บ่อย เฉพาะเมื่อต้องรักษาลำดับคีย์หรือช่องว่างต้นฉบับ
ข้อความ XMLการเชื่อมต่อระบบเดิมที่ต้องใช้ XML
นิพจน์พาธที่คอมไพล์แล้วสำหรับนำทางข้อมูล JSONการกรองใน jsonb ด้วย jsonb_path_query และโอเปอเรเตอร์ SQL/JSON
เครือข่ายและการค้นหา
ที่อยู่โฮสต์ IPv4 หรือ IPv6เก็บ IP ของไคลเอนต์หรือเซิร์ฟเวอร์
บล็อกเครือข่าย IP เช่น 10.0.0.0/24กฎไฟร์วอลล์และช่วงของซับเน็ต
ที่อยู่ MAC ขนาด 6 ไบต์หรือ 8 ไบต์ (EUI-64)ตัวระบุอุปกรณ์และอินเทอร์เฟซเครือข่าย
ข้อความที่ประมวลผลล่วงหน้าสำหรับการค้นหาเต็มข้อความการค้นหาในตัวของ Postgres ก่อนหันไปใช้เสิร์ชเอนจินแยกต่างหาก
คำค้นที่รวมกันด้วยโอเปอเรเตอร์ AND, OR และ prefixส่วนคำค้นของการค้นหาเต็มข้อความ จับคู่กับ tsvector ด้วย @@
ตำแหน่งใน write-ahead log คือเลขลำดับของล็อกการเฝ้าดูความล่าช้าของการจำลองข้อมูลและการสำรองข้อมูล
แบบรวมและขั้นสูง
อาร์เรย์ของประเภทฐานใดก็ได้ เช่น integer[]รายการค่าอย่างง่าย ถ้าสมาชิกต้องมีคอลัมน์ของตัวเอง ให้ใช้ตารางลูก
หนึ่งค่าจากรายการคงที่ที่คุณกำหนดฟิลด์สถานะที่มีชุดตัวเลือกคงที่
ประเภทแถวแบบกำหนดเอง ประกอบด้วยหลายฟิลด์กลุ่มฟิลด์ที่ซ้ำกันและใช้ร่วมกันหลายตาราง
ช่วงต่อเนื่องระหว่างขอบเขตสองค่าตารางเวลา ช่วงราคา และช่วงของเวอร์ชัน พร้อมโอเปอเรเตอร์ overlap
ประเภทฐานที่ห่อด้วยข้อจำกัดที่คุณกำหนดกฎที่ใช้ซ้ำได้ เช่น อีเมลไม่ว่าง บังคับใช้กับทุกคอลัมน์ที่นำไปใช้
แถวไม่มีชื่อของค่าที่มีประเภทกำกับค่าที่ฟังก์ชัน PL/pgSQL คืน และผลลัพธ์คิวรีขั้นกลาง
ค่าเรขาคณิตสองมิติในตัวเรขาคณิตระนาบอย่างง่าย ตำแหน่งจริงในโลกต้องใช้ PostGIS
ตัวระบุอ็อบเจกต์ระบบขนาด 4 ไบต์แบบไม่มีเครื่องหมายเชื่อมต่อตารางแคตตาล็อกของระบบ ไม่ใช่สำหรับคอลัมน์ของแอปพลิเคชัน
สตริงตัวระบุภายในความยาว 63 อักขระคิวรีแคตตาล็อก ข้อมูลที่ผู้ใช้เห็นให้ใช้ text ปกติ
ประเภทจากส่วนขยาย
คู่คีย์/ค่าสตริงในค่าเดียว (ส่วนขยาย)แมปแบบแบน ปัจจุบัน jsonb ทำหน้าที่นี้ได้ดีกว่า
พาธป้ายกำกับแบบลำดับชั้น เช่น news.tech.ai (ส่วนขยาย)โครงสร้างต้นไม้ พร้อมคิวรีบรรพบุรุษและลูกหลาน
ข้อความที่เปรียบเทียบโดยไม่สนใจตัวพิมพ์เล็ก/ใหญ่ (ส่วนขยาย)ความไม่ซ้ำแบบไม่สนตัวพิมพ์ เช่น อีเมล โดยไม่ต้องมีอินเด็กซ์ lower()
อ็อบเจกต์ภูมิศาสตร์และเรขาคณิตจากส่วนขยาย PostGISคิวรีระยะทาง การครอบคลุม และอินเด็กซ์เชิงพื้นที่
ฟังก์ชันจากส่วนขยายที่สร้างค่า UUIDการสร้างแบบเดิม ตั้งแต่ PG 13 มี gen_random_uuid() ในตัวแล้ว