PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách chèn và xóa dữ liệu trong PostgreSQL


Giới thiệu

Thêm và xóa bản ghi khỏi bảng là một số hoạt động phổ biến nhất mà cơ sở dữ liệu thực hiện. Việc thêm dữ liệu liên quan đến việc chỉ định tên bảng và cột mà bạn muốn thêm giá trị vào cũng như giá trị bạn muốn nhập vào mỗi trường. Xóa bản ghi bao gồm việc xác định đúng hàng hoặc các hàng và xóa chúng khỏi bảng.

Trong hướng dẫn này, chúng tôi sẽ trình bày cách sử dụng INSERT trong SQL và DELETE lệnh với PostgreSQL. Điều này bao gồm cú pháp cơ bản, cách trả về thông tin dữ liệu về dữ liệu đã được xử lý và cách thêm hoặc xóa nhiều hàng trong một câu lệnh.



Xem lại cấu trúc của bảng

Trước khi sử dụng INSERT , bạn phải biết cấu trúc của bảng để có thể đáp ứng các yêu cầu do cột, kiểu dữ liệu và ràng buộc của bảng áp đặt. Có một số cách khác nhau để thực hiện việc này tùy thuộc vào ứng dụng khách cơ sở dữ liệu của bạn.

Nếu bạn đang sử dụng psql ứng dụng dòng lệnh, cách đơn giản nhất để tìm thông tin này là sử dụng \d+ lệnh meta được tích hợp trong công cụ.

Ví dụ:để tìm cấu trúc của bảng có tên employee , bạn sẽ nhập cái này:

\d+ employee
                                                                Table "public.employee"   Column    | Type                        | Collation | Nullable | Default                                       | Storage  | Stats target | Description-------------+-----------------------------+-----------+----------+-----------------------------------------------+----------+--------------+------------- employee_id | integer                     |           | not null | nextval('employee_employee_id_seq'::regclass) | plain    |              | first_name  | character varying(45)       |           | not null |                                               | extended |              | last_name   | character varying(45)       |           | not null |                                               | extended |              | last_update | timestamp without time zone |           | not null | now()                                         | plain    |              |Indexes:    "employee_pkey" PRIMARY KEY, btree (employee_id)    "idx_employee_last_name" btree (last_name)Triggers:    last_updated BEFORE UPDATE ON employee FOR EACH ROW EXECUTE FUNCTION last_updated()Access method: heap

Kết quả hiển thị tên cột, kiểu dữ liệu và giá trị mặc định của bảng, trong số những tên khác.

\d+ lệnh meta chỉ khả dụng với psql khách hàng, vì vậy nếu bạn đang sử dụng một ứng dụng khách khác, bạn có thể phải truy vấn thông tin bảng trực tiếp. Bạn có thể nhận được hầu hết các thông tin liên quan với một truy vấn như sau:

SELECT column_name, data_type, column_default, is_nullable, character_maximum_lengthFROM information_schema.columns WHERE table_name ='employee';
 column_name | data_type                   | column_default                                | is_nullable | character_maximum_length-------------+-----------------------------+-----------------------------------------------+-------------+-------------------------- employee_id | integer                     | nextval('employee_employee_id_seq'::regclass) | NO          | first_name  | character varying           |                                               | NO          | 45 last_name   | character varying           |                                               | NO          | 45 last_update | timestamp without time zone | now()                                         | NO          |(4 rows)

Những điều này sẽ cung cấp cho bạn một ý tưởng tốt về cấu trúc của bảng để bạn có thể chèn các giá trị một cách chính xác.



Sử dụng INSERT để thêm bản ghi mới vào bảng

INSERT trong SQL được sử dụng để thêm các hàng dữ liệu vào một bảng hiện có. Khi bạn đã biết cấu trúc của bảng, bạn có thể tạo một lệnh khớp các cột của bảng với các giá trị tương ứng mà bạn muốn chèn cho bản ghi mới.

Cú pháp cơ bản của lệnh trông như sau:

INSERT INTO my_table(column1, column2)VALUES ('value1', 'value2');

Các cột trong danh sách cột tương ứng trực tiếp với các giá trị được cung cấp trong danh sách giá trị.

