Group Blog
 
<<
กุมภาพันธ์ 2555
 
 1234
567891011
12131415161718
19202122232425
26272829 
 
28 กุมภาพันธ์ 2555
 
All Blogs
 
มาทำความรู้จักกับ 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.

ชื่อ : * blog นี้ comment ได้เฉพาะสมาชิก
Comment :
  *ส่วน comment ไม่สามารถใช้ javascript และ style sheet
 

saknarak
Location :


[ดู Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 1 คน [?]




MCT, MCITP:SQLServer, MySQL DBA, DEV, CCSI
Friends' blogs
[Add saknarak's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.