Transact-SQL – การเปลี่ยนแปลงและการรวบรวมข้อมูล

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

จากนั้นวัสดุนี้จะถูกผูกมัดจนกว่าจะมีการใช้งาน สำหรับซังนั้น แบบสอบถาม SQL สำหรับข้อมูลเพิ่มเติมรายการใหม่:

มีโต๊ะ

INSERT INTO ผู้ใช้ (เข้าสู่ระบบ, ผ่าน) ค่า ("TestUser", "123456") เมื่อคุณเพิ่มบันทึกคำสั่งจะทำงานทันทีใส่เข้าไป "แล้วชื่อของตารางที่แทรกบันทึก ต่อไปไปที่แขนกลม และตั้งชื่อเขตข้อมูลที่คุณต้องการกรอก จากนั้นไปที่แขนกลมหลังคำว่า "ค่านิยม

เรากำลังเริ่มประเมินค่าสูงเกินไปของฟิลด์ที่เราเลือก หลังจากรายการนี้ รายการใหม่จะปรากฏในตารางของเรา จำเป็นต้องมีไอโหนดอัพเดตรายการตาราง ซึ่งการรุกเป็นสิ่งสำคัญ:

แบบสอบถาม SQL

อัปเดตผู้ใช้ ตั้งค่าล็อกอิน = "TestUser2", pass = "1234560" WHERE เข้าสู่ระบบ = "TestUser" สามารถพับเก็บได้มากขึ้นเนื่องจากการออกแบบที่ไหน “ขอนอกเรื่องเธอหน่อยแล้วไปกันทีม”อัปเดต " แล้วตามด้วยชื่อตาราง และหลัง "ชุด เราอธิบายค่าของฟิลด์ทั้งหมดที่เราต้องการเปลี่ยนแปลง หากทุกอย่างเรียบง่ายแต่อาหารหยุดลง:และคุณควรติดตามบันทึกประเภทใด? สามารถพับเก็บได้มากขึ้นเนื่องจากการออกแบบ“มันจำเป็นสำหรับใคร” ". ในถึงผู้ชายคนนี้ เรากำลังอัปเดตบันทึกฟิลด์ "เข้าสู่ระบบ “มีความหมายอะไร”ผู้ใช้ทดสอบ โปรดทราบว่าหากมีบันทึกดังกล่าวเพียงไม่กี่รายการแล้วทุกอย่างจะได้รับการอัปเดตอย่างแน่นอน

- สิ่งสำคัญมากคือต้องเข้าใจ ไม่เช่นนั้น คุณเสี่ยงที่จะเสียโต๊ะ สามารถพับเก็บได้มากขึ้นเนื่องจากการออกแบบมาพูดคุยกันอีกหน่อยเกี่ยวกับ " นอกเหนือจากการตรวจสอบความเท่าเทียมกันแบบง่ายๆ แล้ว ยังมีความไม่เท่าเทียมกันบางประการ รวมถึงการดำเนินการเชิงตรรกะด้วย:і และ.

หรือ< 15 AND login="TestUser"

อัปเดตผู้ใช้ SET เข้าสู่ระบบ = TestUser2, pass = 1234560 WHERE id ซึ่งการรุกเป็นสิ่งสำคัญเดนมาร์ก อัปเดตบันทึกเหล่านั้นรหัส 15 Іมีน้อยกว่านั้น เรากำลังอัปเดตบันทึกฟิลด์ "สนาม " “มีความหมายอะไร”"อาจจะสำคัญ" สามารถพับเก็บได้มากขึ้นเนื่องจากการออกแบบ“ฉันหวังว่าคุณจะเข้าใจการออกแบบนี้” สามารถพับเก็บได้มากขึ้นเนื่องจากการออกแบบ“นั่นสำคัญกว่าอีกเหมือนกัน” “วิโคริสที่การเลือกบันทึกจากตาราง

และนี่คือปัญหาที่มักพบบ่อยที่สุดเมื่อทำงานกับฐานข้อมูล ในที่สุดฉันก็เรียบง่าย:

แบบสอบถาม SQL สำหรับบันทึกที่เลือกจากตาราง

ลบจากผู้ใช้โดยที่ล็อกอิน = "TestUser2" หลังจากคำสั่ง "ลบจาก สามารถพับเก็บได้มากขึ้นเนื่องจากการออกแบบ"คุณร้องเพลงได้ ไม่ว่าจะเป็นความสามารถพิเศษของพวกเขาก็ตาม

มุมมองของรายการที่ถูกลบ

หากต้องการลบระเบียนออกจากตาราง ให้ใช้คำสั่ง DELETE:

ลบจากชื่อตาราง WHERE ใจ;

ตัวดำเนินการนี้จะลบบันทึกออกจากตารางที่กำหนด (และไม่ใช่นอกค่าคอลัมน์) ที่แสดงถึงคุณค่าของจิตใจ

Umova เป็นการแสดงออกเชิงตรรกะทั้งหมดซึ่งมีการตรวจสอบการออกแบบต่างๆในการศึกษาในห้องปฏิบัติการก่อนหน้านี้

แบบสอบถามถัดไปจะแสดงบันทึกจากตารางลูกค้า โดยที่ค่าของคอลัมน์ LName เท่ากับ "Ivaniv":

ลบจากลูกค้า

โดยที่ LName = "Ivaniv"

หากตารางมีข้อมูลเกี่ยวกับไคลเอนต์หลายรายที่มีชื่อเล่นว่า Ivanov ลูกค้าทั้งหมดจะถูกลบ

แบบสอบถามถัดไปจะแสดงบันทึกจากตารางลูกค้า โดยที่ค่าของคอลัมน์ LName เท่ากับ "Ivaniv":

ในคำสั่ง WHERE คุณสามารถใช้สำหรับการเลือกข้อมูล (คำสั่ง SELECT)

การเพิ่มเติมในคำสั่ง DELETE ทำงานในลักษณะเดียวกับในคำสั่ง SELECT

แบบสอบถามถัดไปจะแสดงบันทึกจากตารางลูกค้า โดยที่ค่าของคอลัมน์ LName เท่ากับ "Ivaniv":

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

WHERE IdCity IN (เลือก IdCity จากเมือง WHERE CityName = "Moscow")

Transact-SQL ขยาย SQL มาตรฐานโดยอนุญาตให้คุณเพิ่มส่วนคำสั่ง FROM อื่นลงในคำสั่ง DELETE

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

ส่วนขยายนี้ ซึ่งมีการระบุการรวม สามารถใช้แทนส่วนคำสั่งที่ซ้อนกันในส่วนคำสั่ง WHERE เพื่อแทรกแถวที่กำลังถูกลบ

ช่วยให้คุณสามารถระบุข้อมูลจาก FROM อื่นและลบแถวรองออกจากตารางจาก FROM แรก Zokrema แถวหน้าสามารถคัดลอกในลักษณะนี้ได้จากลูกค้า k เข้าร่วมภายใน

การดำเนินการลบบันทึกออกจากตารางไม่ปลอดภัย เนื่องจากมีความเกี่ยวข้องกับความเสี่ยงของการสูญเสียข้อมูลที่ไม่สามารถเพิกถอนได้เนื่องจากข้อผิดพลาดทางความหมาย (แทนที่จะเป็นทางวากยสัมพันธ์) ในระหว่างการสร้างไวรัส SQL

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

เลือก * “ขอนอกเรื่องเธอหน่อยแล้วไปกันทีม”เมือง c ON k.IdCity = c.IdCity และ c.CityName = "มอสโก"

“ขอนอกเรื่องเธอหน่อยแล้วไปกันทีม”<имя таблицы>
SET (image = (แบบฟอร์มคำนวณมูลค่ารายการ
- โมฆะ
- ค่าเริ่มต้น),...)
[(ที่ไหน<предикат>}];

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

สำหรับความเฉพาะเจาะจงของข้อเสนอ แถวทั้งหมดของตารางจะได้รับการอัปเดตเนื่องจากโดยทั่วไปจะอนุญาตให้มีค่า NULL จึงสามารถระบุได้อย่างชัดเจน

นอกจากนี้ คุณสามารถแทนที่ค่าด้วยค่าสำหรับการคำนวณ ( ค่าเริ่มต้นі ) สำหรับรายการนี้แน่นอนว่าเหมือนกับข้อมูลของ stovptsiv ความละเอียดสูง.

แกะ พวกเขาบ้าสำหรับประเภทที่กำหนด คุณสามารถใช้แบบฟอร์มต่อไปนี้: หล่อหากคุณต้องการเปลี่ยนแปลงข้อมูลอย่างระมัดระวังแทนขั้นตอนใดๆ คุณสามารถติดต่อเราได้อย่างรวดเร็ว

กรณี - ให้เราบอกว่ามีข้อกำหนดที่จะใส่ฮาร์ดดิสก์ ด้วยปริมาณ 20 GB บนโน้ตบุ๊กพีซีที่มีหน่วยความจำน้อยกว่า 128 MB และ 40 GB บนโน้ตแพดพีซีอื่น ๆ จากนั้นคุณสามารถเขียนคำสั่งต่อไปนี้:จำเป็นต้องพูดสองสามคำเกี่ยวกับรายการที่เพิ่มอัตโนมัติ Yakshcho stovpetsรหัส