Theo mặc định, INSERT lệnh trả về ID đối tượng (thường là 0) và số lượng hàng đã được chèn thành công:

INSERT 0 1

Ví dụ:để chèn một nhân viên mới vào employee bảng liệt kê ở trên, chúng ta có thể nhập:

INSERT INTO employee(first_name, last_name)VALUES ('Bob', 'Smith');
INSERT 0 1

Tại đây, chúng tôi cung cấp các giá trị cho first_namelast_name trong khi để các cột khác được điền theo giá trị mặc định của chúng. Nếu bạn truy vấn bảng, bạn có thể thấy rằng bản ghi mới đã được thêm vào:

SELECT * FROM employee;
 employee_id | first_name | last_name |        last_update-------------+------------+-----------+----------------------------           1 | Bob        | Smith     | 2020-08-19 21:07:00.952454(1 row)


Trả lại dữ liệu từ INSERT tuyên bố

Nếu bạn muốn thêm thông tin về dữ liệu đã được thêm vào bảng, bạn có thể bao gồm RETURNING mệnh đề ở cuối tuyên bố của bạn. RETURNING mệnh đề chỉ định các cột để hiển thị các bản ghi vừa được chèn vào.

Ví dụ:để hiển thị tất cả các cột cho các bản ghi vừa được chèn vào, bạn có thể nhập một cái gì đó như sau:

INSERT INTO my_table(column_name, column_name_2)VALUES ('value', 'value2')RETURNING *;
 column_name | column_name_2-------------+--------------- value       | value2(1 row)INSERT 0 1

Sử dụng employee bảng này sẽ giống như sau:

INSERT INTO employee(first_name, last_name)VALUES ('Sue', 'Berns')RETURNING *;
 employee_id | first_name | last_name |       last_update-------------+------------+-----------+--------------------------           2 | Sue        | Berns     | 2020-08-19 21:15:01.7622(1 row)INSERT 0 1

Bạn cũng có thể chọn chỉ trả lại các cột cụ thể từ các phần chèn. Ví dụ:ở đây, chúng tôi chỉ quan tâm đến ID của nhân viên mới:

INSERT INTO employee(first_name, last_name)VALUES ('Delores', 'Muniz')RETURNING employee_id;
 employee_id -------------           3(1 row)INSERT 0 1

Như thường lệ, bạn cũng có thể sử dụng bí danh cột để thay đổi tên cột trong đầu ra:

INSERT INTO employee(first_name, last_name)VALUES ('Simone', 'Kohler')RETURNING employee_id AS "Employee ID";
 Employee ID-------------           4(1 row)INSERT 0 1


Sử dụng INSERT để thêm nhiều hàng cùng một lúc

Chèn các bản ghi một câu lệnh tại một thời điểm tốn nhiều thời gian hơn và kém hiệu quả hơn việc chèn nhiều hàng cùng một lúc. PostgreSQL cho phép bạn chỉ định nhiều hàng để thêm vào cùng một bảng. Mỗi hàng mới được đóng gói trong dấu ngoặc đơn, với mỗi tập hợp các dấu ngoặc đơn được phân tách bằng dấu phẩy.

Cú pháp cơ bản để chèn nhiều bản ghi trông như sau:

INSERT INTO my_table(column_name, column_name_2)VALUES    ('value', 'value2'),    ('value3', 'value4'),    ('value5', 'value6');

Đối với employee bảng mà chúng tôi đang tham chiếu, bạn có thể thêm bốn nhân viên mới trong một tuyên bố duy nhất bằng cách nhập:

INSERT INTO employee(first_name, last_name)VALUES    ('Abigail', 'Spencer'),    ('Tamal', 'Wayne'),    ('Katie', 'Singh'),    ('Felipe', 'Espinosa');
INSERT 0 4


Sử dụng DELETE để xóa các hàng khỏi bảng

DELETE của SQL lệnh được sử dụng để xóa các hàng khỏi bảng, hoạt động như một hành động bổ sung cho INSERT . Để xóa các hàng khỏi bảng, bạn phải xác định các hàng bạn muốn nhắm mục tiêu bằng cách cung cấp tiêu chí đối sánh trong WHERE mệnh đề.

