PostgreSQL อาร์เรย์: ฟังก์ชัน ประเภท ตัวอย่าง

ความหมายของ PostgreSQL อาร์เรย์?

In PostgreSQLเราสามารถกำหนดคอลัมน์เป็นอาร์เรย์ของประเภทข้อมูลที่ถูกต้องได้ ชนิดข้อมูลอาจเป็นชนิดที่มีอยู่แล้วภายใน ชนิดที่ผู้ใช้กำหนด หรือชนิดแจงนับ นอกเหนือจากนี้ อาร์เรย์ยังมีบทบาทสำคัญใน PostgreSQL.

ทุกที่สอดคล้องกัน PostgreSQL ชนิดข้อมูลมาพร้อมกับประเภทอาร์เรย์ที่เกี่ยวข้อง ตัวอย่างเช่น ชนิดข้อมูลจำนวนเต็มมีประเภทอาร์เรย์จำนวนเต็ม[] ประเภทข้อมูลอักขระมีประเภทอาร์เรย์อักขระ[] เป็นต้น

การสร้าง PostgreSQL อาร์เรย์

ในตัวอย่างต่อไปนี้ เราจะสร้างตารางชื่อพนักงานโดยกำหนดคอลัมน์ผู้ติดต่อเป็นอาร์เรย์ข้อความ:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

คำสั่งควรทำงานสำเร็จ

การสร้าง PostgreSQL อาร์เรย์

แทรก PostgreSQL ค่าอาร์เรย์

ให้เราตอนนี้ แทรก ค่าลงในตารางด้านบน:

INSERT INTO Employees 
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

การแทรกควรทำงานสำเร็จ

แทรก PostgreSQL ค่าอาร์เรย์

ค่าของคอลัมน์ที่สามซึ่งก็คือ contact ได้ถูกแทรกเป็นอาร์เรย์แล้ว สิ่งนี้สามารถทำได้โดยการใช้ตัวสร้าง ARRAY

ในตัวอย่างนี้ เราได้ใส่เครื่องหมายวงเล็บเหลี่ยม [] ไว้ เรามีรายชื่อผู้ติดต่อสองรายสำหรับพนักงานชื่อ Alice John

ยังคงเป็นไปได้สำหรับเราที่จะใช้วงเล็บปีกกา {} ดังที่แสดงด้านล่าง:

INSERT INTO Employees 
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   ( 
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

คำสั่งควรรันได้สำเร็จ

แทรก PostgreSQL ค่าอาร์เรย์

คำสั่งด้านบนจะแทรกสองแถวลงในตารางพนักงาน เมื่อใช้เครื่องหมายวงเล็บปีกกา อาร์เรย์จะถูกห่อด้วยเครื่องหมายคำพูดเดี่ยว (') ในขณะที่รายการอาร์เรย์ข้อความจะถูกห่อด้วยเครื่องหมายคำพูดคู่ (").

การสืบค้นข้อมูลอาร์เรย์

ในการสืบค้นองค์ประกอบของอาร์เรย์ เราใช้คำสั่ง 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 แถว

คุณสามารถอัปเดตองค์ประกอบทั้งหมดหรือองค์ประกอบเดียวของอาร์เรย์ได้

นี่คือเนื้อหาของตารางพนักงาน:

การปรับเปลี่ยน PostgreSQL แถว

ให้เราอัปเดตหมายเลขโทรศัพท์ที่สองของพนักงาน James Bush ซึ่งมี ID 3:

การปรับเปลี่ยน PostgreSQL แถว

เรียกใช้คำสั่งต่อไปนี้:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

คำสั่งควรทำงานสำเร็จ:

การปรับเปลี่ยน PostgreSQL แถว

ให้เราสอบถามตารางเพื่อตรวจสอบว่าการเปลี่ยนแปลงสำเร็จหรือไม่:

การปรับเปลี่ยน PostgreSQL แถว

การเปลี่ยนแปลงสำเร็จ

การค้นหาใน PostgreSQL แถว

ปัจจุบันตารางพนักงานของเรามีดังนี้:

การค้นหาใน PostgreSQL แถว

สมมติว่าเราจำเป็นต้องรู้ว่าใครเป็นเจ้าของผู้ติดต่อ (408)-783-5731 โดยไม่คำนึงถึงตำแหน่งภายในอาร์เรย์ผู้ติดต่อ เราสามารถใช้ฟังก์ชัน ANY() ดังที่แสดงด้านล่าง:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:

การค้นหาใน PostgreSQL แถว

อาร์เรย์ขยาย

เราสามารถแบ่งค่าของอาร์เรย์ออกเป็นแถวได้ กระบวนการนี้เรียกว่าการขยายอาเรย์

ในตัวอย่างของตารางพนักงาน มีพนักงานบางคนที่มีผู้ติดต่อสองคนในอาร์เรย์ผู้ติดต่อ เราสามารถแยกสิ่งเหล่านี้ออกเป็นแถวๆ ได้

PostgreSQL จัดเตรียมฟังก์ชัน unnest() ที่สามารถใช้สำหรับสิ่งนี้

ตัวอย่างเช่น:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:

อาร์เรย์ขยาย

พนักงาน Alice John และ James Bush มีผู้ติดต่อสองคน เราสามารถแยกออกเป็นแถวๆ ได้

การใช้งาน pgAdmin

การสร้าง PostgreSQL อาร์เรย์

หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางด้านซ้าย - คลิก rbases
  2. คลิกที่ปุ่มสาธิต

การสร้าง PostgreSQL อาร์เรย์ใช้ pgAdmin

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถามเพื่อสร้างตารางพนักงาน:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

ขั้นตอน 4) คลิกปุ่มดำเนินการ

การสร้าง PostgreSQL อาร์เรย์ใช้ pgAdmin

แทรก PostgreSQL ค่าอาร์เรย์

ขั้นตอน 1) พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:

