WORK17 การสร้าง GENERATED COLUMNS PostgreSQL

 

การสร้าง GENERATED COLUMNS PostgreSQL

วิธีบน pgAdmin 4 สำหรับ PostgreSQL 12+


1) เมื่อเข้ามายังโปรแกรม pgAdmin 4 ให้ Double Click ที่ Server

2) ทำการ Double Click ที่ PostgreSQL 14

3) ทำการ Double Click ที่ Databases

4) ทำการ Click ขวาที่ ฐานข้อมูลที่ต้องการ

5) ทำการ Click ที่ Query Tool



6) ทำการ พิมพ์คำสั่ง SQL ในการสร้างตารางและใส่คำสั่งสร้าง GENERATED COLUMNS จากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5
จะเห็นว่าการพิมพ์คำสั่ง genrated always as ((ตามด้วยสูตรที่เราต้องการ)) stored ต่อจากหลัง column ที่เราต้องการให้มีการใช้สูตรคำนวนที่ column นั้น
ตัวอย่างคำสั่งในภาพ Create table product (
id serial,
price numeric(8, 2),
cost numeric(8, 2),
margin numeric(8, 2) generated always as ((price-cost)/price) stored
);



7) ทำการ พิมพ์คำสั่ง SQL ในการเพิ่มข้อมูลลงในตารางจากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5
จะเห็นว่ามีการใส่ค่าแค่ 2 column เนื่องจาก column id เป็น serial จะทำการเพิ่มข้อมูลให้เองอัตโนมัติ ส่วน column margin เป็น การใช้ generated ข้อมูลจะมาจาการคำนวนสูตรที่เราใส่ลงไปนั้นเอง
ตัวอย่างคำสั่งในภาพ insert into product (price, cost) values (110, 100), (50, 20);

8) ทำการ พิมพ์คำสั่ง SQL ในการแสดงข้อมูลตารางแรกจากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5
ตัวอย่างคำสั่งในภาพ select * from product;



9) ตารางก็จะโชว์ข้อมูลดังในรูปภาพจะเห็นได้ว่า column margin มีข้อมูลแล้วเป็นข้อมูลที่มาจากการใช้สูตรของเราที่เราทำ generated เราจะไม่ต้องเสียเวลามาพิมพ์คำสั่งสูตรใส่ทีละค่าในคอลัมน์นั้นแต่สามารถใส่สูตรทีเดียวละใช้ได้เรื่อยๆและนี่คือประโยชน์ของ generated นั้นเอง



10) ทำการ พิมพ์คำสั่ง SQL ในการแแก้ไขข้อมูลพร้อมกับคำสั่งแสดงข้อมูลจากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5
จากนั้นตารางจะแสดงข้อมูลล่าสุดจะเห็นว่าข้อมูลใน margin id ที่ 2 เปลี่ยนแปลงเนื่องจากเราเปลี่ยนข้อมูล cost id ที่ 2 ซึ่งตัว margin เมื่อข้อมูลมีการเปลี่ยนแปลง margin ก็จะเปลี่ยนข้อมูลเสมอแต่ยังใช้การคำนวนตามสูตรเดิมที่เราตั้งไว้นั้นเอง
ตัวอย่างคำสั่งในภาพ update product set cost = 40 where id=2;
select * from product;



ตัวอย่างการเพิ่มหรือสร้าง GENERATED COLUMNS แบบ GUI

11) ทำการ Double Click ที่ ฐานข้อมูลที่เราพึ่งสร้างตารางไป

12) ทำการ Click ที่ Schemas

13) ทำการ Click ที่ Tables

14) ทำการ Click ขวาที่ ตารางที่เราต้องการ

15) ทำการ Click ที่ Properties...



16) เมื่อขึ้นหน้าต่าง ชื่อตารางเรา ดังรูปภาพให้ทำ Click ที่ Columns

17) ทำการ Click ที่ เครื่องหมาย +



18) ทำการตั้งชื่อที่เราต้องการ

