ประเภทตัวระบุเฉพาะของเซิร์ฟเวอร์ SQL
นี่คือค่า GUID ขนาด 16 ไบต์ที่ใช้ในคอลัมน์หรือตัวแปรภายในเครื่อง คุณสามารถสร้างค่าประเภทตัวระบุที่ไม่ซ้ำกันได้โดยใช้ฟังก์ชัน NEWID() และ NEWSEQUENTIALID()
คุณยังสามารถสร้างค่า GUID ได้ด้วยการแปลงค่าสตริงในรูปแบบ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx โดยที่ x เป็นเลขฐานสิบหกในช่วง 0 – 9
เนื่องจาก 'ความสุ่ม' ของค่า GUID จึงรับประกันได้ว่าค่า GUID จะไม่ซ้ำกันในฐานข้อมูลหรือแม้แต่เซิร์ฟเวอร์ สิ่งนี้ทำให้เป็นประเภทข้อมูลที่ยอดเยี่ยมสำหรับการระบุค่าที่กำหนดโดยเฉพาะ
ฟังก์ชัน SQL Server NEWID()
ฟังก์ชัน NEWID() ช่วยให้เราสามารถสร้างค่าเฉพาะใหม่ของประเภทตัวระบุที่ไม่ซ้ำได้ ไวยากรณ์เป็นดังนี้:
เปลี่ยน ( )
ตัวอย่างเช่น:
ประกาศ @gid uniqueidentifier;
ตั้ง @gid = เปลี่ยน ();
เลือก @gid เป็น gid;
ข้อความข้างต้นควรส่งคืนค่า GUID เป็น:
กิด873412E2-A926-4EAB-B99F-A1E47E727355
ฟังก์ชัน NEWSEQUENTIALID() ของเซิร์ฟเวอร์ SQL
ฟังก์ชันนี้ช่วยให้คุณสร้างค่า GUID ที่ไม่ซ้ำกันได้ตามลำดับ ทำงานโดยสร้างค่า GUID ที่มากกว่า GUID ที่สร้างไว้ก่อนหน้านี้
สิ่งนี้ทำให้มีประโยชน์ในการใช้เป็นตัวระบุแถว เนื่องจากจะสร้างค่าตามลำดับแทนที่จะกำหนดค่า GUID ถัดไปด้วยตนเองโดยใช้ฟังก์ชัน NEWID()
ไวยากรณ์ของฟังก์ชันมีดังต่อไปนี้:
ใหม่ลำดับเหตุการณ์ ( )ใช้ GUID ของเซิร์ฟเวอร์ SQL เป็นตัวระบุแถว
ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชัน newsequentialid() เป็นตัวระบุแถวสำหรับคอลัมน์ที่กำหนด
สร้างรายการตาราง (id uniqueidentifier ไม่ใช่คีย์หลัก newsequentialid() เริ่มต้นที่เป็น null
server_name varchar (50),
server_address varchar(255) ไม่เป็นโมฆะ
compression_method varchar(100) เริ่มต้น 'ไม่มี'
size_on_disk ลอยไม่เป็นโมฆะ
size_compressed ลอย
total_records int ไม่เป็นโมฆะ
วันที่ init_date
);
แทรก
เข้าไปข้างใน
รายการ (server_name,
ที่อยู่เซิฟเวอร์,
วิธีการบีบอัด
size_on_disk,
size_compressed,
total_records,
init_date)
ค่า
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000 ,'2022-11-11'),
('ค้นหาแบบยืดหยุ่น','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');
ในตัวอย่างข้างต้น เราตั้งค่าคอลัมน์ ID เป็นประเภทตัวระบุที่ไม่ซ้ำกัน และค่าเริ่มต้นเป็นค่าที่สร้างโดยฟังก์ชัน newsequentialid()
ตารางผลลัพธ์จะแสดงดังนี้:
เลือก * จากรายการ;เอาท์พุต:
แม้ว่าการใช้ค่า GUID จะให้ค่าเฉพาะที่เข้มงวด แต่การดีบักหรือเลือกค่าเฉพาะอาจทำได้ยาก
บทสรุป
ในคู่มือนี้ คุณได้เรียนรู้เกี่ยวกับประเภทตัวระบุเฉพาะใน SQL Server คุณยังได้เรียนรู้วิธีสร้างค่า GUID โดยใช้ฟังก์ชัน NEWID() และ NEWSEQUENTIALID()