Cú pháp cơ bản giống như sau:

DELETE FROM my_tableWHERE <condition>;

Ví dụ:đối với mọi hàng trong employee của chúng tôi bảng có first_name đặt thành Abigail , chúng ta có thể nhập cái này:

DELETE FROM employeeWHERE first_name = 'Abigail';
DELETE 1

Giá trị trả về ở đây cho biết rằng DELETE lệnh đã được xử lý với một hàng bị xóa.



Trả lại dữ liệu từ DELETE tuyên bố

Như với INSERT , bạn có thể trả lại các hàng bị ảnh hưởng hoặc các cột cụ thể từ các hàng đã xóa bằng cách thêm RETURNING mệnh đề:

DELETE FROM my_tableWHERE <condition>RETURNING *;

Ví dụ:chúng tôi có thể xác minh rằng bản ghi chính xác đã bị xóa bằng cách trả lại tất cả các cột từ employee đã xóa tại đây:

DELETE FROM employeeWHERE last_name = 'Smith'RETURNING *;
 employee_id | first_name | last_name |        last_update-------------+------------+-----------+----------------------------           1 | Bob        | Smith     | 2020-08-19 21:07:00.952454(1 row)DELETE 1


Sử dụng DELETE để xóa nhiều hàng cùng một lúc

Bạn có thể xóa nhiều mục cùng lúc với DELETE bằng cách thao tác các tiêu chí lựa chọn được chỉ định trong WHERE mệnh đề.

Ví dụ:để loại bỏ nhiều hàng theo ID, bạn có thể nhập một cái gì đó như sau:

DELETE FROM employeeWHERE employee_id in (3,4)RETURNING *;
 employee_id | first_name | last_name |        last_update         -------------+------------+-----------+----------------------------           3 | Delores    | Muniz     | 2020-08-19 21:17:06.943608           4 | Simone     | Kohler    | 2020-08-19 21:19:19.298833(2 rows)DELETE 2

Bạn thậm chí có thể bỏ đi WHERE mệnh đề xóa tất cả các hàng khỏi một bảng nhất định:

DELETE FROM employeeRETURNING *;
 employee_id | first_name | last_name |        last_update-------------+------------+-----------+----------------------------           2 | Sue        | Berns     | 2020-08-19 21:15:01.7622           6 | Tamal      | Wayne     | 2020-08-19 22:11:53.408531           7 | Katie      | Singh     | 2020-08-19 22:11:53.408531           8 | Filipe     | Espinosa  | 2020-08-19 22:11:53.408531(4 rows)DELETE 4

Tuy nhiên, hãy lưu ý rằng sử dụng DELETE để làm trống một bảng dữ liệu không hiệu quả bằng TRUNCATE lệnh này có thể xóa dữ liệu mà không cần quét bảng.



Kết luận

Trong bài viết này, chúng tôi đã giới thiệu một số lệnh quan trọng nhất để kiểm soát dữ liệu nào trong các bảng PostgreSQL của bạn. INSERT có thể được sử dụng để thêm dữ liệu mới vào bảng, trong khi DELETE lệnh chỉ định hàng nào nên được loại bỏ. Cả hai lệnh đều có thể trả về các hàng mà chúng ảnh hưởng và có thể hoạt động trên nhiều hàng cùng một lúc.

Hai lệnh này là cơ chế chính được sử dụng để quản lý việc tăng hoặc giảm số lượng bản ghi mà bảng của bạn chứa. Nắm bắt được cú pháp cơ bản của chúng cũng như cách kết hợp chúng với các mệnh đề khác sẽ cho phép bạn điền và làm sạch bảng của mình khi cần thiết.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sqrt () hoạt động trong PostgreSQL

  2. Tích hợp các công cụ để quản lý PostgreSQL trong sản xuất

  3. 3 cách liệt kê tất cả các thủ tục được lưu trữ tham chiếu đến một bảng trong PostgreSQL

  4. Sự phát triển của khả năng chịu lỗi trong PostgreSQL

  5. Làm cách nào để bạn tạo một chuỗi ngẫu nhiên phù hợp với ID phiên trong PostgreSQL?