ในตาราง - ให้เราบอกว่ามีข้อกำหนดที่จะใส่แล็ปท็อป

กำหนดให้เป็น “ขอนอกเรื่องเธอหน่อยแล้วไปกันทีม”ตัวตน(1,1) จากนั้นผู้ดำเนินการฝ่ายรุกแน่นอนว่ายังมีค่านิยมอีกชุดหนึ่ง

=5 โต๊ะไม่ถูกตำหนิ ตัวดำเนินการ Transact-SQL ขยายมาตรฐานสำหรับกรอบการทำงานของ vikoristan ของข้อเสนอที่ไม่ใช่ภาษาจาก - ข้อเสนอนี้ระบุตารางที่ให้เกณฑ์สำหรับการดำเนินการอัพเดต ความยืดหยุ่นเพิ่มเติมนี้มาจากการทำงานของโต๊ะร่วมก้น

- กรุณาระบุ "ไม่มีเครื่องคอมพิวเตอร์" ที่สถานี

เลือก * พิมพ์สำหรับพีซีรุ่นเหล่านี้จากตาราง

หลังจากคำสั่ง "<имя таблицы > ;

ผลิตภัณฑ์ สามารถพับเก็บได้มากขึ้นเนื่องจากการออกแบบพีซี

- วิธีแก้ปัญหาสำหรับตารางนี้สามารถเขียนได้ดังนี้: คำสั่งลบลบ พิมพ์ลบแถวออกจากตารางฐาน จอแสดงผล หรือเคอร์เซอร์ตามเวลาหรือถาวร และในสองประเภทที่เหลือ งานของผู้ปฏิบัติงานจะถูกขยายบนตารางฐาน ซึ่งข้อมูลจะรวมอยู่ในจอแสดงผลหรือเคอร์เซอร์

ตัวดำเนินการระยะไกลมีไวยากรณ์ง่ายๆ:
ข้อเสนอคืออะไร?
ทุกวัน แถวทั้งหมดจากตารางหรือลักษณะที่ปรากฏจะถูกลบออก (วันที่อาจได้รับการอัปเดต) การดำเนินการนี้ (การลบแถวทั้งหมดออกจากตาราง) Transact-SQL สามารถทำได้โดยใช้คำสั่งเพิ่มเติมการป้องกันเป็นการใช้ความพยายามเพียงเล็กน้อยในการดำเนินการตามคำสั่ง ตัดทอนตารางตามข้อกำหนดของผู้ปฏิบัติงาน
4. ความสำคัญของแพทย์ ( ตัวตน) มีส่วนลดตามมูลค่าซัง

=5 โต๊ะไม่ถูกตำหนิ - จำเป็นต้องลบออกจากตาราง ด้วยปริมาณ 20 GB บนโน้ตบุ๊กพีซีที่มีหน่วยความจำน้อยกว่า 128 MB และ 40 GB บนโน้ตแพดพีซีอื่น ๆ จากนั้นคุณสามารถเขียนคำสั่งต่อไปนี้:โน้ตบุ๊กพีซีทั้งหมดที่มีขนาดหน้าจอน้อยกว่า 12 นิ้ว

TRUNCATE โต๊ะแล็ปท็อป

Transact-SQL ขยายไวยากรณ์คำสั่ง พิมพ์ขอแนะนำข้อเสนอเพิ่มเติม จากนั้นผู้ดำเนินการฝ่ายรุก

จากนั้นผู้ดำเนินการฝ่ายรุก<источник табличного типа>

เพื่อขอความช่วยเหลือต่อไป ประเภทตาราง Dzherelaสามารถระบุข้อมูลที่ปรากฏในตารางในย่อหน้าแรกได้ จากนั้นผู้ดำเนินการฝ่ายรุก.

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

เรามาอธิบายสิ่งที่พูดพร้อมตัวอย่างกันดีกว่า - ข้อเสนอนี้ระบุตารางที่ให้เกณฑ์สำหรับการดำเนินการอัพเดตโปรดอย่าลังเลที่จะลบรุ่นพีซีเหล่านี้ออกจากตาราง ความยืดหยุ่นเพิ่มเติมนี้มาจากการทำงานของโต๊ะร่วม.

ซึ่งไม่มีแถวเฉพาะเจาะจงในตาราง

