PostgreSQL อาร์เรย์: ฟังก์ชัน ประเภท ตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
PostgreSQL คลาส Array ช่วยให้คุณกำหนดคอลัมน์ในตารางเป็นอาร์เรย์ของชนิดข้อมูลใดก็ได้ที่ถูกต้อง เนื้อหาครอบคลุมการสร้างคอลัมน์อาร์เรย์ การแทรกค่าด้วยตัวสร้าง ARRAY หรือวงเล็บปีกกา การค้นหาและแก้ไของค์ประกอบ และการค้นหาด้วย ANY()

ความหมายของ PostgreSQL อาร์เรย์?
In PostgreSQLเราสามารถกำหนดคอลัมน์เป็นอาร์เรย์ของชนิดข้อมูลที่ถูกต้องได้ ชนิดข้อมูลนั้นอาจเป็นชนิดข้อมูลพื้นฐาน ชนิดข้อมูลที่ผู้ใช้กำหนด หรือชนิดข้อมูลแบบแจงนับ นอกจากนี้ อาร์เรย์ยังมีบทบาทสำคัญในด้านต่างๆ อีกด้วย PostgreSQL.
ทุกที่สอดคล้องกัน PostgreSQL ชนิดข้อมูลจะมีชนิดข้อมูลอาร์เรย์ที่เกี่ยวข้อง ตัวอย่างเช่น ชนิดข้อมูลจำนวนเต็มจะมีชนิดข้อมูลอาร์เรย์ integer[] ชนิดข้อมูลอักขระจะมีชนิดข้อมูลอาร์เรย์ character[] เป็นต้น
การสร้าง PostgreSQL อาร์เรย์
ในตัวอย่างต่อไปนี้ เราจะสร้างตารางชื่อพนักงานโดยกำหนดคอลัมน์ผู้ติดต่อเป็นอาร์เรย์ข้อความ:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
คำสั่งควรรันได้สำเร็จ
แทรก PostgreSQL ค่าอาร์เรย์
ให้เราตอนนี้ แทรก ค่าลงในตารางด้านบน:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
การแทรกควรทำงานสำเร็จ
ค่าในคอลัมน์ที่สาม ซึ่งก็คือข้อมูลติดต่อ ได้ถูกแทรกเข้าไปในรูปแบบอาร์เรย์แล้ว โดยใช้ตัวสร้าง ARRAY ในตัวอย่างนี้ เราได้ใส่ค่าเหล่านั้นไว้ในวงเล็บเหลี่ยม [] เรามีข้อมูลติดต่อสองรายการสำหรับพนักงานชื่อ Alice John
ยังคงเป็นไปได้สำหรับเราที่จะใช้วงเล็บปีกกา {} ดังที่แสดงด้านล่าง:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
คำสั่งควรรันได้สำเร็จ
คำสั่งด้านบนจะแทรกสองแถวลงในตารางพนักงาน เมื่อใช้เครื่องหมายวงเล็บปีกกา อาร์เรย์จะถูกห่อด้วยเครื่องหมายคำพูดเดี่ยว (') ในขณะที่รายการอาร์เรย์ข้อความจะถูกห่อด้วยเครื่องหมายคำพูดคู่ (").
การสืบค้นข้อมูลอาร์เรย์
ในการเรียกดูข้อมูลจากอาร์เรย์ เราใช้คำสั่ง SELECT ตัวอย่างเช่น หากต้องการดูเนื้อหาของตาราง Employees เราจะใช้คำสั่งต่อไปนี้:
SELECT * FROM Employees;
สิ่งนี้ส่งคืนสิ่งต่อไปนี้:
องค์ประกอบของคอลัมน์อาร์เรย์ ซึ่งก็คือข้อมูลติดต่อ จะถูกล้อมด้วยวงเล็บปีกกา {} ในการเข้าถึงองค์ประกอบของอาร์เรย์ เราจะเพิ่มดัชนีไว้ในวงเล็บเหลี่ยม [] องค์ประกอบแรกในอาร์เรย์จะอยู่ที่ตำแหน่งที่ 1
ตัวอย่างเช่น เราจำเป็นต้องได้รับชื่อพนักงานและเฉพาะข้อมูลติดต่อแรกสำหรับพนักงานที่มีข้อมูลติดต่อมากกว่าหนึ่งรายการ เราสามารถเข้าถึงข้อมูลนี้ได้ในรูปแบบข้อมูลติดต่อ[1] มาดูกัน:
SELECT name, contact[1] FROM Employees;
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
เราสามารถใช้คำสั่ง SELECT ร่วมกับเงื่อนไข WHERE เพื่อกรองแถวตามคอลัมน์อาร์เรย์ได้ ตัวอย่างเช่น หากต้องการดูพนักงานที่มีหมายเลข (408)-567-78234 เป็นผู้ติดต่อคนที่สอง เราสามารถเรียกใช้คำสั่งต่อไปนี้:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
การปรับเปลี่ยน PostgreSQL แถว
คุณสามารถอัปเดตข้อมูลทั้งหมดหรือเพียงข้อมูลเดียวในอาร์เรย์ได้ ต่อไปนี้คือข้อมูลในตารางพนักงาน:
ให้เราอัปเดตหมายเลขโทรศัพท์ที่สองของพนักงาน James Bush ซึ่งมี ID 3:
เรียกใช้คำสั่งต่อไปนี้:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
คำสั่งควรทำงานสำเร็จ:
ให้เราสอบถามตารางเพื่อตรวจสอบว่าการเปลี่ยนแปลงสำเร็จหรือไม่:
การเปลี่ยนแปลงสำเร็จ
การค้นหาใน PostgreSQL แถว
ปัจจุบันตารางพนักงานของเรามีดังนี้:
สมมติว่าเราต้องการทราบว่าใครเป็นเจ้าของรายชื่อติดต่อหมายเลข (408)-783-5731 โดยไม่คำนึงถึงตำแหน่งภายในอาร์เรย์รายชื่อติดต่อ เราสามารถใช้ฟังก์ชัน ANY() ได้ดังที่แสดงด้านล่าง:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
อาร์เรย์ขยาย
เราสามารถแบ่งค่าในอาร์เรย์ออกเป็นแถวได้ กระบวนการนี้เรียกว่าการขยายอาร์เรย์ ในตัวอย่างของตารางพนักงาน มีพนักงานบางคนที่มีผู้ติดต่อสองคนในอาร์เรย์ผู้ติดต่อ เราสามารถแยกผู้ติดต่อเหล่านี้ออกเป็นแถวแยกกันได้ PostgreSQL มีฟังก์ชัน unnest() ที่สามารถใช้เพื่อจุดประสงค์นี้ได้ ตัวอย่างเช่น:
SELECT name, unnest(contact) FROM Employees;
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
พนักงานอลิซ จอห์น และเจมส์ บุช มีผู้ติดต่อสองราย เราสามารถแยกผู้ติดต่อเหล่านี้ออกเป็นแถวแยกกันได้
การใช้งาน pgAdmin
การสร้าง PostgreSQL อาร์เรย์
หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางด้านซ้าย คลิกฐานข้อมูล
- คลิกที่ปุ่มสาธิต (Demo)
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถามเพื่อสร้างตารางพนักงาน:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
ขั้นตอน 4) คลิกปุ่มดำเนินการ
แทรก PostgreSQL ค่าอาร์เรย์
ขั้นตอน 1) พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
ขั้นตอน 2) คลิกปุ่มดำเนินการ:
ขั้นตอน 3) หากต้องการใช้เครื่องหมายวงเล็บปีกกาในคำสั่งค้นหา ให้พิมพ์คำสั่งค้นหาต่อไปนี้ในโปรแกรมแก้ไขคำสั่งค้นหา:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
จากนั้นคลิกปุ่ม Execute:
การสืบค้นข้อมูลอาร์เรย์
ขั้นตอน 1) หากต้องการดูเนื้อหาของตารางพนักงาน ให้พิมพ์คำสั่งต่อไปนี้ลงในตัวแก้ไขคำสั่ง:
SELECT * FROM Employees;
ขั้นตอน 2) คลิกปุ่มดำเนินการ:
ควรส่งคืนสิ่งต่อไปนี้:
ขั้นตอน 3) หากต้องการดูข้อมูลการติดต่อครั้งแรกของพนักงาน ให้พิมพ์คำสั่งต่อไปนี้ลงในตัวแก้ไขคำสั่ง แล้วคลิกปุ่ม Execute:
SELECT name, contact[1] FROM Employees;
ควรส่งคืนสิ่งต่อไปนี้:
ขั้นตอน 4) หากต้องการรวมคำสั่ง SELECT เข้ากับเงื่อนไข WHERE ให้พิมพ์คำสั่งต่อไปนี้ในโปรแกรมแก้ไขแบบสอบถาม แล้วคลิกปุ่ม Execute:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
ควรส่งคืนสิ่งต่อไปนี้:
การปรับเปลี่ยน PostgreSQL แถว
ขั้นตอน 1) หากต้องการอัปเดตข้อมูลผู้ติดต่อรายที่สองของผู้ใช้ที่มีรหัส 3 ให้รันคำสั่งต่อไปนี้:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
ขั้นตอน 2) คลิกปุ่มดำเนินการ
ขั้นตอน 3) พิมพ์คำสั่งต่อไปนี้ในโปรแกรมแก้ไขแบบสอบถามเพื่อตรวจสอบว่าการเปลี่ยนแปลงสำเร็จหรือไม่ จากนั้นคลิกปุ่ม Execute:
SELECT * FROM Employees;
ควรส่งคืนสิ่งต่อไปนี้:
การค้นหาใน PostgreSQL แถว
ขั้นตอน 1) พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
ขั้นตอน 2) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
อาร์เรย์ขยาย
ขั้นตอน 1) พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:
SELECT name, unnest(contact) FROM Employees;
ขั้นตอน 2) คลิกปุ่มดำเนินการ
ควรส่งคืนสิ่งต่อไปนี้:
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้






























