PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara memasukkan dan menghapus data di PostgreSQL


Pengantar

Menambah dan menghapus record dari tabel adalah beberapa operasi paling umum yang dilakukan database. Menambahkan data melibatkan menentukan nama tabel dan kolom yang ingin Anda tambahkan nilai serta nilai yang ingin Anda masukkan ke dalam setiap bidang. Menghapus catatan melibatkan mengidentifikasi baris atau baris yang benar dan menghapusnya dari tabel.

Dalam panduan ini, kita akan membahas cara menggunakan SQL INSERT dan DELETE perintah dengan PostgreSQL. Ini mencakup sintaks dasar, cara mengembalikan informasi data tentang data yang diproses, dan cara menambahkan atau menghapus beberapa baris dalam satu pernyataan.



Meninjau struktur tabel

Sebelum menggunakan INSERT perintah, Anda harus mengetahui struktur tabel sehingga Anda dapat mengakomodasi persyaratan yang dikenakan oleh kolom tabel, tipe data, dan batasan. Ada beberapa cara berbeda untuk melakukan ini tergantung pada klien database Anda.

Jika Anda menggunakan psql klien baris perintah, cara paling mudah untuk menemukan informasi ini adalah dengan menggunakan \d+ perintah meta yang ada di dalam alat.

Misalnya, untuk menemukan struktur tabel yang disebut employee , ketik ini:

\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

Outputnya antara lain menampilkan nama kolom tabel, tipe data, dan nilai default.

\d+ perintah meta hanya tersedia dengan psql klien, jadi jika Anda menggunakan klien yang berbeda, Anda mungkin harus menanyakan informasi tabel secara langsung. Anda bisa mendapatkan sebagian besar informasi yang relevan dengan kueri seperti ini:

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)

Ini akan memberi Anda gambaran yang baik tentang struktur tabel sehingga Anda dapat memasukkan nilai dengan benar.



Menggunakan INSERT untuk menambahkan record baru ke tabel

SQL INSERT Perintah ini digunakan untuk menambahkan baris data ke tabel yang sudah ada. Setelah mengetahui struktur tabel, Anda dapat membuat perintah yang cocok dengan kolom tabel dengan nilai terkait yang ingin Anda sisipkan untuk record baru.

Sintaks dasar perintah terlihat seperti ini:

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

Kolom dalam daftar kolom berhubungan langsung dengan nilai yang diberikan dalam daftar nilai.

Secara default, INSERT perintah mengembalikan ID objek (biasanya 0) dan jumlah baris yang berhasil dimasukkan:

INSERT 0 1

Sebagai contoh, untuk memasukkan karyawan baru ke dalam employee tabel yang tercantum di atas, kita bisa mengetik:

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

Di sini, kami memberikan nilai untuk first_name dan last_name kolom sambil membiarkan kolom lain diisi dengan nilai defaultnya. Jika Anda menanyakan tabel, Anda dapat melihat bahwa catatan baru telah ditambahkan:

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


Mengembalikan data dari INSERT pernyataan

Jika Anda menginginkan informasi tambahan tentang data yang ditambahkan ke tabel, Anda dapat menyertakan RETURNING klausa di akhir pernyataan Anda. RETURNING klausa menentukan kolom untuk menampilkan catatan yang baru saja dimasukkan.

Misalnya, untuk menampilkan semua kolom untuk catatan yang baru saja dimasukkan, Anda dapat mengetikkan sesuatu seperti ini:

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

Menggunakan employee tabel, ini akan terlihat seperti ini:

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

Anda juga dapat memilih untuk mengembalikan hanya kolom tertentu dari penyisipan. Misalnya, di sini, kami hanya tertarik pada ID karyawan baru:

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

Seperti biasa, Anda juga dapat menggunakan alias kolom untuk mengubah nama kolom di output:

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


Menggunakan INSERT untuk menambahkan beberapa baris sekaligus