ในไวยากรณ์มาตรฐานของ Vikorist สามารถเขียนได้ดังนี้: การเชื่อมต่อภายนอกเข้ามามีบทบาทที่นี่ด้วยเหตุนี้พีซีโมเดล ความยืดหยุ่นเพิ่มเติมนี้มาจากการทำงานของโต๊ะร่วมสำหรับพีซีรุ่นต่างๆ ในตาราง

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

ใช้เครื่องมือเพื่อเปลี่ยนแถวของตาราง คำสั่งนี้ใช้รูปแบบที่เป็นทางการดังต่อไปนี้:แถวของตาราง tab_name ถูกเลือกสำหรับการเปลี่ยนแปลงโดยขึ้นอยู่กับส่วนคำสั่ง WHERE

ความสำคัญของสภาพผิวที่ต้องปรับเปลี่ยน เปลี่ยนแปลง เพื่อช่วย

ข้อเสนอ ตลท

คำสั่ง UPDATE ซึ่งจัดหาตัวแปรหรือค่าคงที่ให้กับอนุประโยคย่อย

เนื่องจากมีคำสั่งย่อย WHERE อยู่ คำสั่ง UPDATE จะแก้ไขแถวทั้งหมดในตาราง

ด้วยคำสั่ง UPDATE เพิ่มเติม ข้อมูลจะสามารถแก้ไขได้ในตารางเดียวเท่านั้น

สอดคล้องกับคำถามนี้ สำหรับมหาวิทยาลัย Vershina Natalia ค่า NULL ถูกกำหนดให้กับโครงการทั้งหมด

แอปพลิเคชันนี้สามารถป้อนได้โดยใช้คำสั่งย่อยเพิ่มเติมจากคำสั่ง FROM UPDATE ส่วนคำสั่ง FROM ระบุชื่อตารางที่ถูกประมวลผลโดยคำสั่ง UPDATEตารางทั้งหมดนี้เคยเชื่อมต่อกันมาก่อน

คำจำกัดความของข้อเสนอ FROM แสดงอยู่ในตัวอย่างด้านล่าง

ตามเหตุผลแล้ว ก้นนี้เหมือนกับอันแรก:

ตัวอย่างด้านล่างแสดง vikoristannya

กรณีวิราซี

ในคำแนะนำ UPDATE

(รายงานเกี่ยวกับเงื่อนไขนี้ได้อธิบายไว้ก่อนหน้านี้) ในกรณีนี้ จำเป็นต้องเพิ่มงบประมาณของโครงการทั้งหมดเป็นจำนวนเล็กน้อย (20, 10 หรือ 5) ขึ้นอยู่กับงบประมาณผลผลิต: ยิ่งงบประมาณน้อยลง แล้วอาจมีเพิ่มขึ้นมากกว่า 100%:

ใช้ SampleDb;

อัปเดตงบประมาณชุดโครงการ = กรณีที่งบประมาณ > 0 และงบประมาณ 100000 และงบประมาณ

ลบคำสั่ง

คำสั่ง DELETE จะลบแถวในตาราง

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

    คำสั่ง TRUNCATE TABLE;

    คำสั่งผสาน;

    เอาท์พุทข้อเสนอ

คำแนะนำและข้อเสนอเหล่านี้มีให้เห็นในรุ่นต่อไป

คำสั่ง TRUNCATE TABLE

คำสั่ง TRUNCATE TABLEนี่คือเวอร์ชันล่าสุดของคำสั่ง DELETE ที่ไม่มีส่วนคำสั่ง WHERE

คำสั่งนี้จะลบแถวทั้งหมดของตารางด้านล่าง คำสั่ง DELETE อันล่างจะลบแฟรกเมนต์แทนทีละแถว ในขณะที่คำสั่ง DELETE จะทำงานเรียงกันเป็นแถว

คำสั่ง TRUNCATE TABLE เป็นส่วนขยายของมาตรฐาน Transact-SQL SQL

คุณลักษณะที่สำคัญอีกประการหนึ่งของคำสั่งนี้คือ รีเซ็ตดัชนีของคอลัมน์ที่ระบุกำลังการเพิ่ม IDENTITY อัตโนมัติ

คุณลักษณะที่สำคัญอีกประการหนึ่งของคำสั่งนี้คือ รีเซ็ตดัชนีของคอลัมน์ที่ระบุกำลังการเพิ่ม IDENTITY อัตโนมัติคำสั่ง TRUNCATE TABLE มีไวยากรณ์ดังต่อไปนี้:

