มาทำความรู้จักกับ ROW CONSTRUCTOR กัน
หลายคนอาจจะเคยได้ยิน Row Constructor หรือ Table Value Constructor ซึ่งเป็นคุณลักษณะใหม่ใน SQL Server 2008 แต่อาจจะยังไม่มีโอกาสได้ใช้ หรือไม่ทราบเลยว่าคืออะไร มีประโยชน์อย่างไร
ในบทความนี้ ผมจะอธิบายถึงความสามารถของ Row Constructor ในแง่มุมต่าง ๆ เริ่มจากตัวไวยกรณ์ รูปแบบการใช้งาน และประโยชน์ที่จะได้รับ
Row Constructor คือการสร้างแถวขึ้นมาจากการระบุค่าโดยตรง โดยไม่จำเป็นต้องสร้างตารางขึ้นมาก่อน เช่น ปกติถ้าต้องการแถวจำนวน 5 แถว จะต้องสร้างตารางที่มีข้อมูล 5 แถวก่อน แต่ Row Constructor สามารถสร้างข้อมูล 5 แถวนี้ได้เลย โดยไม่ต้องสร้างตาราง หน้าตาของ Row Constructor เป็นแบบนี้ครับ
VALUES(1, 'Mon'), (2, 'Tue'), (3, 'Wed'), (4, 'Thu'), (5, 'Fri')
หนึ่งวงเล็บคือข้อมูล 1 แถว จากตัวอย่าง มีข้อมูลทั้งหมด 5 แถว แถวละ 2 คอลัมน์
เราสามารถนำไปใช้ในการ Insert ได้ ซึ่งปรกติ การ Insert มักจะทำจากผลการ Select ดังนี้
INSERT INTO table1 SELECT * FROM table2
ซึ่งหมายถึงการนำข้อมูลจากตาราง table2 ไปเพิ่มลงในตาราง table1
เมื่อเปลี่ยนเป็น Row Constructor จะเป็นรูปแบบนี้ครับ
INSERT INTO table1 VALUES('Mon'), ('Tue'), ('Wed'), ('Thu'), ('Fri')
ดูแล้วคุ้น ๆ ไหมครับ นั่นคือคำสั่ง Insert ปรกตินั่นเอง เพียงแต่ Insert ทีเดียวได้หลาย ๆ แถว ข้อดีของการ Insert ครั้งละหลาย ๆ แถว ไม่ว่าจะเป็นจากการ Select หรือจาก Row Constructor ก็ตาม จะเร็วกว่า Insert ทีละแถวอย่างเห็นได้ชัด
นอกจากนำมาใช้เรื่องการ Insert แล้ว Row Constructor สามารถนำมาใช้แทนตารางชั่วคราวได้ด้วย ดังตัวอย่างนี้
SELECT DayOfWeek.Id, DayOfWeek.Name FROM (VALUES(1, 'Mon'), (2, 'Tue'), (3, 'Wed')) DayOfWeek(Id, Name)
เนื่องจากผลที่ได้จาก Row Constructor นั้นไม่มีชื่อ จึงต้องมีการกำหนดชื่อตารางและชื่อฟิลด์ไว้เมื่อต้องการ Select
ไม่ยากเลยใช่ไหมครับสำหรับการใช้งาน Row Constructor ซึ่งคุ้มค่ามากที่จะเปลี่ยนมาใช้ Row Constructor แทนการใช้งานในรูปแบบเดิม ๆ
สำหรับคุณสมบัตินี้ มีใน SQL Server 2008 ขึ้นไปเท่านั้นนะครับ
Reference: //msdn.microsoft.com/en-us/library/dd776382.aspx
Create Date : 28 กุมภาพันธ์ 2555 |
Last Update : 29 กุมภาพันธ์ 2555 0:04:52 น. |
|
0 comments
|
Counter : 571 Pageviews. |
|
|