0Pricing
SQL Academy · บทเรียน

พื้นฐานคอลัมน์อาร์เรย์

สร้างและอ่านค่าอาร์เรย์

พื้นฐานคอลัมน์อาร์เรย์ เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คอลัมน์อาร์เรย์คืออะไร

PostgreSQL รองรับ คอลัมน์อาร์เรย์ ซึ่งช่วยให้เซลล์เดียวเก็บค่าหลายค่าที่มีชนิดข้อมูลเดียวกันได้ แทนที่จะเก็บข้อความที่คั่นด้วยจุลภาค คุณจะได้รายการที่มีชนิดข้อมูลชัดเจน ซึ่งสามารถค้นหา ทำดัชนี และจัดการด้วยฟังก์ชันในตัวได้

อาร์เรย์สามารถเก็บจำนวนเต็ม ข้อความ ค่าบูลีน วันที่ หรือชนิดข้อมูลอื่นใดของ PostgreSQL ได้ ไวยากรณ์มีลักษณะเป็น integer[] หรือ text[]

การประกาศคอลัมน์อาร์เรย์

เพิ่ม [] หลังชื่อชนิดข้อมูลใด ๆ เมื่อเขียนคำสั่ง CREATE TABLE เพื่อประกาศคอลัมน์อาร์เรย์ ตารางด้านล่างเก็บรายการแท็กของแต่ละบทความ

CREATE TABLE articles (
  id      serial PRIMARY KEY,
  title   text NOT NULL,
  tags    text[]
);

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

ใช้ค่าลิเทอรัลรูปวงเล็บปีกกาที่ครอบด้วยอัญประกาศเดี่ยวเพื่อแทรกข้อมูลอาร์เรย์ แต่ละองค์ประกอบจะคั่นด้วยจุลภาคภายในวงเล็บปีกกา: '{"sql","database"}'

อีกวิธีหนึ่งคือใช้ไวยากรณ์ตัวสร้าง ARRAY[...] ตามที่แสดงในแถวที่สอง

INSERT INTO articles (title, tags) VALUES
  ('Intro to SQL',    '{"sql","beginner"}'),
  ('Advanced Joins',  ARRAY['sql','joins','performance']),
  ('NULL Handling',   '{"sql","nulls","tips"}');

การอ่านอาร์เรย์ทั้งหมด

การเลือกคอลัมน์อาร์เรย์ทำงานเหมือนกับการเลือกคอลัมน์อื่น ๆ PostgreSQL จะส่งคืนอาร์เรย์ทั้งหมดเป็นค่าเดียวในชุดผลลัพธ์ โดยแสดงในรูปแบบวงเล็บปีกกา

SELECT id, title, tags
FROM   articles;

การเข้าถึงองค์ประกอบเดียว

ตำแหน่งสมาชิกของอาร์เรย์ใน PostgreSQL เริ่มนับจาก 1 (องค์ประกอบแรกอยู่ที่ดัชนี 1 ไม่ใช่ 0) ใช้วงเล็บเหลี่ยมหลังชื่อคอลัมน์เพื่อเข้าถึงองค์ประกอบที่ต้องการ

SELECT title,
       tags[1] AS first_tag,
       tags[2] AS second_tag
FROM   articles;

การตัดแบ่งอาร์เรย์

คุณสามารถดึงช่วงขององค์ประกอบได้โดยใช้ไวยากรณ์ส่วนตัด lower:upper ภายในวงเล็บเหลี่ยม ขอบเขตทั้งสองด้านจะถูกรวมอยู่ด้วย

SELECT title,
       tags[1:2] AS first_two_tags
FROM   articles;

การกรองด้วย ANY

หากต้องการค้นหาแถวที่อาร์เรย์มีค่าที่ระบุ ให้ใช้นิพจน์ = ANY(column) นิพจน์นี้จะส่งคืนแถวที่มีองค์ประกอบอย่างน้อยหนึ่งรายการในอาร์เรย์ตรงกับค่าที่กำหนด

SELECT id, title, tags
FROM   articles
WHERE  'joins' = ANY(tags);

การกรองด้วยตัวดำเนินการ @>

ตัวดำเนินการ บรรจุ @> ตรวจสอบว่าอาร์เรย์ด้านซ้ายมีองค์ประกอบทั้งหมดของอาร์เรย์ด้านขวาหรือไม่ วิธีนี้มีประโยชน์เมื่อต้องการแถวที่มีแท็กที่จำเป็นครบชุด

SELECT id, title, tags
FROM   articles
WHERE  tags @> ARRAY['sql','tips'];

การหาความยาวอาร์เรย์

ฟังก์ชัน array_length(arr, dimension) ส่งคืนจำนวนองค์ประกอบตามมิติที่กำหนด สำหรับอาร์เรย์หนึ่งมิติ ให้ใช้ 1 เป็นอาร์กิวเมนต์ที่สอง

SELECT title,
       array_length(tags, 1) AS tag_count
FROM   articles
ORDER  BY tag_count DESC;

การเพิ่มองค์ประกอบ

ใช้ฟังก์ชัน array_append(array, element) หรือตัวดำเนินการต่อข้อความ || เพื่อเพิ่มองค์ประกอบใหม่ต่อท้ายคอลัมน์อาร์เรย์ที่มีอยู่

UPDATE articles
SET    tags = array_append(tags, 'featured')
WHERE  title = 'Intro to SQL';

SELECT title, tags FROM articles WHERE title = 'Intro to SQL';

การคลี่อาร์เรย์เป็นแถว

ฟังก์ชัน unnest(array) จะขยายอาร์เรย์เป็นชุดแถว โดยมีหนึ่งแถวต่อหนึ่งองค์ประกอบ วิธีนี้เหมาะสำหรับการรวมค่า การเชื่อมตาราง หรือการดำเนินการใด ๆ ที่ต้องจัดการแต่ละองค์ประกอบแยกกัน

SELECT title, unnest(tags) AS tag
FROM   articles
ORDER  BY title, tag;

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับคอลัมน์อาร์เรย์ของ PostgreSQL

สรุป: พื้นฐานคอลัมน์อาร์เรย์

ในบทนี้ คุณได้เรียนรู้การทำงานของคอลัมน์อาร์เรย์ใน PostgreSQL ตั้งแต่ต้นจนจบ:

  • ประกาศอาร์เรย์ด้วยไวยากรณ์ type[] ใน CREATE TABLE
  • แทรกค่าด้วยค่าลิเทอรัลรูปวงเล็บปีกกาหรือ ARRAY[...]
  • เข้าถึงองค์ประกอบด้วยดัชนีที่เริ่มนับจาก 1 และแบ่งช่วงด้วย lower:upper
  • กรองด้วย = ANY(col) สำหรับค่าเดียว หรือ @> สำหรับสับเซต
  • วัดความยาวด้วย array_length(col, 1)
  • เพิ่มองค์ประกอบด้วย array_append() หรือ ||
  • ขยายอาร์เรย์เป็นแถวด้วย unnest()

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

คำถามที่พบบ่อย

บทเรียน “พื้นฐานคอลัมน์อาร์เรย์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐานคอลัมน์อาร์เรย์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐานคอลัมน์อาร์เรย์”

สร้างและอ่านค่าอาร์เรย์ คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “พื้นฐานคอลัมน์อาร์เรย์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานคอลัมน์อาร์เรย์
  2. การค้นหาภายในอาร์เรย์
  3. UNNEST และการรวมค่า
  4. อาร์เรย์เทียบกับตารางแบบทำให้เป็นมาตรฐาน
← กลับไปที่ SQL Academy