ตัดทอนตาราง table_name คำแนะนำการรวมลำดับสุดท้ายของคำสั่ง INSERT, UPDATE และ DELETE ลงในคำสั่งพื้นฐานเดียวจำเป็นต้องเริ่มการบันทึก (แถว) กล่าวอีกนัยหนึ่งคุณสามารถซิงโครไนซ์สองตารางที่แตกต่างกันเพื่อแก้ไขค่าในตารางตามประเภทของรายการที่ระบุใน table-jerelพื้นที่หลักของแอปพลิเคชันสำหรับคำสั่ง MERGE คือกึ่งกลางของการรวบรวมข้อมูลซึ่งจะต้องรีเฟรชตารางเป็นระยะเพื่อแสดงข้อมูลใหม่ที่มาจาก

OLTP (On-Line Transaction Processing) ระบบประมวลผลธุรกรรม

- ข้อมูลนี้อาจมีการเปลี่ยนแปลงไปยังแถวอื่นๆ ในตารางหรือ

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

ในอีกกรณีหนึ่ง คำสั่ง INSERT จะสิ้นสุดลง

ผลลัพธ์ของการดำเนินการใดๆ ที่เกี่ยวข้องกับคำสั่งเฉพาะจะแสดงโดยใช้ข้อเสนอ OUTPUT ในตารางที่แทรกและลบ

นอกจากนี้ ในการเติมตาราง คุณต้องใช้นิพจน์ INTO ในบรรทัด OUTPUTดังนั้น เพื่อบันทึกผลลัพธ์ จึงมีการใช้การเปลี่ยนแปลงตาราง หยุดนิ่งจนกระทั่ง:ฐานข้อมูล SQL Server (เริ่มตั้งแต่ปี 2008)

ข้อมูล SQL

