Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

ลำดับใน SQL Server

ลำดับ คือชุดของจำนวนเต็มที่เรียงตามลำดับ ลำดับมักใช้ในฐานข้อมูลเนื่องจากการตอบสนองความต้องการของแอปพลิเคชันจำนวนมากคือการกำหนดให้แต่ละแถวในตารางมีค่าที่ไม่ซ้ำกันซึ่งคล้ายกับคีย์หลัก

บทความนี้จะให้ตัวอย่างไวยากรณ์และตัวอย่างวิธีสร้างและลบลำดับใน SQL Server

สร้างลำดับ (สร้างลำดับ)

ไวยากรณ์

ในการสร้างลำดับ เรามีรูปแบบดังนี้:

 CREATE SEQUENCE [สคีมา] Sequence_name 
[AS datatype]
[START WITH value]
[INCREMENT BY value]
[MINVALUE value | ไม่มีค่าต่ำสุด]
[ค่าสูงสุด | ไม่มีค่าสูงสุด]
[รอบ | ไม่มีวงจร]
[ค่าแคช | ไม่มีแคช];

พารามิเตอร์:

  1. ประเภทข้อมูล AS: สามารถเป็นประเภท BIGINT, INT, TINYINT, SMALLINT, DECIMAL หรือ NUMERIC ได้ หากคุณไม่ระบุประเภทเฉพาะ โปรแกรมจะมีค่าเริ่มต้นเป็นประเภทข้อมูลของคุณในรูปแบบ BIGINT
  2. เริ่มต้นด้วยค่า: ค่าที่ลำดับส่งคืน
  3. เพิ่มขึ้นตามมูลค่า :ลำดับกฎเกณฑ์สำหรับการเพิ่ม/ลดลำดับซึ่งอาจเป็นค่าบวกหรือค่าลบ ถ้าค่านี้เป็นค่าบวก ลำดับจะเป็นลำดับของค่าที่เพิ่มขึ้น ตรงกันข้ามเป็นลบ ลำดับจะลดลง
  4. ค่า MINVALUE :ค่าที่น้อยที่สุดในสตริง
  5. ไม่มีค่าต่ำสุด :อย่าระบุค่าต่ำสุด
  6. ค่า MAXVALUE :ค่าสูงสุดในสตริง
  7. ไม่มีค่าสูงสุด :ไม่ระบุค่าสูงสุด
  8. วงจร :ลำดับจะเริ่มตั้งแต่ต้นเมื่อลำดับเสร็จสมบูรณ์
  9. ไม่มีวงจร :ลำดับจะล้มเหลวเมื่อสิ้นสุดสตริง และจะไม่เริ่มอีกครั้งเมื่อเสร็จสิ้น
  10. ค่าแคช: บันทึกในแคช (แคช) เพื่อลด IO ของดิสก์
  11. ไม่มีแคช: อย่าบันทึกในแคช

ตัวอย่าง

 สร้างลำดับรายชื่อผู้ติดต่อ_seq 
AS BIGINT
เริ่มต้นด้วย 1
เพิ่มขึ้น 1
MINVALUE 1
MAXVALUE 99999
ไม่มีวงจร
แคช 10;

ที่นี่ เราได้สร้างลำดับชื่อ contacts_seq โดยเริ่มจากค่า 1 แต่ละค่าต่อไปนี้จะเพิ่มขึ้นหนึ่งหน่วย (เช่น 2, 3, 4 .) สตริงจะเก็บประมาณ 10 ค่าลงในแคช ค่าสูงสุดในลำดับคือ 99999 และจะไม่เริ่มสตริงใหม่หลังจากลำดับสิ้นสุดที่ค่าที่มากที่สุด

คุณยังสามารถรันคำสั่งด้านบนได้ง่ายๆ ดังนี้:

 สร้างลำดับรายชื่อผู้ติดต่อ_seq 
เริ่มต้นด้วย 1
เพิ่มขึ้น 1;

