PostgreSQL Array là gì?
Trong PostgreSQL, chúng ta có thể định nghĩa một cột là một mảng các kiểu dữ liệu hợp lệ. Kiểu dữ liệu có thể là kiểu tích hợp, do người dùng xác định hoặc kiểu liệt kê. Ngoài ra, mảng đóng một vai trò quan trọng trong PostgreSQL.
Mỗi kiểu dữ liệu PostgreSQL tương ứng đi kèm với một kiểu mảng có liên quan. Ví dụ, kiểu dữ liệu số nguyên có kiểu mảng là số nguyên [], kiểu dữ liệu ký tự có kiểu mảng là ký tự [], v.v.
Trong hướng dẫn PostgreSQL này, bạn sẽ học:
- PostgreSQL Array là gì?
- Tạo Mảng PostgreSQL
- Chèn giá trị mảng PostgreSQL
- Truy vấn dữ liệu mảng
- Sửa đổi mảng PostgreSQL
- Tìm kiếm trong Mảng PostgreSQL
- Mở rộng Mảng
- Sử dụng pgAdmin
Tạo Mảng PostgreSQL
Trong ví dụ sau, chúng tôi sẽ tạo một bảng có tên Nhân viên với cột liên hệ được định nghĩa là một mảng văn bản:
CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);
Lệnh sẽ chạy thành công.
Chèn giá trị mảng PostgreSQL
Bây giờ chúng ta hãy chèn các giá trị vào bảng trên:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
Việc chèn sẽ chạy thành công.
Các giá trị của cột thứ ba, tức là liên hệ, đã được chèn dưới dạng một mảng. Điều này đã đạt được bằng cách sử dụng hàm tạo ARRAY.
Trong ví dụ này, chúng tôi đã đặt chúng trong dấu ngoặc vuông []. Chúng tôi có hai địa chỉ liên hệ cho nhân viên Alice John.
Chúng ta vẫn có thể sử dụng dấu ngoặc nhọn {} như hình dưới đây:
INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');
Lệnh sẽ chạy thành công.
Các câu lệnh trên sẽ chèn hai hàng vào bảng Nhân viên. Khi sử dụng dấu ngoặc nhọn, mảng được đặt bên trong dấu ngoặc kép (') trong khi các mục của mảng văn bản được bao trong dấu ngoặc kép (").
Truy vấn dữ liệu mảng
Để truy vấn các phần tử của một mảng, chúng ta sử dụng câu lệnh SELECT.
Để xem nội dung của bảng Nhân viên của chúng tôi, chúng tôi chạy lệnh sau:
SELECT * FROM Employees;
Điều này trả về như sau:
Các phần tử của cột mảng, tức là liên hệ, đã được đặt trong dấu ngoặc nhọn {}.
Để truy cập chính các phần tử mảng, chúng tôi thêm một chỉ số con trong dấu ngoặc vuông []. Phần tử đầu tiên trong một mảng nằm ở vị trí 1.
Ví dụ: chúng tôi cần lấy tên của nhân viên và chỉ liên hệ đầu tiên của họ đối với những nhân viên có nhiều hơn một liên hệ. Chúng tôi có thể truy cập thông tin này với tư cách là địa chỉ liên hệ [1].
Hãy để chúng tôi xem điều này:
SELECT name, contact[1]FROM Employees;
Điều này sẽ trả về như sau:
Chúng ta có thể sử dụng câu lệnh SELECT cùng với mệnh đề WHERE để lọc các hàng dựa trên cột mảng.
Ví dụ: để xem nhân viên có (408) -567-78234 là liên hệ thứ hai, chúng ta có thể chạy lệnh sau:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
Điều này sẽ trả về như sau:
Sửa đổi mảng PostgreSQL
Bạn có thể cập nhật tất cả hoặc một phần tử của một mảng.
Dưới đây là nội dung của bảng Nhân viên:
Hãy để chúng tôi cập nhật số điện thoại thứ hai của nhân viên James Bush, có id là 3:
Chạy lệnh sau:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
Lệnh sẽ chạy thành công:
Hãy để chúng tôi truy vấn bảng để kiểm tra xem thay đổi có thành công hay không:
Thay đổi đã thành công.
Tìm kiếm trong Mảng PostgreSQL
Hiện tại, bảng Nhân viên của chúng tôi như sau:
Giả sử chúng ta cần biết ai sở hữu liên hệ (408) -783-5731 bất kể vị trí trong mảng liên hệ, chúng ta có thể sử dụng hàm ANY () như hình dưới đây:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Điều này sẽ trả về như sau:
Mở rộng Mảng
Chúng ta có thể chia các giá trị của một mảng thành các hàng. Quá trình này được gọi là mở rộng mảng.
Trong ví dụ về bảng Nhân viên, có một số nhân viên có hai địa chỉ liên hệ trong mảng liên hệ. Chúng ta có thể chia chúng thành các hàng riêng biệt.
PostgreSQL cung cấp hàm unnest () có thể được sử dụng cho việc này.
Ví dụ:
SELECTname,unnest(contact)FROMEmployees;
Điều này sẽ trả về như sau:
Các nhân viên Alice John và James Bush, có hai liên hệ. Chúng ta có thể chia thành các hàng riêng biệt.
Sử dụng pgAdmin
Tạo Mảng PostgreSQL
Để thực hiện điều tương tự thông qua pgAdmin, hãy làm như sau:
Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.
Bước 2)
- Từ thanh điều hướng bên trái- Nhấp vào các hình nền.
- Nhấp vào nút Demo
Bước 3) Nhập truy vấn vào trình chỉnh sửa truy vấn để tạo bảng Nhân viên:
CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);
Bước 4) Nhấp vào nút Thực thi.
Chèn giá trị mảng PostgreSQL
Bước 1) Nhập truy vấn sau vào trình chỉnh sửa truy vấn:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
Bước 2) Nhấp vào nút Thực thi:
Bước 3)
Để sử dụng dấu ngoặc nhọn trong truy vấn
Bước 1) Nhập truy vấn sau vào trình chỉnh sửa truy vấn:
INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');
Bước 2) Nhấp vào nút Thực thi:
Truy vấn dữ liệu mảng
Bước 1) Để xem nội dung của bảng Nhân viên, hãy nhập truy vấn sau vào trình chỉnh sửa truy vấn:
SELECT * FROM Employees;
Bước 2) Nhấp vào nút Thực thi:
Nó sẽ trả về như sau:
Bước 3) Để xem các địa chỉ liên hệ đầu tiên của nhân viên:
- Nhập truy vấn sau vào trình chỉnh sửa truy vấn:
SELECT name, contact[1]FROM Employees;
- Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Bước 4) Để kết hợp câu lệnh SELECT với mệnh đề WHERE:
- Nhập lệnh sau vào trình chỉnh sửa truy vấn:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
- Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Sửa đổi mảng PostgreSQL
Bước 1) Để cập nhật địa chỉ liên hệ thứ hai của người dùng có id là 3, hãy chạy lệnh sau:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
Bước 2) Nhấp vào nút Thực thi.
Bước 3)
1. Gõ lệnh sau vào trình chỉnh sửa truy vấn để kiểm tra xem thay đổi có thành công hay không:
SELECT * FROM Employees;
2. nhấp vào nút Execute.
Nó sẽ trả về như sau:
Tìm kiếm trong Mảng PostgreSQL
Bước 1) Nhập truy vấn sau vào trình chỉnh sửa truy vấn:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Bước 2) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Mở rộng Mảng
Bước 1) Nhập truy vấn sau vào trình chỉnh sửa truy vấn:
SELECTname,unnest(contact)FROMEmployees;
Bước 2) Nhấp vào nút Thực thi.
Nó sẽ trả về như sau:
Tóm lược:
- PostgreSQL cho phép chúng ta xác định một cột trong bảng là một kiểu mảng.
- Mảng phải có kiểu dữ liệu hợp lệ như kiểu số nguyên, ký tự hoặc do người dùng xác định.
- Để chèn các giá trị vào một cột mảng, chúng ta sử dụng hàm tạo ARRAY.
- Nếu có nhiều hơn một phần tử trong cùng một hàng của cột mảng, phần tử đầu tiên ở vị trí 1.
- Mỗi giá trị có thể được truy cập bằng cách chuyển một chỉ số con trong dấu ngoặc vuông [].
- Các phần tử của mảng có thể được truy xuất bằng cách sử dụng câu lệnh SELECT.
- Các giá trị của cột mảng có thể được đặt trong dấu ngoặc vuông [] hoặc dấu ngoặc nhọn {}.
- Chúng ta có thể tìm kiếm các giá trị cột mảng bằng cách sử dụng hàm ANY ().
Tải xuống Cơ sở dữ liệu được sử dụng trong Hướng dẫn này