INSERT INTO Employees 
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

ขั้นตอน 2) คลิกปุ่มดำเนินการ:

แทรก PostgreSQL ค่าอาร์เรย์

ขั้นตอน 3)

เมื่อต้องการใช้เครื่องหมายปีกกาในการสืบค้น

ขั้นตอน 1) พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:

INSERT INTO Employees 
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   ( 
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

ขั้นตอนที่ 2) คลิกปุ่มดำเนินการ:

แทรก PostgreSQL ค่าอาร์เรย์

การสืบค้นข้อมูลอาร์เรย์

ขั้นตอน 1) หากต้องการดูเนื้อหาของตารางพนักงาน ให้พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:

SELECT * FROM Employees;

ขั้นตอน 2) คลิกปุ่มดำเนินการ:

การสืบค้นข้อมูลอาร์เรย์โดยใช้ pgAdmin

ควรส่งคืนสิ่งต่อไปนี้:

การสืบค้นข้อมูลอาร์เรย์โดยใช้ pgAdmin

ขั้นตอน 3) หากต้องการดูการติดต่อครั้งแรกของพนักงาน:

  1. พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:
    SELECT name, contact[1]
    FROM Employees;
    
  2. คลิกปุ่มดำเนินการ

การสืบค้นข้อมูลอาร์เรย์โดยใช้ pgAdmin

ควรส่งคืนสิ่งต่อไปนี้:

การสืบค้นข้อมูลอาร์เรย์โดยใช้ pgAdmin

ขั้นตอน 4) หากต้องการรวมคำสั่ง SELECT เข้ากับส่วนคำสั่ง WHERE:

  1. พิมพ์คำสั่งต่อไปนี้ในตัวแก้ไขแบบสอบถาม:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. คลิกปุ่มดำเนินการ

การสืบค้นข้อมูลอาร์เรย์โดยใช้ pgAdmin

ควรส่งคืนสิ่งต่อไปนี้:

การสืบค้นข้อมูลอาร์เรย์โดยใช้ pgAdmin

การปรับเปลี่ยน PostgreSQL แถว

ขั้นตอน 1) หากต้องการอัปเดตข้อมูลติดต่อที่สองของผู้ใช้ที่มี ID 3 ให้รันคำสั่งต่อไปนี้:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

ขั้นตอน 2) คลิกปุ่มดำเนินการ

การปรับเปลี่ยน PostgreSQL อาร์เรย์ใช้ pgAdmin

ขั้นตอน 3)

1. พิมพ์คำสั่งต่อไปนี้ในตัวแก้ไขแบบสอบถามเพื่อตรวจสอบว่าการเปลี่ยนแปลงสำเร็จหรือไม่:

SELECT * FROM Employees;

2.คลิกปุ่มดำเนินการ

การปรับเปลี่ยน PostgreSQL อาร์เรย์ใช้ pgAdmin

ควรส่งคืนสิ่งต่อไปนี้:

การปรับเปลี่ยน PostgreSQL อาร์เรย์ใช้ pgAdmin

การค้นหาใน PostgreSQL แถว

ขั้นตอน 1) พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

ขั้นตอน 2) คลิกปุ่มดำเนินการ

การค้นหาใน PostgreSQL อาร์เรย์ใช้ pgAdmin

ควรส่งคืนสิ่งต่อไปนี้:

การค้นหาใน PostgreSQL อาร์เรย์ใช้ pgAdmin

อาร์เรย์ขยาย

ขั้นตอน 1) พิมพ์แบบสอบถามต่อไปนี้ในตัวแก้ไขแบบสอบถาม:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

ขั้นตอน 2) คลิกปุ่มดำเนินการ

การขยายอาร์เรย์โดยใช้ pgAdmin

ควรส่งคืนสิ่งต่อไปนี้:

การขยายอาร์เรย์โดยใช้ pgAdmin

สรุป

  • PostgreSQL ช่วยให้เราสามารถกำหนดคอลัมน์ตารางเป็นประเภทอาร์เรย์ได้
  • อาร์เรย์จะต้องถูกต้อง ประเภทข้อมูล เช่น จำนวนเต็ม อักขระ หรือประเภทที่ผู้ใช้กำหนด
  • ในการแทรกค่าลงในคอลัมน์อาร์เรย์ เราใช้ตัวสร้าง ARRAY
  • หากมีมากกว่าหนึ่งองค์ประกอบในแถวเดียวกันของคอลัมน์อาร์เรย์ องค์ประกอบแรกจะอยู่ที่ตำแหน่ง 1
  • คุณสามารถเข้าถึงค่าแต่ละค่าได้โดยการส่งตัวห้อยภายในวงเล็บเหลี่ยม []
  • องค์ประกอบของอาร์เรย์สามารถดึงข้อมูลได้โดยใช้คำสั่ง SELECT
  • ค่าของคอลัมน์อาร์เรย์สามารถอยู่ในวงเล็บเหลี่ยม [] หรือวงเล็บปีกกา {} ได้
  • เราสามารถค้นหาค่าคอลัมน์อาร์เรย์โดยใช้ฟังก์ชัน ANY()

ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้