19) ทำการ Click ที่ รูปปากกา



20) ทำการ Click ที่ Definition

21) ทำการ การข้อมูลต่างๆให้ครบถ้วน เช่น เลือกประเภทของข้อมูลตรง Data type ใส่ขนาดของข้อมูลในช่อง Length/Precision



22) ทำการ Click ที่ Constraints

23) ทำการ Click ที่ GENERATED

24) ทำการ พิมพ์สูตรที่เราต้องการใส่ตรงช่อง Expression

25) ทำการ Click ที่ ปุ่ม Save



26) ทำการ ลากแถบดำคลุมคำสั่งโชว์ตารางที่เราเคยพิมพ์คำสั่งไว้แล้วกด F5

27) จากนั้นตารางก็จะโชว์ขึ้นมาและจะเห็นไว้ว่า Columns ที่เราพึ่งสร้างขึ้นไปได้มีแล้วและข้อมูลยังถูกเพิ่มไว้แล้วตามสูตรที่เราได้พิมพ์ไว้ในข้อ 24 นั้นเอง

ตัวอย่างการใช้งาน GENERATED COLUMNS อีกแบบ



1) ทำการ Click ขวาที่ Tables

2) ทำการ Click ที่ Query Tool



3) ทำการ พิมพ์คำสั่ง SQL ในการสร้างตารางและใส่คำสั่งสร้าง GENERATED COLUMNS แต่ในครั้งนี้เราใส่ เงื่อนไขลงไปด้วยในการ GENERATED COLUMNS จากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5 ตารางก็จะถูกสร้างเรียบร้อย
ตัวอย่างคำสั่งในภาพ create table customer(
id serial,
income int,
income_level varchar generated always as (
case
when income > 100000 then 'high'
when income > 50000 then 'medium'
else 'low'
end
) stored
);



4) ทำการ พิมพ์คำสั่ง SQL ในการเพิ่มข้อมูลลงในตารางจากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5 ข้อมูลก็จะถูกเพิ่มเรียบร้อย
จะเห็นว่ามีการใส่ค่าแค่ 2 column เนื่องจาก column id เป็น serial จะทำการเพิ่มข้อมูลให้เองอัตโนมัติ ส่วน column income_level เป็น การใช้ generated ถ้าหากข้อมูลที่เราเพิ่มลงไปตรงกับเงื่อนไขใดที่เรากรอกไว้ข้อมูลนั้นก็จะถูกบันทึกให้เป็นตามเงื่อนไขนั้นเอง
ตัวอย่างคำสั่งในภาพ insert into customer (income) values (200000), (12000), (6000);



5) ทำการ พิมพ์คำสั่ง SQL ในการแสดงข้อมูลตารางแรกจากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5
ตัวอย่างคำสั่งในภาพ select * from customer;

6) ตารางก็จะโชว์ข้อมูลดังในรูปภาพจะเห็นได้ว่า column income_level มีข้อมูลที่ตามเงื่อนไขที่เรากำหนดไว้โดยไม่ใช่ค่าที่เราทำการเพิ่มลงไปแล้วนั้นเอง



7) ทำการ พิมพ์คำสั่ง SQL ในการแแก้ไขข้อมูลพร้อมกับคำสั่งแสดงข้อมูลจากนั้นลากแถบดำคลุมคำสั่งนั้นกด F5

8)จากนั้นตารางจะแสดงข้อมูลล่าสุดจะเห็นว่าข้อมูลใน income_level id ที่ 3 เปลี่ยนแปลงเนื่องจากเราเปลี่ยนข้อมูล income_level id ที่ 3 ซึ่งตัว income_level เมื่อข้อมูลมีการเปลี่ยนแปลง income_level ก็จะเปลี่ยนข้อมูลและตามเงื่อนไขเสมอนั้นเอง
ตัวอย่างคำสั่งในภาพ update customer set income=60000 where id=3;
select * from customer;

ความคิดเห็น