ดังนั้น ตอนนี้ คุณได้สร้างลำดับที่จำลองฟิลด์ autonumber แล้ว ต่อไป ในการเอาท์พุตค่าจากลำดับนี้ เราใช้ NEXT VALUE FOR คำสั่ง

 เลือกค่าถัดไปสำหรับรายชื่อผู้ติดต่อ_seq; 

คำสั่งนี้จะดึงค่าถัดไปจาก contacts_seq. จากนั้นใช้คำสั่งที่จำเป็นสำหรับการดำเนินการของคุณ ตัวอย่างเช่น:

 INSERT INTO ผู้ติดต่อ 
(contact_id, last_name)
VALUES
(NEXT VALUE สำหรับรายชื่อผู้ติดต่อ_seq, 'Smith');

คำสั่ง INSERT นี้จะแทรกระเบียนใหม่ลงในตารางที่ติดต่อ contact_id ฟิลด์จะได้รับหมายเลขถัดไปจาก contacts_seq last_name ฟิลด์จะเป็น 'Smith'

DROP SEQUENCE (ลบลำดับ)

เมื่อสร้างลำดับแล้ว จะมีบางกรณีที่คุณต้องการลบลำดับออกจากฐานข้อมูลด้วยเหตุผลหลายประการ

ไวยากรณ์

หากต้องการลบลำดับ เรามีรูปแบบดังนี้:

 DROP SEQUEENCE sequence_name; 

พารามิเตอร์:

sequence_name: ชื่อลำดับที่คุณต้องการลบ

ตัวอย่าง

<ก่อนหน้า> DROP SEQUEENCE contacts_seq;

การดำเนินการคำสั่งนี้แสดงว่าคุณเพิ่งลบ contacts_seq สตริงจากฐานข้อมูล

คุณสมบัติของลำดับ

เพื่อทดสอบคุณสมบัติของลำดับ เรามีรูปแบบดังนี้:

เลือก * จาก sys.sequences โดยที่ name =' sequence_name';

พารามิเตอร์:

sequence_name:The ชื่อของสตริงที่จะทดสอบคุณสมบัติ

ตัวอย่าง

 SELECT * 
จาก sys.sequences
โดยที่ชื่อ ='contacts_seq';

ตัวอย่างนี้สอบถามข้อมูลจาก sys.sequences ระบบและดึงผลลัพธ์สำหรับ contacts_seq สตริง .

Sys.sequences ระบบประกอบด้วยคอลัมน์ต่อไปนี้:

คอลเลกชัน หมายเหตุ ชื่อของลำดับที่สร้างในคำสั่ง CREATE SEQUENCE object_id ID ของอ็อบเจ็กต์ principal_id ของหลักการ ID ของลำดับ (ค่าตัวเลข) schema_id Schema ID ของลำดับ parent_object_id ID ของประเภทอ็อบเจ็กต์หลัก SO type_desc SEQUENCE_OBJECT create_date วันที่ / เวลาที่สร้างลำดับด้วย CREATE SEQUENCE คำสั่ง modified_date วันที่ / เวลาของลำดับการแก้ไขล่าสุด is_ms_shipped ค่า 0 หรือ 1 is_published Value 0 หรือ 1 is_schema_published Value 0 หรือ 1 start_value ค่าเริ่มต้นของลำดับที่เพิ่มขึ้น ค่ากฎของลำดับเพิ่มขึ้น / ลด maximum_value ค่าต่ำสุดในสตริง maximum_value ค่าสูงสุดในสตริง is_cycling 0 หรือ 1 0 =NO CYCLE, 1 =CYCLE is_cached ค่า 0 หรือ 1, 0 =NO CACHE, 1 =CACHE cache_size บัฟเฟอร์ขนาดหน่วยความจำเมื่อ is_cached =1 system_type_id ID ระบบของลำดับ user_type_id ID กังวลที่ลำดับ ความแม่นยำของผู้ใช้ ความแม่นยำสูงสุดของข้อมูล ประเภทของมาตราส่วนช่วงสูงสุดสำหรับลำดับของลำดับ current_value ค่าสุดท้ายที่ดึงมาจากลำดับ is_exhausted Value 0 หรือ 1 0 =หลายค่าตามลำดับ 1 =ไม่มีค่า