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