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.