Menyisipkan catatan satu pernyataan pada satu waktu lebih memakan waktu dan kurang efisien daripada menyisipkan beberapa baris sekaligus. PostgreSQL memungkinkan Anda menentukan beberapa baris untuk ditambahkan ke tabel yang sama. Setiap baris baru dienkapsulasi dalam tanda kurung, dengan setiap kumpulan tanda kurung dipisahkan dengan koma.

Sintaks dasar untuk penyisipan multi-rekaman terlihat seperti ini:

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

Untuk employee tabel yang telah kami rujuk, Anda dapat menambahkan empat karyawan baru dalam satu pernyataan dengan mengetik:

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


Menggunakan DELETE untuk menghapus baris dari tabel

SQL DELETE perintah digunakan untuk menghapus baris dari tabel, berfungsi sebagai tindakan pelengkap untuk INSERT . Untuk menghapus baris dari tabel, Anda harus mengidentifikasi baris yang ingin Anda targetkan dengan memberikan kriteria kecocokan dalam WHERE klausa.

Sintaks dasarnya terlihat seperti ini:

DELETE FROM my_tableWHERE <condition>;

Misalnya, untuk setiap baris di employee tabel yang memiliki first_name setel ke Abigail , kita bisa mengetik ini:

DELETE FROM employeeWHERE first_name = 'Abigail';
DELETE 1

Nilai kembalian di sini menunjukkan bahwa DELETE perintah diproses dengan satu baris dihapus.



Mengembalikan data dari DELETE pernyataan

Seperti halnya INSERT perintah, Anda dapat mengembalikan baris yang terpengaruh atau kolom tertentu dari baris yang dihapus dengan menambahkan RETURNING klausa:

DELETE FROM my_tableWHERE <condition>RETURNING *;

Misalnya, kami dapat memverifikasi bahwa catatan yang benar dihapus dengan mengembalikan semua kolom dari employee yang dihapus di sini:

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


Menggunakan DELETE untuk menghapus beberapa baris sekaligus

Anda dapat menghapus beberapa item sekaligus dengan DELETE dengan memanipulasi kriteria pemilihan yang ditentukan dalam WHERE klausa.

Misalnya, untuk menghapus beberapa baris berdasarkan ID, Anda dapat mengetikkan sesuatu seperti ini:

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

Anda bahkan dapat mengabaikan WHERE klausa untuk menghapus semua baris dari tabel yang diberikan:

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

Namun, perlu diketahui bahwa menggunakan DELETE mengosongkan tabel data tidak seefisien TRUNCATE perintah, yang dapat menghapus data tanpa memindai tabel.



Kesimpulan

Dalam artikel ini, kami memperkenalkan beberapa perintah terpenting untuk mengontrol data apa yang ada di tabel PostgreSQL Anda. INSERT perintah dapat digunakan untuk menambahkan data baru ke tabel, sedangkan perintah DELETE perintah menentukan baris mana yang harus dihapus. Kedua perintah tersebut dapat mengembalikan baris yang terpengaruh dan dapat beroperasi pada beberapa baris sekaligus.

Kedua perintah ini adalah mekanisme utama yang digunakan untuk mengelola penambahan atau pengurangan jumlah record yang ada di tabel Anda. Menguasai sintaks dasar mereka serta cara mereka dapat dikombinasikan dengan klausa lain akan memungkinkan Anda untuk mengisi dan membersihkan tabel Anda seperlunya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih beberapa nilai max() menggunakan satu pernyataan SQL

  2. Cara Memperbarui Array di PostgreSQL

  3. Cara mengatur ulang urutan ID pada tabel PostgreSQL

  4. Perbaiki "ERROR:setiap kueri INTERSECT harus memiliki jumlah kolom yang sama" di PostgreSQL

  5. Normalisasikan subskrip larik untuk larik 1 dimensi sehingga dimulai dengan 1