คลังข้อมูล Azure SQL คลังข้อมูล AzureParallel ลบอย่างน้อยหนึ่งแถวออกจากตารางหรือมุมมอง SQL Server ไวยากรณ์สำหรับ SQL Server และฐานข้อมูล Azure SQL[กับ [ ,...n ] ]ลบ [ ด้านบน (การแสดงออก) [ ร้อยละ ] ] [จาก] ((table_alias) |- rowset_function_limited ] [ด้วย (table_hint_limited [...n])] - @table_variable) [ | { [ จาก table_source [ ,...n ] ] } } ] [ ที่ไหน ( [ กระแสของ ( ( [ GLOBAL ] cursor_name ) | cursor_variable_name ) ] [; ] ::= { [ตัวเลือก([ ,...n ] ] ]

[server_name.database_name.schema_name.<обобщенное- ฐานข้อมูล_ชื่อ[สคีมา_ชื่อ]
- สคีมา_ชื่อ

-

table_or_view_name) (กับ) แบบตาราง
วิราซ> กับตั้งค่าชุดผลลัพธ์ของชื่อพร้อมกันรวมถึงชื่อที่ระบุในรูปแบบตารางซึ่งระบุไว้ในพื้นที่การดำเนินการของคำสั่ง DELETE

ชุดผลลัพธ์จะออกมาจากคำสั่ง SELECT
นิพจน์ตารางปกติสามารถแก้ไขได้ในคำสั่ง SELECT, INSERT, UPDATE และ CREATE VIEW หากต้องการลบแผ่นข้อมูลเพิ่มเติมสูงสุด การแสดงออก.

[เปอร์เซ็นต์]
ตั้งค่าจำนวนหรือจำนวนแถวที่แสดง อาจเป็นตัวเลขหรือหลายร้อยแถวก็ได้แถวที่ร้องขอโดยนิพจน์ TOP ซึ่งรวมกับคำสั่ง INSERT, UPDATE และ DELETE จะไม่เรียงลำดับ

หากต้องการลบแผ่นข้อมูลเพิ่มเติม

จาก หากต้องการลบแผ่นข้อมูลเพิ่มเติมคีย์เวิร์ดที่ไม่ใช่ภาษาที่สามารถใช้ร่วมกับคีย์เวิร์ด DELETE และเพื่อวัตถุประสงค์อื่นได้ table_or_view_name , หรือ rowset_function_limitedі table_aliasชื่อเล่น งานเพื่อสายน้ำ

table_or_view_name , หรือ rowset_function_limited
table_source

table_alias
คำที่แสดงถึงตารางหรือคำสั่งที่มองเห็นแถวได้

เซิร์ฟเวอร์_ชื่อ
ชื่อเซิร์ฟเวอร์ (จากชื่อที่เกี่ยวข้องของเซิร์ฟเวอร์ที่เกี่ยวข้องหรือฟังก์ชันเป็นชื่อเซิร์ฟเวอร์) ที่จะขยายตารางหรือคำสั่ง

ยักชโช

สั่ง, หากต้องการลบแผ่นข้อมูลเพิ่มเติมฉัน

การแสดงออก


หมุนแถวหรือนิพจน์ที่วางอยู่บนแถวหรือนิพจน์โดยเป็นส่วนหนึ่งของการดำเนินการ DELETE

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

ระบุข้อเสนอเพิ่มเติม FROM

ส่วนขยาย Transact-SQL นี้ DELETE ช่วยให้คุณสามารถระบุข้อมูลได้

จากนั้นลบแถวที่เกี่ยวข้องออกจากตารางในแถวแรก
ส่วนขยายนี้ ซึ่งมีการระบุการรวม สามารถใช้แทนส่วนคำสั่งที่ซ้อนกันในส่วนคำสั่ง WHERE เพื่อแทรกแถวที่กำลังถูกลบ

หากต้องการลบแผ่นข้อมูลเพิ่มเติม

    ที่ไหน ระบุการซักที่ใช้เพื่อกำหนดจำนวนแถวที่จะถอดออก = หากไม่ได้ระบุส่วนคำสั่ง WHERE คำสั่ง DELETE จะลบแถวทั้งหมดในตาราง.

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


คอลัมน์_ชื่อ

ความสำคัญ
การดำเนินการเบื้องหลังตำแหน่งจะใช้ข้อเสนอ CURRENT OF เพื่อแทรกลงในเคอร์เซอร์

ซึ่งจะแสดงที่ตำแหน่งที่แน่นอนของเคอร์เซอร์
แม้ว่ามันอาจจะแม่นยำกว่า แต่คำสั่ง DELETE ที่ต่ำกว่าก็พบว่าเป็นข้อเสนอที่ดี ค้นหา_เงื่อนไขข้อเสนอการแทรกแถวที่ปรากฏ

ค้นหา_เงื่อนไข
คำสั่ง DELETE ดูเหมือนจะลบแถวจำนวนหนึ่ง เนื่องจากไม่ชัดเจนว่าแถวใดแถวหนึ่งไม่ซ้ำกัน ค้นหา_เงื่อนไขระบุเครื่องหมายสำหรับแถวที่อยู่ห่างไกล

ไม่จำกัดจำนวนภาคที่สามารถรบกวนจิตใจได้
หากต้องการลบแผ่นข้อมูลเพิ่มเติม

ปัจจุบันของ ( [ , ... ระบุคำสั่ง DELETE ต่อไปนี้ที่ตำแหน่งบรรทัดที่กำหนดให้กับเคอร์เซอร์] )
ทั่วโลก

หากต้องการลบแถวทั้งหมดในตาราง ให้ใช้คำสั่ง TRUNCATE TABLE

คำสั่ง TRUNCATE TABLE นั้นด้อยกว่าคำสั่ง DELETE ซึ่งใช้ทรัพยากรระบบและทรัพยากรบันทึกธุรกรรมน้อยกว่า

คำสั่ง TRUNCATE TABLE สามารถใช้แทนกันได้ ตัวอย่างเช่น ตารางไม่สามารถมีส่วนร่วมในการจำลองแบบได้

หากต้องการลบแผ่นข้อมูลเพิ่มเติม

ใช้ฟังก์ชัน @@ROWCOUNT เพื่อหมุนแถวระยะไกลของโปรแกรมไคลเอนต์

หากต้องการลบแผ่นข้อมูลเพิ่มเติม สำหรับคำสั่ง DELETE คุณสามารถดำเนินการประมวลผลความเสียหายได้โดยการวางไว้ในโครงสร้าง TRY…CATCHด้วยคำสั่ง DELETE ต่อไปนี้ อาจมีปัญหาเนื่องจากจะทำลายทริกเกอร์หรือพยายามลบแถวที่มีข้อมูลในตารางอื่นโดยใช้คีย์ต่างประเทศเพิ่มเติม

หากคำสั่ง DELETE ลบแถวจำนวนหนึ่งออก และแถวใดแถวหนึ่งที่อยู่ไกลออกไปทำลายทริกเกอร์การแลกเปลี่ยน คำสั่งก็จะได้รับผลกระทบเช่นกัน เค้กหมุนไปรอบๆ และมองไม่เห็นแถวในกรณีที่มีข้อผิดพลาดทางคณิตศาสตร์ (การแก้ไขมากเกินไป การหารเป็นศูนย์ หรือเกินค่าที่อนุญาต) ที่เกิดขึ้นระหว่างการคำนวณไวรัสเมื่อมีการดำเนินการคำสั่ง DELETE ที่ถูกลบ ส่วนประกอบ Database Engine จะถูกประมวลผลในระหว่างที่เกิดข้อผิดพลาด หรือพารามิเตอร์ SET ARITHABORT ค่าเปิด

ส่วนของการดำเนินการแบตช์ที่สูญหายจะถูกเช็คเอาท์ และการแจ้งเตือนเกี่ยวกับการสูญหายจะปรากฏขึ้น

คำสั่ง DELETE สามารถรวมไว้ในข้อความของฟังก์ชันซึ่งกำหนดโดยผู้ใช้เป็น

วัตถุที่เปลี่ยนแปลงได้

หลังจากนั้น คำสั่ง DELETE จะปล่อยการล็อกเอกสิทธิ์เฉพาะบุคคล (X) บนโต๊ะที่กำลังมีการเปลี่ยนแปลงทันที และคงการล็อกไว้จนกว่าธุรกรรมจะเสร็จสมบูรณ์

หากทรัพยากรอยู่ภายใต้การล็อคแบบเอกสิทธิ์เฉพาะบุคคล (X) ธุรกรรมอื่น ๆ จะไม่สามารถเปลี่ยนแปลงข้อมูลได้ การดำเนินการอ่านจะได้รับอนุญาตก็ต่อเมื่อมีคำใบ้ NOLOCK หรือมีระดับการแยกการดำเนินการอ่านที่ไม่มีข้อผูกมัดอยู่คุณสามารถกำหนดพฤติกรรมของเครื่องมือเพิ่มประสิทธิภาพคิวรีใหม่ได้โดยใช้คำแนะนำตารางสำหรับชั่วโมงของการป้อนคำสั่ง DELETE โดยใช้วิธีบล็อกอื่น มิฉะนั้น ขอแนะนำให้ใช้คำแนะนำและผู้ดูแลระบบฐานข้อมูลและเฉพาะในกรณีที่มีความจำเป็นอย่างยิ่งเท่านั้น

หากต้องการลบแผ่นข้อมูลเพิ่มเติม

    หากมีแถวพร้อมสำหรับการซื้อ โปรแกรมฐานข้อมูลสามารถเลือกแถวหรือด้านที่บล็อกสำหรับการดำเนินการได้

    ส่งผลให้

    ด้านที่ว่างเปล่า

ซึ่งเมื่อสรุปธุรกรรมแล้ว คุณจะขาดสิทธิ์ในการซื้อ

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

หากต้องการลบแถวออกจากการซื้อและลบหน้า ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้

ใช้คำสั่ง TABLOCK ในคำสั่ง DELETE ตัวเลือก TABLOCK จะทำให้แน่ใจได้ว่าในขณะที่ใช้งาน จะมีการติดตั้งตัวล็อคโต๊ะแบบพิเศษ แทนที่จะติดตั้งตัวล็อคแบบแถวหรือด้านข้าง เพื่อให้สามารถปลดล็อคด้านข้างได้หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับพรอมต์ TABLOCK ให้ div หากตารางทั้งหมดถูกลบออกจากตาราง ให้ใช้คำสั่ง TRUNCATE TABLEі ก่อนที่จะเลือกแถว ให้สร้างดัชนีการจัดกลุ่มจากนั้นคุณสามารถลบมันได้ ตัวเลือก TABLOCK จะทำให้แน่ใจได้ว่าในขณะที่ใช้งาน จะมีการติดตั้งตัวล็อคโต๊ะแบบพิเศษ แทนที่จะติดตั้งตัวล็อคแบบแถวหรือด้านข้าง เพื่อให้สามารถปลดล็อคด้านข้างได้, หากตารางทั้งหมดถูกลบออกจากตาราง ให้ใช้คำสั่ง TRUNCATE TABLEі วิธีนี้จะใช้เวลานานกว่าและประหยัดทรัพยากรรายชั่วโมงมากขึ้นคำสั่ง DELETE จะถูกบันทึกไว้เสมอ

สิทธิ์

จำเป็นต้องมีสิทธิ์ DELETE สำหรับตารางเป้าหมาย

สิทธิ์ SELECT ก็จำเป็นเช่นกัน เนื่องจากจะแนะนำให้คุณวางส่วนคำสั่ง WHERE

ขั้นตอนต่อไปจะลบแถวทั้งหมดออกจากตาราง SalesPersonQuotaHistory ในฐานข้อมูล AdventureWorks2012 เนื่องจากไม่ได้ระบุ WHERE clause ซึ่งจะล้อมรอบจำนวนแถวที่มองเห็นได้

ลบออกจาก Sales.SalesPersonQuotaHistory;ไป

การแบ่งแถวที่มองเห็นได้

ในส่วนนี้ เราจะอธิบายวิธีการตัดแถวจำนวนหนึ่งที่ถูกลบออก

A. การเปลี่ยนแปลงคำสั่ง WHERE สำหรับการเลือกชุดแถว

ขั้นตอนต่อไปจะแสดงแถวทั้งหมดของตาราง ProductCostHistory ในฐานข้อมูล AdventureWorks2012 ที่มีค่าในคอลัมน์ StandardCost มากกว่า 1000.00

ก้นด้านหน้าแสดงข้อเสนอการพับแทน WHERE

ส่วนคำสั่ง WHERE กำหนดจิตใจสองดวงที่รับผิดชอบในการกำหนดแถวที่จะถูกลบ

ค่าในคอลัมน์ StandardCost อยู่ในช่วงตั้งแต่ 12.00 ถึง 14.00 น. และค่าในคอลัมน์ SellEndDate จะเป็น NULL แอปพลิเคชันนี้ยังแสดงฟังก์ชัน **@@ROWCOUNT** สำหรับการหมุนจำนวนแถวที่ห่างไกล B. ใช้เคอร์เซอร์เพื่อเลือกแถวที่มองเห็นได้

ขั้นตอนต่อไปคือหนึ่งแถวที่มี EmployeePayHistory ในตารางฐานข้อมูล AdventureWorks2012 ด้านหลังเคอร์เซอร์เพิ่มเติม my_cursor<>การดำเนินการระยะไกลเสร็จสมบูรณ์สำหรับแถวที่เลือกเพียงแถวเดียวเท่านั้นช่วงเวลาแห่งเดนมาร์ก เคอร์เซอร์.ประกาศเคอร์เซอร์ complex_cursor สำหรับการเลือก a.BusinessEntityID จาก HumanResources.EmployeePayHistory AS a WHERE RateChangeDate (เลือกสูงสุด (RateChangeDate) จาก HumanResources.EmployeePayHistory AS b โดยที่ a.BusinessEntityID = b.BusinessEntityID) ;ไป

เปิด complex_cursor;

ดึงข้อมูลจาก complex_cursor;

ลบออกจาก HumanResources.EmployeePayHistory โดยที่ปัจจุบันของ complex_cursor;

ปิด complex_cursor; ระบุคำสั่ง DELETE ต่อไปนี้ที่ตำแหน่งบรรทัดที่กำหนดให้กับเคอร์เซอร์ DEALLOCATE complex_cursor; ระบุคำสั่ง DELETE ต่อไปนี้ที่ตำแหน่งบรรทัดที่กำหนดให้กับเคอร์เซอร์แถว

ก้นที่น่ารังเกียจแสดง 20 แถวจากตาราง PurchaseOrderDetail ในฐานข้อมูล AdventureWorks2012 ซึ่งมีวันที่ก่อนวันที่ 1 มิถุนายน 2549:

หากจำเป็นสำหรับข้อเสนอเพิ่มเติม TOP เพื่อลบแถวตามลำดับเวลาที่สำคัญ จากนั้นในคำแนะนำสำหรับแบบสอบถามการเลือกที่ฝังไว้ ให้เลือก ORDER BY ทันที

แบบสอบถามที่กำลังจะเกิดขึ้นจะแสดง 10 แถวในตาราง PurchaseOrderDetail ที่ระบุวันที่เริ่มต้น

เพื่อให้แน่ใจว่ามองเห็นได้มากกว่า 10 แถว แถวในคำสั่งการเลือก (PurchaseOrderID) จะต้องเป็นคีย์แรกของตารางการเพิ่มส่วนคำสั่งที่ไม่ใช่คีย์ในคำแนะนำการใช้พลังงานในการเลือกอาจส่งผลให้มีแถวมากกว่า 10 แถว เนื่องจากคำแนะนำมีแนวโน้มที่จะรวมค่าที่ซ้ำกัน

การดูแถวจากตารางระยะไกล

ในส่วนนี้ เราจะอธิบายวิธีการลบแถวออกจากตารางระยะไกลโดยส่งผู้ชนะไปยังตารางระยะไกลหรือ ตารางที่ถูกลบอยู่บนเซิร์ฟเวอร์อื่นหรืออินสแตนซ์ของ SQL Server.

ติดจนได้.

: จาก SQL Server 2008 ถึง SQL Server 2016

A. การลบข้อมูลจากตารางระยะไกลด้านหลังเซิร์ฟเวอร์ที่เชื่อมโยงเพิ่มเติม

ในหน้าถัดไป คุณจะเห็นแถวในตารางระยะไกล

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